gpt4 book ai didi

Docker:防止多个 docker 镜像覆盖/usr/local/bin?

转载 作者:行者123 更新时间:2023-12-02 18:53:50 26 4
gpt4 key购买 nike

Dockerfile 一

FROM ubuntu
FROM docker

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

然后,
docker build -t test .
docker run test

输出:
docker
docker-containerd
docker-containerd-ctr
docker-containerd-shim
docker-entrypoint.sh
docker-init
docker-proxy
docker-runc
dockerd
modprobe

添加python图像如下

Dockerfile 二
FROM ubuntu
FROM docker
FROM python:2.7-slim

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

然后,
docker build -t test .
docker run test

输出
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 可执行文件?

最佳答案

看起来您正在使用 docker 多阶段构建。这意味着您生成的图像将仅包含最后一个 FROM向前。出于同样的原因,您没有 ubuntu docker 中的内容图像层。

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

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 引用之前的图像是可选的:
COPY --from=1 /usr/local/bin/* /usr/local/bin/

Dockerfile 复制引用 here

多阶段构建文档 here

关于Docker:防止多个 docker 镜像覆盖/usr/local/bin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48653457/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com