Dockerfile详解

Docker instructions

  • FROM

  • FROM指令是最重要的一个且必须为Dockerfile文件开篇的第一个非注释行,用于为映像文件构建过程指  定基准镜像,后续的指令运行与此基准镜像所提供的运行环境。

  • 实践中,基准镜像可以是任何可用镜像文件,默认情况下,docker build会在docker主机上查找指定的  镜像文件,在其不存在时,则会从Docker Hub Registry上拉取所需要的镜像文件

  • 如果找不到指定的镜像文件,Docker build会返回一个错误信息

    • Syntax

      • FROM <repository>[:<tag>]或

      • FROM <repository>@<digest>

        • <repository>:指定作为base image的名称

        • <tag>: base image的标签,为可选项,默认为latest;

 

  • MAINTAINER(depreacred) #较新版本中可以使用LABEL 采用K:V格式

    •  用于让Dockerfile制作者提供本人的详细信息

    •  Docker并不限制MAINTAINER指令可出现的位置,但是推荐将其放置于FROM指令之后

      • Syntax

        • MAINTAINER <authtor>

          • <authtor>可以是任何文本信息,约定俗成使用作者笔字及邮箱
  • COPY
    • 用于从Docker主机复制文件至创建的新映像文件
    • Syxtax
      • COPY <scr>...<dest>或
      • COPY["<src>"..."<dest>"]
        • <src>:要复制的源文件或目录,支持使用通配符;
        • <dest>:目标路径,即正在创建的image的文件系统路径;建议为<dest>使用绝对路径,否则,COPY指定则为WORKDIR为其起始路径;
      • 注意:在路径中有空白字符时,通常使用第二种格式  
    • 文件复制准则
      • <src>必须是build上下文中的路径,不能是其父目录中的文件;
      • 如果<src>是目录,则其内部文件或子目录会被递归复制,但<src>目录自身不会被复制;
      • 如果指定了多个<src>,或在<src>中使用了通配符,则<dest>必须是一个目录,且必须以 / 结尾;
      • 如果<desc>不存在,会被自动创建,这包括其父目录路径。

     接下来创建一个dockerfile工作目录,开始写一个简单的dockerfile

    

[root@node1 ~]# mkdir images 
[root@node1 ~]# cd images/
[root@node1 images]# vim Dockerfile
        # Description: test image
        FROM busybox:latest
        MAINTAINER "SANDIAN <sandian@node1.com>"
        #LABEL maintainer = "SANDIAN <sandian@node1.com>"
        COPY index.html /data/web/html/
#创建一个index.html文件
[root@node1 images]# vim index.html
            <h1>Dockerfile for node1<h1>
#接下来我们就可以构建镜像

 [root@node1 images]# docker build -t httpd:v0-1 ./

 #验证

  

[root@node1 images]# docker run --name web1 --rm httpd:v0-1 cat /data/web/html/index.html
  <h1>Dockerfile for node1<h1>


  

 

 

 

    

 

posted on 2018-10-15 12:08  改变就是好事  阅读(796)  评论(0编辑  收藏  举报

导航