DockerFile 制作镜像
多阶段构建会生成编译环境镜像,也会将之前的同名镜像变为:,清理此类镜像可执行以下命令:
点击查看代码
docker rmi $(docker images --filter dangling=true -q) 如果有容器关联需要删除docker rm $(docker ps -a -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
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!