1.使用reposync将base镜像库同步到本地
yum -y install yum-utils createrepo
mkdir -p /data/centos7find /etc/yum.repos.d/[!.]* -exec mv {} {}.bak \;cat << EOF > /etc/yum.repos.d/sync.repo[base]name=aliyun-centos7enabled=1baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/gpgcheck=0EOFyum clean allnohup reposync --newest-only --repoid=base -p /data/centos7/ >/dev/null 2>&1 &createrepo /data/centos7/base -o /data/centos7/basewget https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 -P /data/centos7#备注:reposync命令可定期执行以保证本地源是最新的。
2.安装docker
wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/Linux/centos/docker-ce.repo
yum install -y docker-cemkdir -p /etc/dockercurl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.iosystemctl daemon-reload && systemctl enable docker && systemctl restart dockerdocker version
3.制作scratch空镜像
tar cf scratch.tar --files-from /dev/null
docker import scratch.tar scratch或者docker rmi scratchtar cv --files-from /dev/null | docker import - scratch#备注:减号是标准输出,将管道前面命令的执行结果放入减号位置。
4.在centos7.5操作系统的命令行中制作centos7.5的根目录并打包
mkdir /root/vroot
yum -y install --installroot=/root/vroot bash yum coreutilschroot /root/vroot/cp /etc/skel/.[!.]* /root/ls -a /rootexitchroot /root/vroot/exittar -cJf centos-7-docker.tar.xz -C vroot ./
5.制作centos7.5的docker镜像
mkdir /root/mydocker
mv centos-7-docker.tar.xz /root/mydocker/cd /root/mydocker/echo ‘FROM scratchADD centos-7-docker.tar.xz /LABEL org.label-schema.schema-version = "1.0" \
org.label-schema.name="CentOS Base Image" \ org.label-schema.vendor="CentOS" \ org.label-schema.license="GPLv2" \ org.label-schema.build-date="20190716"CMD ["/bin/bash"]‘ > Dockerfile
docker build -t centos:latest .docker images centosdocker history centos
6.运行刚制作的centos镜像并将容器中的更改备份出来
docker run -it centos
ifconfigyum provides ifconfigyum -y install net-toolsifconfigpstreeyum provides pstreeyum -y install psmiscpstree -pls /exitdocker container ls -adocker save centos -o /root/centos.tartar -tvf /root/centos.tar#备注:docker save导出的文件,其实就是一个普通的压缩文件,这个压缩文件中包含了镜像的所有镜像层,以及包含镜像基本信息的Manifest文件。在Manifest文件中,包含了所有镜像层的散列值,可以通过这些特征值来检查镜像层文件是否完整且正确。
7.启动容器并退出容器的正确做法
docker ps -adocker start ee6286a3d32fdocker attach ee6286a3d32f ctrl+p+qdocker ps
精彩评论