闲话就不说了,直接上Dockerfile:
FROM /library/centos:7.2.1511
MAINTAINER by zsk_john
RUN yum -y install vim net-tools && yum clean all
EXPOSE 22
CMD ["/bin/bash", "-D"]
注意一点,如果拆开写RUN,也就是yum install vim -y &&yum install net-tools -y && yum clean all ,那么会有极大的可能报错Rpmdb checksum is invalid: dCDPT(pkg checksums): ... 。
此报错估计是docker的一个bug,我的docker是19.3ce版本,报错没什么好分析的,就是字面意思,yum的元仓库数据混乱了,因此,在第二个yum install前增加一个 rpm --rebuilddb 即可,也就是这个dockerfile可以写成以下这样就不会报错:
FROM /library/centos:7.2.1511
MAINTAINER by zsk_john
RUN yum -y install vim
RUN rpm --rebuilddb && yum install net-tools -y && yum clean all
EXPOSE 22
CMD ["/bin/bash", "-D"]
也就是有时候在使用dockerfile build的时候,如果有多条 “RUN yum install -y …” 指令,需要在每条之前都加上 “rpm –rebuilddb”。
注解:此dockerfile 拉取网易蜂巢的centos7.2.1511版本镜像作为基础镜像,安装vim和net工具netstat,清除安装缓存,以减小build的镜像大小。
如果使用第一个dockerfile的话,镜像大小应该为270M左右,如果使用第二个dockerfile的话,镜像大小会达到385M左右,这提示我们,docker build镜像的时候,run命令尽量通过&&写到一行,可以有效减少生成镜像的层数,从而控制镜像的大小。这里,我已经帮各位顺便验证了。