使用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

08Dockerfile基本使用的更多相关文章

随机推荐

  1. PostgreSQL SELECT INTO和INSERT INTO SELECT 两种表复制语句

    SELECT INTO和INSERT INTO SELECT两种表复制语句都可以用来复制表与表之间的数据,但是它们之间也有区别. 建表语句: bas_custom_rel表 CREATE TABLE ...

  2. arcgis python 删除一个数据库所有数据

    # -*- coding: cp936 -*- import xlrd # must init xlrd import arcpy import os def main(): arcpy.env.wo ...

  3. Android:高通平台性能调试

    1.GPU / CPU 信息打印脚本 gpu_cpu_info.bat @echo off echo "==================GPU====================== ...

  4. CPU分几核几核的是什么意思?

    CPU的几核分类其实是按照CPU的地址总线数量来分类的 单核心的地址总线数量是8条 双核心就是16条 三核心就是24 依次类推,核心的多少,只需要知道地址总线的多少,然后除以8就得出来了 地址总线:地 ...

  5. beSTORM之网络协议Fuzz入门教程

    转载自FreeBuf.COM 本文将以SNMP协议为例介绍如何使用beSTORM进行网络协议Fuzz. 实验环境 Windows 7 X64 (IP:192.168.0.123) beSTORM 3. ...

  6. 【FFMPEG】【ARM-Linux开发】 ffmpeg 静态库使用,undefined reference错误

    原文:http://blog.csdn.net/chinazjn/article/details/7954984 ffmpeg移植到dm365上,遇到undefined reference错误: GA ...

  7. PHP根据IP判断地区名信息的示例代码

    <?php header("Content-type: text/html; charset=utf-8"); function getIP(){ if (isset($_S ...

  8. 冲刺Noip2017模拟赛5 解题报告——五十岚芒果酱

    1. 公约数(gcd) [问题描述] 给定一个正整数,在[,n]的范围内,求出有多少个无序数对(a,b)满足 gcd(a,b)=a xor b. [输入格式] 输入共一行,一个正整数n. [输出格式] ...

  9. 《MIT 6.828 Lab 1 Exercise 12》实验报告

    本实验的网站链接:MIT 6.828 Lab 1 Exercise 12. 题目 Exercise 12. Modify your stack backtrace function to displa ...

  10. 如何获得select被选中option的value和text和......

    我想获取select选中的value,或者text,或者…… 比如这个: <select id="select"> <option value="A&q ...