Dockerfile定制镜像概要

概要说明

在Docker仓库配置及镜像、容器简单操作篇提到过除了docker commit命令可以定制镜像外,实际使用过程中通过Dockerfile脚本定制更为普遍。

Dockerfile就是包含了一条条特定指令的文本文件,每一条指令构建一层:当通过Dockerfile动态定制时每一条命令都会新建一层,在该层上执行指令内容,执行结束后commit这一层的修改已构成新的镜像。


镜像构建

写好Dockerfile之后,通过以下命令执行文件以实现动态构建:

# docker build [选项] <上下文路径/URL/.>    eg. docker build -t automation:v3 .        //动态构建automation:v3镜像


镜像构建上下文说明

要理解镜像构建上下文需首先理解docker build的工作原理:Docker实际上是C/S设计架构,docker build命令构建镜像其实并非在本地构建,而是在服务端,那么如何才能让服务端获得本地文件?这就引入了上下文概念。当构建的时候,用户会指定构建镜像的上下文的路径(目录),docker build命令执行时会将路径(目录)下的所有内容打包,然后上传给服务端,这样服务端收到上下文包后,展开就会获得构建镜像所需的一切文件。

例如: docker build  -t image:ver  folder/test/

上述命令将会将当前目录下的folder目录下的test目录下所有内容打包(仅打包test目录下的,不包含test目录)然后发送给服务端,服务端收到并解压。如果在Dockerfile中写:

COPY ./package.json /root/

上面命令意思是复制上下文目录(上下文目录的起点就是服务端解压后的当前目录,该目录的内容即与本地test目录内容相同)中的package.json文件到容器的/root/目录下。

基于上述原因,因此建议将Dockerfile文件放置与项目的根目录,以保证项目的代码均可以被dockerfile命令所使用。另外,当前目录(运行docker build命令时所处的目录)可以不是Dockerfile文件所放置的目录,这样运行docker build命令时可以加 -f 参数来指定Dockerfile文件,如docker build -f ../Dockerfile -t automation:v3 folder/test/ 。


Dockerfile命令详解

FROM


猜你喜欢

转载自blog.51cto.com/taoismli/2377152
今日推荐