Dockerfile最佳实践(一)

  

在“码头工人部署您的第一个应用程序”一篇中,我们已经使用了Dockerfile来构建镜像,这一篇将补充Dockerfile经常使用指令。

 Dockerfile最佳实践(一)


码头工人可以通过读取Dockerfile中的指令来生成镜像.Dockerfile是一个文本文件,用户对镜像操作的所有指令都可以写在Dockerfile文件中,最后使用码头工人建造来构建镜像。

在“码头工人部署您的第一个应用程序”中,我们使用了命令“码头工人形象构建- t公告栏中:1.0。”,码头工人形象构建命令通过读取Dockerfile和指定的上下文来构建镜像,命令结尾有一个“。”点,这个点就是构建镜像的上下文。

上下文是递归进行处理的,因此,即包括该上下文下的所有子目录。

镜像的构建是由码头工人守护进程(码头工人守护进程)完成的,而不是由CLI。构建过程首先要做的是将整个上下文(递归地)发送给守护进程。在大多数情况下,最好从一个空目录作为上下文开始,并将Dockerfile保存在该目录中。只添加生成Dockerfile所需的文件。

注意:千万不要使用“/备魑舷挛?例如如下命令,因为它将会将宿主机"根目录下所有文件传输到码头工人的守护进程,可以在开发环境尝试执行如下命令进行验证。

#码头工人形象构建/

若要在构建的上下文中将配置文件或包构建到镜像中,可在Dockerfile中使用复制指令。若要提高构建性能,可通过在上下文目录中添加。dockerignore文件来排除文件和目录。通常Dockerfile,位于上下文的根目录中,在码头工人建造中使用- f标志可以指定文件系统中任何地方的码头工人文件,使用- t标志可以指定构建镜像的仓库以及标签标签,例如:

#猫在/tmp/centos & lt; & lt; EOF   centos:最新   维护者firefly@demo.com   EOF   #码头工人形象构建- f/tmp/centos - t centos: v0.1。   

#码头工人图像库图像标签ID创建大小

centos v0.1 7 eab7b4cc6ea 38秒前220 mb

您也可以指定构建镜像的多个仓库以及标签,例如:

#码头工人形象构建- f/tmp/centos - t t01/centos: v0.1 - t t02/centos: v0.2。   

#码头工人图像库图像标签ID创建大小

centos v0.1 7 eab7b4cc6ea 3分钟前220 mb

t01/centos v0.1 7 eab7b4cc6ea 3分钟前220 mb

t02/centos v0.2 7 eab7b4cc6ea 3分钟前220 mb

注意:当前所指的仓库和标记均位于当前宿主机,在其他宿主机上,您是无法获取这些镜像的(除非您推送到您的码头工人中心账户下或其他方式),后续将会讲到码头工人的私有仓库注册表或Harobor来远程分享我们做好的镜像。

使用Dockerfile构建镜像步骤总结如下:

1,为镜像创建一个目录,如bulletin-board-app

2,进入bulletin-board-app目录,在该目录下创建并完成Dockerfile文件编写

3,镜像所需要的文件或代码都拷贝到bulletin-board-app目录

4,如果bulletin-board-app目录下有文件是构建时不需要的,则可以创建并编写。dockerignore文件来忽略不需要的文件

5,在bulletin-board-app目录下执行码头工人形象构建命令,并指定上下文位置为”。”,如命令“码头工人形象构建- t测试/公告栏中。”

码头工人守护进程在执行Dockerfile中的指令之前,会先对Dockerfile执行初步验证,如果语法不正确,则返回相关错误,如果是参数错误,例如目标目录不存在则不会检查,直到执行到该指令时抛出错误。

码头工人守护进程逐个执行Dockerfile中的指令,必要时将每条指令的结果提交给新镜像,最后输出新镜像的ID.Docker守护进程将自动清理您发送的上下文。

注意,每个指令都是独立运行的,因此上一指命的执行不会对下一个指令产生任何影响。

只要有可能,码头工人将会重用中间镜像(缓存),以显著加快码头工人的构建过程,并且在控制台会输出使用缓存消息。

演示示例:

#猫祝辞Dockerfile & lt; & lt; EOF   从高山:3.2   维护者firefly@demo.com   运行的apk更新,,apk添加socat,,rm - r/var/cache/CMD env | grep _TCP=| (sed ' s/. * _PORT_ \ ([0 - 9] * \) _TCP=tcp: \/\/\ (. * \): \ (. * \)/socat - t 100000000 TCP4-LISTEN: \ 1,叉,reuseaddr TCP4: \ 2: \ 3 \,/',,回声等)| sh   EOF

第一次构建

#码头工人建造- t演示/演示:v0.1。

发送构建上下文码头工人守护进程2.048 kb

1/4步:从高山:3.2

Dockerfile最佳实践(一)