• 08Dockerfile基本使用


    使用Dockerfile创建镜像

    Dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile赖快速创建自定义的镜像.
    Dockerfile由一行行命令组成,#开头为注释.
    

    1:Dockerfile基础内容

    1:每条保留字指令都必须为大写字母且后面要跟随至少一个参数
    2:指令从上到下,顺序执行
    3:#表示注释
    4:每条RUN指令都会创建一个新的镜像层,并且提交
    

    2:Dockerfile基本结构和指令

    Dockerfile分为四部分:基础镜像信息维护者信息镜像操作指令容器启动时执行指令

    指令 解释
    FROM 指明当前镜像是基于哪个镜像
    MAINTAINER 镜像维护者姓名和邮箱地址
    ENV 设置环境变量
    WORKDIR 指定在创建容器后,终端默认登录进来的工作目录
    ADD 将宿主机目录下的文件拷贝进镜像,并自动处理URL和解压缩tar包
    COPY 拷贝文件和目录到镜像中
    VOLUME 容器数据卷
    RUN 镜像构建时运行的命令,每条RUN指令都会创建一个新的镜像层,并且提交
    EXPOSE 容器对外暴露的端口
    CMD 指定一个容器启动时候要运行的命令,有多个CMD时,会覆盖,只有最有一个会生效;CMD会被docker run 后面的命令覆盖
    ENTRYPOINT 指定一个容器启动时候要运行的命令,但是不会覆盖,会追加
    ONBUILD 此镜像被作为父镜像是,会触发的命令

    3:示例:自定义镜像

    1:centos基本镜像没有vim,ifconfig工具
    [root@docker ~]# docker run -it centos /bin/bash
    [root@8414a93e2eba /]# vim test.txt
    bash: vim: command not found
    [root@8414a93e2eba /]# ifconfig
    bash: ifconfig: command not found
    [root@8414a93e2eba /]# 
    
    2:编写Dockerfile文件
    [root@docker ~]# vim Dockerfile
    FROM centos
    MAINTAINER  vargant007<923737581@qq.com>
    
    #设置变量
    ENV MYPATH /usr/local
    
    #设置工作目录
    WORKDIR  $MYPATH
    
    RUN yum -y install vim
    RUN yum -y install net-tools
    
    EXPOSE 8000
    
    CMD echo $MYPATH
    CMD echo "success ------OK"
    CMD /bin/bash
    
    
    3:构建自定义镜像
    格式:docker build -f  Dockerfile文件路径  -t 新镜像名字:标签  .
    #注意有一个.指定镜像构建过程中的上下文环境的目录
    
    [root@docker ~]# docker build -f /root/Dockerfile -t mycentos:1.3  .  
    Sending build context to Docker daemon  3.976MB
    Step 1/10 : FROM centos
     ---> 0f3e07c0138f
    Step 2/10 : MAINTAINER  vargant007<923737581@qq.com>
     ---> Running in b399d6eb2708
    Removing intermediate container b399d6eb2708
     ---> 99b5cde412f4
    Step 3/10 : ENV MYPATH /usr/local
     ---> Running in e2382858994d
    Removing intermediate container e2382858994d
     ---> 031eb583bc70
    Step 4/10 : WORKDIR  $MYPATH
     ---> Running in 9fc0ae050026
    Removing intermediate container 9fc0ae050026
     ---> a4778a813e92
    Step 5/10 : RUN yum -y install vim
     ---> Running in 73cc7539a7fc
    CentOS-8 - AppStream                            629 kB/s | 6.3 MB     00:10    
    CentOS-8 - Base                                 726 kB/s | 7.9 MB     00:11    
    CentOS-8 - Extras                               446  B/s | 2.1 kB     00:04    
    Dependencies resolved.
    ================================================================================
     Package             Arch        Version                   Repository      Size
    ================================================================================
    Installing:
     vim-enhanced        x86_64      2:8.0.1763-10.el8         AppStream      1.4 M
    Installing dependencies:
     gpm-libs            x86_64      1.20.7-15.el8             AppStream       39 k
     vim-common          x86_64      2:8.0.1763-10.el8         AppStream      6.3 M
     vim-filesystem      noarch      2:8.0.1763-10.el8         AppStream       48 k
     which               x86_64      2.21-10.el8               BaseOS          49 k
    
    Transaction Summary
    ================================================================================
    Install  5 Packages
    
    Total download size: 7.8 M
    Installed size: 30 M
    Downloading Packages:
    (1/5): gpm-libs-1.20.7-15.el8.x86_64.rpm         32 kB/s |  39 kB     00:01    
    (2/5): vim-filesystem-8.0.1763-10.el8.noarch.rp 254 kB/s |  48 kB     00:00    
    (3/5): which-2.21-10.el8.x86_64.rpm              93 kB/s |  49 kB     00:00    
    (4/5): vim-enhanced-8.0.1763-10.el8.x86_64.rpm  585 kB/s | 1.4 MB     00:02    
    (5/5): vim-common-8.0.1763-10.el8.x86_64.rpm    969 kB/s | 6.3 MB     00:06    
    --------------------------------------------------------------------------------
    Total                                           750 kB/s | 7.8 MB     00:10     
    warning: /var/cache/dnf/AppStream-02e86d1c976ab532/packages/gpm-libs-1.20.7-15.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
    CentOS-8 - AppStream                            1.6 MB/s | 1.6 kB     00:00    
    Importing GPG key 0x8483C65D:
     Userid     : "CentOS (CentOS Official Signing Key) <security@centos.org>"
     Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
     From       : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
    Key imported successfully
    Running transaction check
    Transaction check succeeded.
    Running transaction test
    Transaction test succeeded.
    Running transaction
      Preparing        :                                                        1/1 
      Installing       : which-2.21-10.el8.x86_64                               1/5 
      Installing       : vim-filesystem-2:8.0.1763-10.el8.noarch                2/5 
      Installing       : vim-common-2:8.0.1763-10.el8.x86_64                    3/5 
      Installing       : gpm-libs-1.20.7-15.el8.x86_64                          4/5 
      Running scriptlet: gpm-libs-1.20.7-15.el8.x86_64                          4/5 
      Installing       : vim-enhanced-2:8.0.1763-10.el8.x86_64                  5/5 
      Running scriptlet: vim-enhanced-2:8.0.1763-10.el8.x86_64                  5/5 
      Running scriptlet: vim-common-2:8.0.1763-10.el8.x86_64                    5/5 
      Verifying        : gpm-libs-1.20.7-15.el8.x86_64                          1/5 
      Verifying        : vim-common-2:8.0.1763-10.el8.x86_64                    2/5 
      Verifying        : vim-enhanced-2:8.0.1763-10.el8.x86_64                  3/5 
      Verifying        : vim-filesystem-2:8.0.1763-10.el8.noarch                4/5 
      Verifying        : which-2.21-10.el8.x86_64                               5/5 
    
    Installed:
      vim-enhanced-2:8.0.1763-10.el8.x86_64 gpm-libs-1.20.7-15.el8.x86_64          
      vim-common-2:8.0.1763-10.el8.x86_64   vim-filesystem-2:8.0.1763-10.el8.noarch
      which-2.21-10.el8.x86_64             
    
    Complete!
    Removing intermediate container 73cc7539a7fc
     ---> 40dee5128b87
    Step 6/10 : RUN yum -y install net-tools
     ---> Running in 6dff3319a5c8
    Last metadata expiration check: 0:00:18 ago on Mon Nov 25 21:34:01 2019.
    Dependencies resolved.
    ================================================================================
     Package         Arch         Version                        Repository    Size
    ================================================================================
    Installing:
     net-tools       x86_64       2.0-0.51.20160912git.el8       BaseOS       323 k
    
    Transaction Summary
    ================================================================================
    Install  1 Package
    
    Total download size: 323 k
    Installed size: 1.0 M
    Downloading Packages:
    net-tools-2.0-0.51.20160912git.el8.x86_64.rpm   178 kB/s | 323 kB     00:01    
    --------------------------------------------------------------------------------
    Total                                            98 kB/s | 323 kB     00:03     
    Running transaction check
    Transaction check succeeded.
    Running transaction test
    Transaction test succeeded.
    Running transaction
      Preparing        :                                                        1/1 
      Installing       : net-tools-2.0-0.51.20160912git.el8.x86_64              1/1 
      Running scriptlet: net-tools-2.0-0.51.20160912git.el8.x86_64              1/1 
      Verifying        : net-tools-2.0-0.51.20160912git.el8.x86_64              1/1 
    
    Installed:
      net-tools-2.0-0.51.20160912git.el8.x86_64                                     
    
    Complete!
    Removing intermediate container 6dff3319a5c8
     ---> 38ee719064bf
    Step 7/10 : EXPOSE 8000
     ---> Running in f5d94def858c
    Removing intermediate container f5d94def858c
     ---> cb7a32a28939
    Step 8/10 : CMD echo $MYPATH
     ---> Running in d8849409e238
    Removing intermediate container d8849409e238
     ---> c7aa85692260
    Step 9/10 : CMD echo "success ------OK"
     ---> Running in de18e204d92c
    Removing intermediate container de18e204d92c
     ---> ef8a6e27705a
    Step 10/10 : CMD /bin/bash
     ---> Running in 2d9372a8083a
    Removing intermediate container 2d9372a8083a
     ---> 3942972c5c9c
    Successfully built 3942972c5c9c
    Successfully tagged mycentos:1.3
    
    
    4:查看当前镜像
    [root@docker ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
    mycentos            1.3                 3942972c5c9c        About a minute ago   301MB
    centos              latest              0f3e07c0138f        7 weeks ago          220MB
    
    5:使用自定义镜像构建容器
    [root@docker ~]# docker run -it mycentos:1.3
    [root@c390446635c6 local]# ifconfig
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
            ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
            RX packets 7  bytes 586 (586.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    [root@c390446635c6 local]# pwd
    /usr/local
    
    
    6:查看镜像创建历史
    [root@docker ~]# docker history mycentos:1.3  
    IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
    3942972c5c9c        32 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B                  
    ef8a6e27705a        32 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B                  
    c7aa85692260        32 minutes ago      /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "echo…   0B                  
    cb7a32a28939        32 minutes ago      /bin/sh -c #(nop)  EXPOSE 8000                  0B                  
    38ee719064bf        32 minutes ago      /bin/sh -c yum -y install net-tools             14.3MB              
    40dee5128b87        32 minutes ago      /bin/sh -c yum -y install vim                   66.8MB              
    a4778a813e92        33 minutes ago      /bin/sh -c #(nop) WORKDIR /usr/local            0B                  
    031eb583bc70        33 minutes ago      /bin/sh -c #(nop)  ENV MYPATH=/usr/local        0B                  
    99b5cde412f4        33 minutes ago      /bin/sh -c #(nop)  MAINTAINER vargant007<923…   0B                  
    0f3e07c0138f        7 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
    <missing>           7 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
    <missing>           7 weeks ago         /bin/sh -c #(nop) ADD file:d6fdacc1972df524a…   220MB
    
    
    
    
  • 相关阅读:
    C++--第25课
    C++--第24课
    C++--第23课
    C++--第22课
    C++--第21课
    C++--第20课
    C++--第19课
    C++--第18课
    C++--第17课
    Windows程序设计学习笔记(1):一个简单的windows程序
  • 原文地址:https://www.cnblogs.com/zhoujun007/p/11931293.html
Copyright © 2020-2023  润新知