DockerFile 制作镜像

多阶段构建会生成编译环境镜像,也会将之前的同名镜像变为:,清理此类镜像可执行以下命令:

点击查看代码
docker rmi $(docker images --filter dangling=true -q) 如果有容器关联需要删除docker   rm $(docker ps -a -q )] 
- docker rmi $(docker images --filter dangling=true -q)

第一组是复制文件的两个指令,COPY 和 ADD。COPY 可以从本地复制文件或者目录到镜像中,而 ADD 则是 COPY 的超集,除了可以复制文件或者目录外,还可以远程下载文件并解压压缩包。由于 ADD 的功能比较复杂,我推荐你优先使用 COPY 指令。需要从远程下载文件时,可以使用 RUN 把所有需要下载的文件以及清理步骤放到一个指令中。

第二组是设置容器命令的两个指令,ENTRYPOINT 和 CMD。这两个指令都支持 exec 和 shell 两种模式:

exec 模式是把应用程序进程作为容器的 1 号进程。比如,ENTRYPOINT ["top", "-b"] 就是以 top 命令作为 1 号进程。
shell 模式则是通过 SHELL命令启动应用。比如,ENTRYPOINT top -b 就是以 /bin/sh -c top -b 启动容器,即 /bin/sh 是容器的 1 号进程。使用 SHELL 作为 1 号进程时,很容易导致应用无法在容器停止时优雅地关闭,所以一般需要你结合 exec ,将应用进程取代 SHELL 作为 1 号进程,比如 ENTRYPOINT exec top -b。
在 ENTRYPOINT 和 CMD 组合使用时,还有一点需要你注意,即当 ENTRYPOINT 使用 shell 模式时,CMD 设置的任何选项都会被忽略。所以我推荐你在设置 ENTRYPOINT 时,总是使用 exec 模式。

dockerignore 文件编写方法

.dockerignore 文件的写法和 .gitignore 类似,支持正则和通配符,具体规则如下:
1、每行为一个条目;
2、空行被忽略;
3、构建上下文路径为所有文件的根路径;

文件匹配规则具体语法如下:

符号 作用
# 注释
* 匹配0或多个非/的字符
? 匹配1个非/的字符
** 0个或多个目录
! 除...外,需结合上下文语义

作者:yjtuuige
链接:https://www.jianshu.com/p/aa9d0d8085db
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


https://www.cnblogs.com/cloudfloating/p/11788000.html

posted @ 2022-03-25 22:40  donghongchao  阅读(249)  评论(0编辑  收藏  举报