docker commit 语法格式为:
docker commit [选项] <容器id或容器名> [<仓库名>[:<标签>]]
可以通过docker commit命令将容器的存储层保存下来成为镜像,也即将通过原容器构建新的镜像。
docker commit 会导致大量与实际目的无关的文件被添加进镜像中,导致镜像极为臃肿。此外,生成的镜像前容器中执行的命令是未知的,无法得知其具体情况,被称为黑箱镜像,难以进行后续维护。
与makefile类似,可以通过执行Dockerfile中的指令,来构建目标镜像,由于Dockerfile中有详细的指令信息,可以通过查看指令来了解镜像的生成过程,便于维护和修改。
// 第一行必须为 “FROM <镜像名>”,指定基础镜像。也可以为“FROM scratch”
//scratch 为虚拟概念,表示空白的镜像,“FROM scratch”意为不以任何镜像为基础,接下来的指令作为镜像第一层存在
FROM 镜像名
//Dockerfile指令
...
在Dockerfile中,可以通过RUN指令来执行命令行命令
RUN指令有两种格式:
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
注意事项:Dockerfile中的每一个指令都会建立一层,在其上执行命令,再commit修改,构成新的镜像,而镜像是有层数限制的,因此应尽量将目的相同的命令放在同一层执行。
示例:
FROM debian:stretch
RUN set -x; buildDeps='gcc libc6-dev make wget' \
&& apt-get update \
&& apt-get install -y $buildDeps \
&& apt-get purge -y --auto-remove $buildDeps
值得注意的是,需要在RUN指令的最后进行清理工作,删除不必要的软件,清理apt缓存文件等,避免导致镜像过于臃肿。
可以通过docker build 命令进行镜像构建。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。