• dockerfile案例一:自定义镜像centos


    自定义镜像centos

    需求:

    1. 容器默认工作目录为/usr/local
    2. 容器默认具有vim编辑器
    3. 容器默认可以使用telnet命令

    dockerfile编写:

    FROM centos
    MAINTAINER nick<275148221@qq.com>
    
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    
    RUN yum -y install vim
    RUN yum -y install telnet.*
    
    EXPOSE 80
    
    CMD echo $MYPATH
    CMD echo "success--------------ok"
    CMD /bin/bash

    由dockerfile文件build镜像:

    [root@izbp13m488196e5hna361rz mydocker]# docker build -f /mydocker/dockerfile2 -t mycentos:1.0 .
    Sending build context to Docker daemon  3.072kB
    Step 1/10 : FROM centos
     ---> 300e315adb2f
    Step 2/10 : MAINTAINER nick<275148221@qq.com>
     ---> Running in 31a16822cb11
    Removing intermediate container 31a16822cb11
     ---> ba6957c0127e
    Step 3/10 : ENV mypath /usr/local
     ---> Running in b21b6fa8a9b3
    Removing intermediate container b21b6fa8a9b3
     ---> d602194ad012
    Step 4/10 : WORKDIR $mypath
     ---> Running in 66c65a497334
    Removing intermediate container 66c65a497334
     ---> 8f2d9e898468
    Step 5/10 : RUN yum install -y vim
     ---> Running in 8df005b36663
    CentOS Linux 8 - AppStream                      3.3 MB/s | 6.3 MB     00:01    
    CentOS Linux 8 - BaseOS                         1.4 MB/s | 2.3 MB     00:01    
    CentOS Linux 8 - Extras                         7.3 kB/s | 8.6 kB     00:01    
    Dependencies resolved.
    ================================================================================
     Package             Arch        Version                   Repository      Size
    ================================================================================
    Installing:
     vim-enhanced        x86_64      2:8.0.1763-15.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-15.el8         appstream      6.3 M
     vim-filesystem      noarch      2:8.0.1763-15.el8         appstream       48 k
     which               x86_64      2.21-12.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        177 kB/s |  39 kB     00:00    
    (2/5): vim-filesystem-8.0.1763-15.el8.noarch.rp 254 kB/s |  48 kB     00:00    
    (3/5): vim-enhanced-8.0.1763-15.el8.x86_64.rpm  2.3 MB/s | 1.4 MB     00:00    
    (4/5): which-2.21-12.el8.x86_64.rpm             169 kB/s |  49 kB     00:00    
    (5/5): vim-common-8.0.1763-15.el8.x86_64.rpm    5.8 MB/s | 6.3 MB     00:01    
    --------------------------------------------------------------------------------
    Total                                           1.4 MB/s | 7.8 MB     00:05     
    CentOS Linux 8 - AppStream                      1.6 MB/s | 1.6 kB     00:00    
    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
    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-12.el8.x86_64                               1/5 
      Installing       : vim-filesystem-2:8.0.1763-15.el8.noarch                2/5 
      Installing       : vim-common-2:8.0.1763-15.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-15.el8.x86_64                  5/5 
      Running scriptlet: vim-enhanced-2:8.0.1763-15.el8.x86_64                  5/5 
      Running scriptlet: vim-common-2:8.0.1763-15.el8.x86_64                    5/5 
      Verifying        : gpm-libs-1.20.7-15.el8.x86_64                          1/5 
      Verifying        : vim-common-2:8.0.1763-15.el8.x86_64                    2/5 
      Verifying        : vim-enhanced-2:8.0.1763-15.el8.x86_64                  3/5 
      Verifying        : vim-filesystem-2:8.0.1763-15.el8.noarch                4/5 
      Verifying        : which-2.21-12.el8.x86_64                               5/5 
    
    Installed:
      gpm-libs-1.20.7-15.el8.x86_64         vim-common-2:8.0.1763-15.el8.x86_64    
      vim-enhanced-2:8.0.1763-15.el8.x86_64 vim-filesystem-2:8.0.1763-15.el8.noarch
      which-2.21-12.el8.x86_64             
    
    Complete!
    Removing intermediate container 8df005b36663
     ---> c73dae587cce
    Step 6/10 : RUN yum install -y telnet.*
     ---> Running in 60924d6c74bf
    Last metadata expiration check: 0:00:13 ago on Wed Feb  3 10:31:59 2021.
    Dependencies resolved.
    ================================================================================
     Package       Architecture  Version                     Repository        Size
    ================================================================================
    Installing:
     telnet        x86_64        1:0.17-73.el8_1.1           appstream         72 k
    
    Transaction Summary
    ================================================================================
    Install  1 Package
    
    Total download size: 72 k
    Installed size: 153 k
    Downloading Packages:
    telnet-0.17-73.el8_1.1.x86_64.rpm               240 kB/s |  72 kB     00:00    
    --------------------------------------------------------------------------------
    Total                                            61 kB/s |  72 kB     00:01     
    Running transaction check
    Transaction check succeeded.
    Running transaction test
    Transaction test succeeded.
    Running transaction
      Preparing        :                                                        1/1 
      Installing       : telnet-1:0.17-73.el8_1.1.x86_64                        1/1 
      Running scriptlet: telnet-1:0.17-73.el8_1.1.x86_64                        1/1 
      Verifying        : telnet-1:0.17-73.el8_1.1.x86_64                        1/1 
    
    Installed:
      telnet-1:0.17-73.el8_1.1.x86_64                                               
    
    Complete!
    Removing intermediate container 60924d6c74bf
     ---> a0788817c0bf
    Step 7/10 : EXPOSE 80
     ---> Running in ac8bbad7d813
    Removing intermediate container ac8bbad7d813
     ---> 199cd7e851a0
    Step 8/10 : CMD echo $mypath
     ---> Running in 795245e2e55b
    Removing intermediate container 795245e2e55b
     ---> 8757104d971c
    Step 9/10 : CMD echo "success --------- ok"
     ---> Running in 17739c202b85
    Removing intermediate container 17739c202b85
     ---> 3ca5bb1abcea
    Step 10/10 : CMD /bin/bash
     ---> Running in 1457a767590c
    Removing intermediate container 1457a767590c
     ---> 3b0cb5ffbc9f
    Successfully built 3b0cb5ffbc9f
    Successfully tagged mycentos:1.0

    观察以上docker build的整个过程,从step1到step10,正好是dockerfile的10行,每一步执行一行,执行的流程如下:

    1:docker从基础镜像运行一个容器
    2:执行一条指令并对容器作出修改
    3:执行类似docker commit的操作提交一个新的镜像层
    4:docker再基于刚提交的镜像运行一个新容器
    5:执行dockerfile中的下一条指令直到所有指令都执行完成

    在第五步和第六步,分别yum安装了vim和telnet,这也使得最后生成的镜像mycentos比父镜像centos要大:

    [root@izbp13m488196e5hna361rz ~]# docker images *centos
    REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
    mycentos     1.0       3b0cb5ffbc9f   24 hours ago   281MB
    centos       latest    300e315adb2f   8 weeks ago    209MB

    运行容器验证

    [root@izbp13m488196e5hna361rz ~]# docker run -it mycentos:1.0 /bin/bash
    [root@17f1b6d688d8 local]# pwd
    /usr/local
    [root@17f1b6d688d8 local]# which vim
    /usr/bin/vim
    [root@17f1b6d688d8 local]# which telnet
    /usr/bin/telnet

    启动容器后,工作目录为/usr/local,已经安装vim和telnet,三个需求均已满足。

     

  • 相关阅读:
    机器学习笔记
    python学习笔记-day8
    python学习笔记-day7
    python学习笔记-day6
    python学习笔记-day5
    python习题
    単語
    bat批处理----copy和xcopy区别
    C#
    VB
  • 原文地址:https://www.cnblogs.com/xulan0922/p/14368788.html
Copyright © 2020-2023  润新知