Dockerfile

上文中向读者介绍了简单的创建本地镜像的方式,但是commit方式存在一些问题,比如不够透明化,无法重复,体积较大,为了解决这些问题,可以考虑使用Dockerfile。
Dockerfile就是一个普通的文本文件,其内包含了一条条的指令,每一条指令都会构建一层。先来看一个简单的
例子。
首先在一个空白目录下创建一个名为Dockerfile的文件,内容如下:

命令解释:

  1. FROM nginx表示该镜像的构建,以已有的nginx镜像为基础,在该镜像的基础上构建。
  2. MAINTAINER指令用来声明创建镜像的作者信息以及邮箱信息,这个命令不是必须的。
  3. RUN指令用来修改镜像,算是使用比较频繁的一个指令了,该指令可以用来安装程序、安装库以及配置应用程序等,一个RUN指令执行会在当前镜像的基础上创建一个新的镜像层,接下来的指令将在这个新的镜像层上执行,RUN语句有两种不同的形式:shell格式和exec格式。本案例采用的shell格式,shell格式就像linux命令一样,exec格式则是一个JSON数组,将命令放到数组中即可。在使用RUN命令时,适当的时候可以将多个RUN命令合并成一个,这样可以避免在创建镜像时创建过多的层。
  4. COPY语句则是将镜像上下文中的hello.html文件拷贝到镜像中。文件创建完成后,执行如下命令进行构建:

    命令解释:
  5. -t参数用来指定镜像的命名空间,仓库名以及TAG等信息。
  6. 最后面的.是指镜像构建上下文。

小贴士:
Docker采用了C/S架构,分为Docker客户端(Docker可执行程序)与Docker守护进程,Docker客户端通过命令行和API的形式与Docker守护进程进行通信,Docker守护进程则提供Docker服务。因此,我们操作的各种docker命令实际上都是由docker客户端发送到docker守护进程上去执行。我们在构建一个镜像时,不可避免的需要将一些本地文件拷贝到镜像中,例如上文提到的COPY命令,用户在构建镜像时,需要指定构建镜像的上下文路径(即前文的.),docker build在获得这个路径之后,会将路径下的所有内容打包,然后上传给Docker引擎。

镜像构建成功后,可以通过docker images命令查看,如下:

然后创建容器并启动,就可以看到之前的内容都生效了

posted @ 2020-08-18 14:52  柒丶月  阅读(80)  评论(0)    收藏  举报