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<[email protected]>

#设置变量
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<[email protected]>
 ---> 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) <[email protected]>"
 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


猜你喜欢

转载自www.cnblogs.com/zhoujun007/p/11931293.html