Dav*_*e C 10 docker dockerfile docker-build
我有几个不属于我的基础docker图像(所以我不能修改它们).但是,我正在创建新的图像,并安装了其他内容.
我无法弄清楚的是如何告诉dockerfile复制基本图像的CMD(或ENTRYPOINT).像这样的东西:
FROM other:latest
RUN my-extra-install
CMD <use-the-CMD-from-base-image>
Run Code Online (Sandbox Code Playgroud)
我不认为CMD命令有任何直接的语法来做我想要的.我想知道是否有解决方法.
Vor*_*Vor 19
如果您在新的Dockerfile中将其留空,它将继承基础映像中的那个.
例如:
基础
FROM ubuntu
CMD ["echo", "AAA"]
Run Code Online (Sandbox Code Playgroud)
layer1的
FROM base
Run Code Online (Sandbox Code Playgroud)
如果您构建上面的图像并运行,layer1您将获得以下内容:
$ sudo docker run -it layer1
AAA
Run Code Online (Sandbox Code Playgroud)
小智 5
@Vor是对的。但万一
# Dockerfile
FROM nginx:stable-alpine
ENTRYPOINT ["/docker-entrypoint.sh"]
COPY ./docker-entrypoint.sh /
Run Code Online (Sandbox Code Playgroud)
和
# docker-entrypoint.sh
#!/usr/bin/env sh
set -e
exec "$@"
Run Code Online (Sandbox Code Playgroud)
默认的 CMDnginx:stable-alpine不会在exec "$@".
CMD你必须在 Dockerfile 中自己编写默认的 nginx-alpine (!)
# Dockerfile
FROM nginx:stable-alpine
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["nginx", "-g", "daemon off;"]
COPY ./docker-entrypoint.sh /
Run Code Online (Sandbox Code Playgroud)
或者更改你的 docker-entrypoint.sh
# docker-entrypoint.sh
#!/usr/bin/env sh
set -e
exec nginx -g "daemon off;"
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你
| 归档时间: |
|
| 查看次数: |
6100 次 |
| 最近记录: |