前言
Docker Hub 中99% 的镜像都是通过在base镜像(Scratch)中安装和配置需要的软件构建出来的
1. 编写DockerFile
目的:使我们自己的镜像具备如下:登陆后的默认路径、vim编辑器、查看网络配置ifconfig支持
准备编写DockerFlie文件
思路
mkdir dockerfile # 创建个文件夹dockerfile,在此文件夹下操作
vim mydockerfile-centos # 在mydockerfile-centos下编写镜像
开始编写,编写完成后:wq保存
cat mydockerfile-centos # 查看
实施过程
[root@localhost home]# mkdir dockerfile
[root@localhost home]# cd dockerfile
[root@localhost dockerfile]# vim mydockerfile-centos
[root@localhost dockerfile]# cat mydockerfile-centos
编写的mydockerfile-centos的内容
FROM centos
MAINTAINER mayxue<邮箱>
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
2. 构建
思路
到 docker build 命令最后有一个 “.” , “.” 表示当前目录
# 开始构建
docker build -f dockerfile文件路径 -t 镜像名:[版本号] .
最后出现
Successfully built fca5e7d8ee43
Successfully tagged mycentos:0.1
说明构建成功
具体操作
[root@localhost dockerfile]# docker build -f mydockerfile-centos -t mycentos:0.1 .
3. 测试运行
思路
docker images # 查看镜像,发现已经存在mycentos
docker run -it mycentos:0.1 # 运行
测试pwd命令 出现的/usr/local是我们之前编写指定的
测试ipconfig命令
docker history 镜像id查看当前镜像的构建历史
[root@localhost dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 0.1 fca5e7d8ee43 2 minutes ago 291MB
[root@2307bdce8a66 local]# pwd
/usr/local
[root@2307bdce8a66 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 8 bytes 656 (656.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@2307bdce8a66 local]# exit
exit
[root@localhost dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mycentos 0.1 fca5e7d8ee43 13 minutes ago 291MB
tomcat latest 040bdb29ab37 3 weeks ago 649MB
nginx latest f6d0b4767a6c 3 weeks ago 133MB
centos latest 300e315adb2f 2 months ago 209MB
[root@localhost dockerfile]# docker history fca5e7d8ee43
IMAGE CREATED CREATED BY SIZE COMMENT
fca5e7d8ee43 13 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "/bin… 0B
2b81454930de 13 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B
0d3172a0e330 13 minutes ago /bin/sh -c #(nop) CMD ["/bin/sh" "-c" "echo… 0B
0174a9bf7551 13 minutes ago /bin/sh -c #(nop) EXPOSE 80 0B
2738057d803c 13 minutes ago /bin/sh -c yum -y install net-tools 23.3MB
3240caab10d1 13 minutes ago /bin/sh -c yum -y install vim 58.1MB
38b5b8974eee 18 minutes ago /bin/sh -c #(nop) WORKDIR /usr/local 0B
916a12e41e17 18 minutes ago /bin/sh -c #(nop) ENV MYPATH=/usr/local 0B
697cfaced367 18 minutes ago /bin/sh -c #(nop) MAINTAINER mayxue<simeixu… 0B
300e315adb2f 2 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 2 months ago /bin/sh -c #(nop) LABEL org.label-schema.sc… 0B
<missing> 2 months ago /bin/sh -c #(nop) ADD file:bd7a2aed6ede423b7… 209MB
[root@localhost dockerfile]#
4. 和官方的对比
官方的docker镜像
默认路径是/
不支持vim、不支持pwd、不支持ifconfig
我们构建的CentOS:
默认路径是/usr/local
支持vim、支持pwd、支持ifconfig