首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >向Docker容器路径添加自定义二进制文件

向Docker容器路径添加自定义二进制文件
EN

Stack Overflow用户
提问于 2017-12-14 17:17:04
回答 1查看 9.4K关注 0票数 1

我想在我的一个容器中添加一个自定义二进制可执行文件。我在我的机器上做的,我想把它加进去。首先,我考虑将某些目录挂载为/tmp/foo,然后将其复制到/usr/bin/。不是很好,但应该能行。为此,我在docker-compose.yml中定义了以下卷安装

代码语言:javascript
代码运行次数:0
运行
复制
volumes:
  - ./var/bin/:/tmp/bin/

Dockerfile中的以下命令

代码语言:javascript
代码运行次数:0
运行
复制
RUN ls /tmp/bin

RUN cp /tmp/bin/wkhtmltoimage /usr/local/bin/ && cp /tmp/bin/wkhtmltopdf /usr/local/bin/

如您所见,我已经添加了列表目录,以检查是否存在任何内容,并且我得到了

代码语言:javascript
代码运行次数:0
运行
复制
ls: cannot access /tmp/bin: No such file or directory
ERROR: Service 'web' failed to build: The command '/bin/sh -c ls /tmp/bin' returned a non-zero code: 2

现在,这里有两个问题:

  1. 为什么这个目录在容器的命令行中不可见?其他坐骑也可用..。
  2. 我怎样才能“适当”达到这个目标呢?这样,在映像构建期间,二进制文件就会被复制/设置一次,而不需要在每个容器上运行映射?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-14 18:17:30

为什么这个目录在容器的命令行中不可见?其他坐骑也可用..。

因为在构建容器时没有安装绑定挂载卷。您正在使用docker-compose.yml在运行时挂载卷,类似于

代码语言:javascript
代码运行次数:0
运行
复制
docker run -v $(pwd)/var/tmp:/tmp/bin myimage/myimage

但是您正在尝试在构建过程中访问/tmp/bin,而不是在docker装载卷之前。

我怎样才能“适当”达到这个目标呢?这样,在映像构建期间,二进制文件就会被复制/设置一次,而不需要在每个容器上运行映射?

将从Dockerfile提供的两个运行命令替换为一对ADD命令:

代码语言:javascript
代码运行次数:0
运行
复制
ADD ./var/bin/wkhtmltopdf /usr/local/bin
ADD ./var/bin/wkhtmltoimage /usr/local/bin

这将从您的主机获取文件,并将它们直接放在图像中。这是做你想做的事的正确方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47818862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档