首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker:防止多个码头图像覆盖/usr/local/bin?

Docker:防止多个码头图像覆盖/usr/local/bin?
EN

Stack Overflow用户
提问于 2018-02-06 23:10:58
回答 1查看 280关注 0票数 1

Dockerfile 1

代码语言:javascript
复制
FROM ubuntu
FROM docker

CMD ["ls", "/usr/local/bin"]

然后,

代码语言:javascript
复制
docker build -t test .
docker run test

输出:

代码语言:javascript
复制
docker
docker-containerd
docker-containerd-ctr
docker-containerd-shim
docker-entrypoint.sh
docker-init
docker-proxy
docker-runc
dockerd
modprobe

添加python图像如下所示

Dockerfile 2

代码语言:javascript
复制
FROM ubuntu
FROM docker
FROM python:2.7-slim

CMD ["ls", "/usr/local/bin"]

然后,

代码语言:javascript
复制
docker build -t test .
docker run test

输出

代码语言:javascript
复制
2to3
easy_install
easy_install-2.7
idle
pip
pip2
pip2.7
pydoc
python
python-config
python2
python2-config
python2.7
python2.7-config
smtpd.py
wheel

在第二个测试映像中,docker二进制文件到哪里去了?

如何同时安装python和docker,即/usr/local/bin中的python和docker可执行文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-06 23:26:09

看起来你使用的是码头多阶段构建。这意味着您的结果映像将只包含最后一个FROM。出于同样的原因,在ubuntu图像层中没有docker内容。

您需要从上一层COPY二进制文件:

代码语言:javascript
复制
FROM ubuntu
FROM docker as docker
FROM python:2.7-slim
COPY --from=docker /usr/local/bin/* /usr/local/bin/
CMD ["ls", "/usr/local/bin"]

请注意,还可以按索引引用前面的图像,as是可选的:

代码语言:javascript
复制
COPY --from=1 /usr/local/bin/* /usr/local/bin/

Dockerfile副本引用这里

多阶段构建docs 这里

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

https://stackoverflow.com/questions/48653457

复制
相关文章

相似问题

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