【问题标题】:Adding bash binary to a "scratch" docker image将 bash 二进制文件添加到“临时”泊坞窗图像
【发布时间】:2019-08-13 13:40:40
【问题描述】:

我正在尝试将 bash 添加到“FROM Scratch”泊坞窗图像中。

我从 docker hub (https://hub.docker.com/_/bash) 的官方 bash docker 映像中复制了一个 bash 二进制文件

docker run -d bash:latest sleep 100
docker cp "$bash_container_id":/usr/local/bin/bash .

我的 Dockerfile 如下

FROM jaegertracing/all-in-one:latest
COPY bin/bash /bin
ENV PATH "$PATH:bin/bash"
RUN ["bash"]

在构建时会导致

Sending build context to Docker daemon  5.213MB
Step 1/4 : FROM jaegertracing/all-in-one:latest
latest: Pulling from jaegertracing/all-in-one
023a144cdcf7: Already exists 
d247ed88ca7d: Already exists 
dc4682d67823: Already exists 
Status: Downloaded newer image for jaegertracing/all-in-one:latest
 ---> b64ba73d1fa4
Step 2/4 : COPY bin/bash /bin
 ---> b6e8ae824d24
Step 3/4 : ENV PATH "$PATH:bin/bash"
 ---> Running in eda2042dff57
Removing intermediate container eda2042dff57
 ---> f1288ded6fcf
Step 4/4 : RUN ["bash"]
 ---> Running in 616c80b0cb8c
OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"bash\": executable file not found in $PATH": unknown

jaegertracing/all-in-one 图像使用“Scratch”基本图像,其中不包含任何内容(无 sh、无 bash 等) 出于调试原因,我正在尝试向其中添加 bash。

有什么建议吗?提前致谢

【问题讨论】:

  • COPY bin /bin -> 这不会创建一个/bin/bin/bash吗?
  • @gogaz 抱歉,我已将其更正为 COPY bin/bash /bin,但结果相同

标签: bash docker jaeger


【解决方案1】:

您没有正确配置您的$PATH。路径是一系列目录,用于在其中查找可执行文件,而不是可执行文件本身的路径。此外,由于您将bin/bash 移动到/bin/bash,因此您不必担心将bin/bash 添加到路径中。但无论哪种方式,您想要的都是

  1. ENV PATH "$PATH:bin"
  2. ENV PATH "$PATH:/bin"

我相信您想要的是选项 #2,因为它是您将 bash 复制到的位置。

【讨论】:

  • 感谢参与。我尝试了Step 3/4 : ENV PATH "$PATH:bin"Step 3/4 : ENV PATH "$PATH:/bin",但结果是相同的OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"bash\": executable file not found in $PATH": unknown
猜你喜欢
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多