zoukankan      html  css  js  c++  java
  • 了解DockerFile

    DockerFile

    dockerfile是用来构建docker镜像的文件!命令参数脚本

    Centos的官方DockerFile文件

    FROM scratch
    ADD centos-7-docker.tar.xz /
    
    LABEL name="CentOS Base Image" 
        vendor="CentOS" 
        license="GPLv2" 
        build-date="20170801"
    
    CMD ["/bin/bash"]
    

    DockerFile构建过程

    • 每个保留关键字(指令)都是必须是大写字母
    • 执行从上到下顺序执行
    • # 表示注释
    • 每一个指令都会创建提交一个新的镜像层,并提交!

    image-20201212153128257

    DockerFile是面向开发的,我们以后要发布项目,做镜像,就需要编写DockerFile文件,这个文件十分简单!

    DockerFile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile件,这个文件十分简单!
    Docker镜像逐渐成为企业交付的标准,必须要掌握!
    DockerFile:构建文件,定义了一切的步骤,源代码
    Dockerlmages:通过DockerFile构建生成的镜像,最终发布和运行的产品,原来是jar war

    DockerFile指令

    image-20201212153457115

    FROM          # 基础镜镜像,一切从这里开始构建
    MAINTAINER    # 镜像是谁写的,姓名+邮箱
    RUN           # 镜像构建的时候需要运行的命令
    ADD           # 步骤:tomcat镜像,这个tomcat压缩包!添加内容
    WORKDIR       # 镜像的工作目录
    VOLUME        # 挂载的目录
    EXPOSE        # 指定暴露的端口
    CMD           # CMD用于指定容器启动时执行的命令,只能有一个CMD命令,多个CMD只执行最后一个。若容器启动时指定了运行的命令,则会覆盖掉CMD中指定的命令。
    ENTRYPOINT    # 容器启动后执行的命令,这些命令不能被docker run提供的参数覆盖。和CMD一样,每个Dockerfile中只能有一个ENTRYPOINT,当有多个时最后一个生效
    ONBUILD       # 当构建一个被继承的DockerFile这个时候就会运行ONBUILD指令。
    COPY          # 类似于ADD,将我们的文件拷贝到镜像中
    ENV           # 构建的时候设置环境变量
    

    实战测试

    Docker Hub中99%的镜像都是从FROM scratch开始的

    # 编写dockerFile文件
    [root@shop docker]# cat dockerfile01-centos 
    FROM centos
    MAINTAINER cuianbing<cuianbing@outlook.com>
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    RUN yum -y install vim
    RUN yum -y install net-tools
    EXPOSE 80
    CMD echo $MYPATH
    CMD echo "------end----"
    CMD /bin/bash
    
    ######  通过命令构建   docker build -f 文件名 -t 镜像名:版本号 目录
    [root@shop docker]# docker build -f dockerfile01-centos -t mycentos:0.1 .
    Sending build context to Docker daemon  2.048kB
    Step 1/10 : FROM centos
     ---> 300e315adb2f
    Step 2/10 : MAINTAINER cuianbing<cuianbing@outlook.com>
     ---> Running in 98d33c863dda
    Removing intermediate container 98d33c863dda
     ---> b717036e60d5
    Step 3/10 : ENV MYPATH /usr/local
     ---> Running in 05d4e87aca21
    Removing intermediate container 05d4e87aca21
     ---> e0a4373db132
    Step 4/10 : WORKDIR $MYPATH
     ---> Running in 81c620ede86d
    Removing intermediate container 81c620ede86d
     ---> c77290079833
    Step 5/10 : RUN yum -y install vim
     ---> Running in 2cd380622588
    CentOS Linux 8 - AppStream                      3.5 MB/s | 6.2 MB     00:01    
    CentOS Linux 8 - BaseOS                         2.9 MB/s | 2.3 MB     00:00    
    CentOS Linux 8 - Extras                         5.0 kB/s | 8.1 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        325 kB/s |  39 kB     00:00    
    (2/5): vim-filesystem-8.0.1763-15.el8.noarch.rp 675 kB/s |  48 kB     00:00    
    (3/5): which-2.21-12.el8.x86_64.rpm             520 kB/s |  49 kB     00:00    
    (4/5): vim-enhanced-8.0.1763-15.el8.x86_64.rpm  3.6 MB/s | 1.4 MB     00:00    
    (5/5): vim-common-8.0.1763-15.el8.x86_64.rpm    4.4 MB/s | 6.3 MB     00:01    
    --------------------------------------------------------------------------------
    Total                                           3.4 MB/s | 7.8 MB     00:02     
    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 Linux 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-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 2cd380622588
     ---> 088c154f7a11
    Step 6/10 : RUN yum -y install net-tools
     ---> Running in ce36ab4986aa
    Last metadata expiration check: 0:00:07 ago on Sat Dec 12 07:51:28 2020.
    Dependencies resolved.
    ================================================================================
     Package         Architecture Version                        Repository    Size
    ================================================================================
    Installing:
     net-tools       x86_64       2.0-0.52.20160912git.el8       baseos       322 k
    
    Transaction Summary
    ================================================================================
    Install  1 Package
    
    Total download size: 322 k
    Installed size: 942 k
    Downloading Packages:
    net-tools-2.0-0.52.20160912git.el8.x86_64.rpm   258 kB/s | 322 kB     00:01    
    --------------------------------------------------------------------------------
    Total                                           118 kB/s | 322 kB     00:02     
    Running transaction check
    Transaction check succeeded.
    Running transaction test
    Transaction test succeeded.
    Running transaction
      Preparing        :                                                        1/1 
      Installing       : net-tools-2.0-0.52.20160912git.el8.x86_64              1/1 
      Running scriptlet: net-tools-2.0-0.52.20160912git.el8.x86_64              1/1 
      Verifying        : net-tools-2.0-0.52.20160912git.el8.x86_64              1/1 
    
    Installed:
      net-tools-2.0-0.52.20160912git.el8.x86_64                                     
    
    Complete!
    Removing intermediate container ce36ab4986aa
     ---> 3923f76a5d3c
    Step 7/10 : EXPOSE 80
     ---> Running in 215d7fdaa550
    Removing intermediate container 215d7fdaa550
     ---> c21de33703e9
    Step 8/10 : CMD echo $MYPATH
     ---> Running in 70a41035a36c
    Removing intermediate container 70a41035a36c
     ---> 04758d48d7c0
    Step 9/10 : CMD echo "------end----"
     ---> Running in d88a0800a4f3
    Removing intermediate container d88a0800a4f3
     ---> eeba7ca1e1de
    Step 10/10 : CMD /bin/bash
     ---> Running in 0030be87637a
    Removing intermediate container 0030be87637a
     ---> 71a40e79759b
    Successfully built 71a40e79759b
    Successfully tagged mycentos:0.1
    
    ########### 测试运行
    
    
    

    查看镜像构建历史

    docker history 容器ID
    

    image-20201212155624513

    CMD 和 ENTRYPOINT

    CMD           # CMD用于指定容器启动时执行的命令,只能有一个CMD命令,多个CMD只执行最后一个。若容器启动时指定了运行的命令,则会覆盖掉CMD中指定的命令。
    ENTRYPOINT    # 容器启动后执行的命令,这些命令不能被docker run提供的参数覆盖。和CMD一样,每个Dockerfile中只能有一个ENTRYPOINT,当有多个时最后一个生效
    

    发布镜像

     docker login   # 登录
    

    小结

    image-20201212171833332

  • 相关阅读:
    乾颐堂7月HCIE、CCIE通过名单
    乾颐堂7月HCIE、CCIE通过名单
    乾颐堂7月HCIE、CCIE通过名单
    乾颐堂7月HCIE、CCIE通过名单
    Java实现文件压缩与解压[zip格式,gzip格式]
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/cuianbing/p/14468932.html
Copyright © 2011-2022 走看看