【问题标题】:Trying to figure out how to get this executable containerised for docker试图弄清楚如何为 docker 容器化这个可执行文件
【发布时间】:2020-09-17 19:50:30
【问题描述】:

我在尝试创建一个 docker 映像以公开适用于 linux 的 Cloudflare's Tunnel 可执行文件时遇到了困难。到目前为止,我的 docker 镜像已经到了这个阶段(图片​​来自https://github.com/jakejarvis/docker-cloudflare-argo/blob/master/Dockerfile

FROM ubuntu:18.04

LABEL maintainer="Jake Jarvis <jake@jarv.is>"

RUN apt-get update \
  && apt-get install -y --no-install-recommends wget ca-certificates \
  && rm -rf /var/lib/apt/lists/*

RUN wget -O cloudflared.tgz https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-amd64.tgz \
  && tar -xzvf cloudflared.tgz \
  && rm cloudflared.tgz \
  && chmod +x cloudflared

ENTRYPOINT ["./cloudflared"]

official documentation for their kubernetes setup 之后,我通过以下方式将它作为sidecar 添加到我的部署中:(这里cloudflare-argo:5 是从上面的dockerfile 构建的图像)

    - name: cloudflare-argo
      image: my-registry/cloudflare-argo:5
      imagePullPolicy: Always
      command: ["cloudflared", "tunnel"]
      args:
        - --url=http://localhost:8080
        - --hostname=my-website
        - --origincert=/etc/cloudflared/cert.pem
        - --no-autoupdate
      volumeMounts:
        - mountPath: /etc/cloudflared
          name: cloudflare-argo-secret
          readOnly: true
      resources:
        requests:
          cpu: "50m"
        limits:
          cpu: "200m"
  volumes:
    - name: cloudflare-argo-secret
      secret:
        secretName: my-website.com

但是,一旦我部署后,我的 pod 上出现 CrashLoopBackOff 错误,并出现以下 kubectl describe 输出

创建容器 cloudflare-argo

错误:无法启动容器“cloudflare-argo”:来自守护程序的错误响应:OCI 运行时创建失败:container_linux.go:349:启动容器进程导致“exec:\”cloudflared\”:$ 中找不到可执行文件路径":未知

【问题讨论】:

    标签: docker kubernetes cloudflare


    【解决方案1】:

    在 dockerfile 中它是 ./cloudflared,所以应该是:

          command:
            - ./cloudflared
            - tunnel
            - --url=http://localhost:8080
            - --hostname=my-website
            - --origincert=/etc/cloudflared/cert.pem
            - --no-autoupdate
    

    (也没有理由同时使用commandargs,只需选择一个,如果您放弃第一项,则使用args)。

    【讨论】:

      【解决方案2】:

      在您的 Dockerfile 中,将 cloudflared 二进制文件移动到 /usr/local/bin 文件夹,而不是从当前的 WORKDIR 运行它。

        && chmod +x cloudflared \
        && mv cloudflared /usr/local/bin
      
      ENTRYPOINT ["cloudflared"]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-27
        • 1970-01-01
        • 2012-10-05
        • 1970-01-01
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        • 2020-09-15
        相关资源
        最近更新 更多