06 - DockerFile 学习

1.Dockerfile 简介  

   Dockerfile 是由一系列命令和参数构成的脚本,这些命令应用于操作系统(centos或者Ubuntu)基础镜像并最终创建的一个新镜像。

     我们前面通过手工方式,修改配置文件,或者添加、删除文件目录的方式,来构建一种新镜像;这种手工方式麻烦,容易出错,而且不能复用。

     这里的讲的Docker 用脚本方式来构建自动化,可复用的,高效率的创建镜像方式,是企业级开发的首选方式;

     再软件系统开发生命周期中,采用Dockerfile 来构建镜像:

    1、对于开发人员:可以为开发团队提供一个完全一致的开发环境;

    2、对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作;

    3、对于运维人员:在部署时,可以实现应用的无缝移植。

2.Dockerfile 常用指令

  • FROM image_name:tag   定义使用哪个基础镜像启动构建流程:
  • MAINTAINER user_info    声明镜像维护者信息 
  • LABEL key value    镜像描述元信息(可以写多条)
  • ENV key value  设置环境变量(可以写多条)
  • RUN command 构建容器时需要运行的命令(可以写多条)
  • WORKDIR path_dir  设置终端默认登录进来的工作目录
  • EXPOSE port  当前容器对外暴露出的端口
  • ADD source_dir/file dest_dir/file  将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
  • COPY  source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件是不能解压
  • VOLUME 创建一个可以从本机主机或者其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等
  • CMD  指定容器启动时要运行的命令,假如有多个CMD,最后一个生效;
  • ENTRYPOINT 指定容器启动时要运行的命令
  • ONBUILD 当构建一个被继承的Dockerfile时运行的命令,父镜像在被子镜像继承后父镜像的onbuild被触发。可以把ONBUILD理解为一个触发器

3.用Dockerfile构建自定义centos

1、编写DockerFile

文件名为:myCentosDockerFile 内容如下

FROM centos
MAINTAINER zuozhe<zuozhe@test.com>

LABEL name="centos Image" build-date='20200907'

ENV WORKPATH /home/
WORKDIR $WORKPATH

RUN yum -y install net-tools
RUN yum -y install vim

EXPOSE 80
CMD /bin/bash

2、构建 docker build -f DockFile文件名 -t 镜像名称:版本.

docker build -f myCentosDockerFile -t tiankerui/mycentos:1.1 .

[root@base210 dockerfile]# docker build -f myCentosDockerFile -t tiankeuri/mycentos:v1 .
Sending build context to Docker daemon  2.048kB
Step 1/9 : FROM centos
latest: Pulling from library/centos
3c72a8ed6814: Pull complete 
Digest: sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd
Status: Downloaded newer image for centos:latest
 ---> 0d120b6ccaa8
Step 2/9 : MAINTAINER zuozhe<zuozhe@test.com>
 ---> Running in 5afa5cd39da8
Removing intermediate container 5afa5cd39da8
 ---> 80f6ee0d6b0c
Step 3/9 : LABEL name="centos Image" build-date='20200907'
 ---> Running in a4e565e476f0
Removing intermediate container a4e565e476f0
 ---> 98a04a452949
Step 4/9 : ENV WORKPATH /home/
 ---> Running in d1d5d48b9ef2
Removing intermediate container d1d5d48b9ef2
 ---> 08916c745160
Step 5/9 : WORKDIR $WORKPATH
 ---> Running in 6d0fd1fa5dba
Removing intermediate container 6d0fd1fa5dba
 ---> 5dc308ab5e74
Step 6/9 : RUN yum -y install net-tools
 ---> Running in 11c0cf867073
CentOS-8 - AppStream                            2.7 MB/s | 5.8 MB     00:02    
CentOS-8 - Base                                 2.0 MB/s | 2.2 MB     00:01    
CentOS-8 - Extras                               5.0 kB/s | 8.1 kB     00:01    
Last metadata expiration check: 0:00:01 ago on Wed Oct  7 12:44:49 2020.
Dependencies resolved.
================================================================================
 Package         Architecture 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   937 kB/s | 323 kB     00:00    
--------------------------------------------------------------------------------
Total                                           362 kB/s | 323 kB     00:00     
warning: /var/cache/dnf/BaseOS-f6a80ba95cf937f2/packages/net-tools-2.0-0.51.20160912git.el8.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS-8 - Base                                 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       : 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 11c0cf867073
 ---> 358aa6df4073
Step 7/9 : RUN yum -y install vim
 ---> Running in 533cc1bef383
Last metadata expiration check: 0:00:04 ago on Wed Oct  7 12:44:49 2020.
Dependencies resolved.
================================================================================
 Package             Arch        Version                   Repository      Size
================================================================================
Installing:
 vim-enhanced        x86_64      2:8.0.1763-13.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-13.el8         AppStream      6.3 M
 vim-filesystem      noarch      2:8.0.1763-13.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: 31 M
Downloading Packages:
(1/5): gpm-libs-1.20.7-15.el8.x86_64.rpm        221 kB/s |  39 kB     00:00    
(2/5): vim-filesystem-8.0.1763-13.el8.noarch.rp 889 kB/s |  48 kB     00:00    
(3/5): which-2.21-12.el8.x86_64.rpm             900 kB/s |  49 kB     00:00    
(4/5): vim-enhanced-8.0.1763-13.el8.x86_64.rpm  2.6 MB/s | 1.4 MB     00:00    
(5/5): vim-common-8.0.1763-13.el8.x86_64.rpm    8.6 MB/s | 6.3 MB     00:00    
--------------------------------------------------------------------------------
Total                                           2.4 MB/s | 7.8 MB     00:03     
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-13.el8.noarch                2/5 
  Installing       : vim-common-2:8.0.1763-13.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-13.el8.x86_64                  5/5 
  Running scriptlet: vim-enhanced-2:8.0.1763-13.el8.x86_64                  5/5 
  Running scriptlet: vim-common-2:8.0.1763-13.el8.x86_64                    5/5 
  Verifying        : gpm-libs-1.20.7-15.el8.x86_64                          1/5 
  Verifying        : vim-common-2:8.0.1763-13.el8.x86_64                    2/5 
  Verifying        : vim-enhanced-2:8.0.1763-13.el8.x86_64                  3/5 
  Verifying        : vim-filesystem-2:8.0.1763-13.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-13.el8.x86_64    
  vim-enhanced-2:8.0.1763-13.el8.x86_64 vim-filesystem-2:8.0.1763-13.el8.noarch
  which-2.21-12.el8.x86_64             

Complete!
Removing intermediate container 533cc1bef383
 ---> ff98aa7a481f
Step 8/9 : EXPOSE 80
 ---> Running in 7e0e74f216a6
Removing intermediate container 7e0e74f216a6
 ---> ca2d6a5b776f
Step 9/9 : CMD /bin/bash
 ---> Running in 830ceb01bd03
Removing intermediate container 830ceb01bd03
 ---> 8b0f24987335
Successfully built 8b0f24987335
Successfully tagged tiankeuri/mycentos:v1

查看镜像

[root@base210 dockerfile]# docker images
REPOSITORY            TAG                          IMAGE ID            CREATED              SIZE
tiankeuri/mycentos    v1                           8b0f24987335        About a minute ago   295MB

3、运行docker run -it 镜像ID

     跟之前运行一样

4、查看镜像历史 docker history 镜像ID

[root@base210 dockerfile]# docker history 8b0f24987335
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
8b0f24987335        5 minutes ago       /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin…   0B                  
ca2d6a5b776f        5 minutes ago       /bin/sh -c #(nop)  EXPOSE 80                    0B                  
ff98aa7a481f        5 minutes ago       /bin/sh -c yum -y install vim                   48.1MB              
358aa6df4073        5 minutes ago       /bin/sh -c yum -y install net-tools             31.3MB              
5dc308ab5e74        5 minutes ago       /bin/sh -c #(nop) WORKDIR /home/                0B                  
08916c745160        5 minutes ago       /bin/sh -c #(nop)  ENV WORKPATH=/home/          0B                  
98a04a452949        5 minutes ago       /bin/sh -c #(nop)  LABEL name=centos Image b…   0B                  
80f6ee0d6b0c        5 minutes ago       /bin/sh -c #(nop)  MAINTAINER zuozhe<zuozhe@…   0B                  
0d120b6ccaa8        8 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
<missing>           8 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
<missing>           8 weeks ago         /bin/sh -c #(nop) ADD file:538afc0c5c964ce0d…   215MB               

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值