详解Docker 容器基础系统镜像打包
因为容器本身是共享宿主操作系统内核,所以容器基础系统镜像包本身就是一个标准的Linuxrootfs+用户自定义的工具。根据这个思路,我们就可以构建一个自己的容器基础系统镜像。
构建标准的Linuxrootfs的方式有很多种方法,Redhat、Debian、SUSE等主流的发行版都有提供相应的工具支持。
大概的流程如下:
构建基础的rootfs—>配置基础系统参数—>部署用户自定义软件—>清理系统—>打包为容器镜像—>测试镜像—>发布仓库
以Ubuntu16.04.01LTS版为例,制作一个Ubuntu16.04LTS的Docker基础系统镜像:
1、安装Debootstrap:
sudoaptinstalldebootstrap
2、通过Debootstrap构建Ubuntu16.04LTS的rootfs:
1)、创建rootfs存放的位置,如我们把新的rootfs存放在/opt/new_os:
sudomkdir-p/opt/new_os
2)、构建基础Ubuntu16.04LTS的rootfs(Debootstrap工具的参数使用--help查看):
sudodebootstrap--verbose--arch=amd64xenial/opt/new_oshttp://mirrors.aliyun.com/ubuntu
3)、配置基础系统参数:
a、切换到新rootfs:
sudochroot/opt/new_os/bin/bash
b、安装基础包(请根据实际需求安装):
apt-yupdate&&apt-yupgrade&&apt-yinstallvimlocales
c、配置系统字符集(根据提示进行):
dpkg-reconfigurelocales
d、配置时区:
cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime
e、可选:配置第三方衍生系统版本信息(如:UbuntuKylin)
tee/etc/ubuntukylin-release<<-‘EOF' DISTRIB_ID=UbuntuKylin DISTRIB_RELEASE=16.04 DISTRIB_CODENAME=xenial DISTRIB_DESCRIPTION="UbuntuKylin16.04" EOF
f、清理系统:
rm-Rf/tmp/*&&aptclean
g、退出当前rootfs
exit
4)、打包并创建Docker镜像(前置条件:当前系统已经配置了Docker运行时环境):
sudotar-C/opt/new_os/-c.|sudodockerimport-new_os
5)、测试
sudodockerrunnew_oscat/etc/lsb-release
3、发布到仓库(以发布到官方仓库为例,私有仓库请自行上传)
sudodockerloginshibingli@yeah.net …… sudodockertagnew_osshibingli/new_os sudodockerpushshibingli/new_os
4、完成。
5、补充,如果要把当前的系统环境打包为容器基础镜像,主要是rootfs的处理,可以参考以下命令:
tar--numeric-owner--exclude=/proc--exclude=/sys-cvfnew_os.tar/
catnew_os.tar|dockerimport-new_os
或
sudotar--numeric-owner--exclude=/proc--exclude=/sys-C/-c.|sudodockerimport-new_os
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。