zoukankan      html  css  js  c++  java
  • 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
    
    
    
    
  • 相关阅读:
    poj 3280 Cheapest Palindrome(区间DP)
    POJ 2392 Space Elevator(多重背包)
    HDU 1285 定比赛名次(拓扑排序)
    HDU 2680 Choose the best route(最短路)
    hdu 2899 Strange fuction (三分)
    HDU 4540 威威猫系列故事――打地鼠(DP)
    HDU 3485 Count 101(递推)
    POJ 1315 Don't Get Rooked(dfs)
    脱离eclipse,手动写一个servlet
    解析xml,几种方式
  • 原文地址:https://www.cnblogs.com/zhoujun007/p/11931293.html
Copyright © 2011-2022 走看看