制作CentOS Docker基础镜像
Supermin是一个用来创建迷你虚拟环境的工具;
chroot命令可以使用一个完全安全隔离的环境,并且所有的操作都是基于新的根目录来操作,用户根本访问不到原来的系统根目录。
下面来制作CentOS的mini Docker基础镜像:
- 最小化安装Centos操作系统,可用虚拟机安装。
- 使用supermin5创建小的虚拟环境:
YUM安装supermin5:
yum install supermin5* -y - 准备mini环境的工具:
mkdir /opt/minios && cd /opt/minios
supermin5 -v --prepare bash coreutils iputils iproute net-tools telnet -o /opt/minios/minios.d
提供常用工具:bash ssh tail ping ip netstat lsof vim tar wget git yum 等命令
bash 提供 /alias/bash/bashbug/bashbug-64/bg/cd/command/fc/fg/getopts/jobs/read/sh/umask/unalias/wait
iputils 提供 /ping/tracepath
iproute 提供 /arpd/bridge/cbq/ctstat/devlink/genl、ifcfg、ifstat/ip/lnstat、nstat、rdma、routef、routel、rtacct、rtmon、rtpr、rtstat/ss/tc
- 创建迷你环境
supermin5 -v --build --format chroot /opt/minios/minios.d -o /opt/minios/image.d
- 如果要上网执行下面命令
echo '''nameserver 114.114.114.114
nameserver 8.8.8.8''' > /opt/minios/image.d/etc/resolv.conf - 如果要使用yum安装软件包
echo 6 > /opt/minios/image.d/etc/yum/vars/releasever
echo 7 > /opt/minios/image.d/etc/yum/vars/releasever
cd image.d/ && chroot .
使用chroot切换根目录之后就创建一个完全隔离的环境,方便用户在完全隔离的环境下进行开发。
在使用 chroot 之后,系统的目录结构将以指定的目录作为 “/”,以下操作均是在新的根目录下执行了。
bash-4.2# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
bash-4.2# python --version
Python 2.7.5
bash-4.2# exit
- 创建CentOS系统基础镜像:
cd /opt/minios/image.d && tar --numeric-owner -cvf /opt/minios/minios.tar .
或:
tar --numeric-owner -cvf /opt/minios/minios.tar -C /opt/minios/image.d/ .
将打包的文件系统导入Docker本地:
cat /opt/minios/minios.tar | docker import - minios:v1
查看Docker的本地镜像仓库:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
minios v1 676510670fa0 24 minutes ago 268MB
- 运行容器:
docker run -idt --name minios minios:v1 /bin/bash
docker exec -it minios /bin/bash
bash-4.2# ip a
bash-4.2# exit