docker入门(4)

147 阅读2分钟

本文已参加 [新人创作礼] 活动,一起开启掘金创作之旅。 本篇继续介绍dockerfile常用指令。

指令详解

(7)ARG
      构建镜像时指定的参数,在构建镜像时可以外部传参。
      ARG <参数名>[=<默认值>]
      构建容器时:build -arg=参数名=参数值
    
(8)VOLUME
      定义匿名的数据卷,防止你在启动容器时没有挂载数据卷,会自动挂载到数据卷中,
      防止容器内部的重要数据丢失。
      1. VOLUME ["路径一","路径二"]
      2. VOLUME <路径>
   
(9) EXPOSE
       映射内外部端口。
       EXPOSE [端口一]
       build 使用 -P
       
 (10) WORKDIR
       指定工作目录,指定的目录必须时提前创建好的。
       WORKDIR <工作目录路径>
    
 (11) USER
       用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户
        (用户和用户组必须提前已经存在)。
       USER <用户名>[:<用户组>] 
       
 (12) HEALTHCHECK
       用于指定某个程序或者指令来监控 docker 容器服务的运行状态。
      
        HEALTHCHECK [选项] CMD <命令>:设置检查容器健康状况的命令
        HEALTHCHECK NONE:如果基础镜像有健康检查指令,使用这行可以屏蔽掉其健康检查指令
        HEALTHCHECK [选项] CMD <命令> : 这边 CMD 后面跟随的命令使用,可以参考 CMD 的用法。
        
 (13) ONBUILD
        用于延迟构建命令的执行。简单的说,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次构
        建镜像的过程中不会执行(假设镜像为 test-build)。当有新的 Dockerfile 使用了之前构建
        的镜像 FROM test-build ,这时执行新镜像的 Dockerfile 构建时候,会执行 test-build
        的 Dockerfile 里的 ONBUILD 指定的命令。
        
        ONBUILD <其它指令>
        
(14)LABEL
        LABEL 指令用来给镜像添加一些元数据(metadata),以键值对的形式,语法格式如下:
        LABEL <key>=<value> <key>=<value> <key>=<value>
        
     

根据刚才的常用指令,创建简单的dockerfile

## 构建centos 镜像
    Dockerfile

    FROM centos:7
    MAINTAINER guaner <guaner@gmail.com>
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    RUN yum -y install vim   net-tools
    EXPOSE 80
    CMD /bin/bash
    
    
 逐行解释该Dockerfile文件的指令:

    FROM centos:7 该image文件继承官方的centos7
    ENV MYPATH /usr/local:设置环境变量MYPATH
    WORKDIR $MYPATH:直接使用上面设置的环境变量,指定/usr/local为工作目录
    RUN yum -y install vim && net-tools:在/usr/local目录下,
        运行yum -y install vim和yum -y install net-tools命令安装工具,
        注意安装后的所有依赖和工具都会打包到image文件中
    EXPOSE 80:将容器80端口暴露出来,允许外部连接这个端口
    CMD:指定容器启动的时候运行命令
    
  
  使用build指定dockerfile生成我们的镜像
      docker build -t centostest:0.1
      
      .....