继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

docker镜像的制作

慕姐8265434
关注TA
已关注
手记 1309
粉丝 222
获赞 1065

1. 搭建本地仓库

1.1 下载仓库镜像

docker pull registry

1.2  启动仓库容器

docker run -d -p 5000:5000 -v /home/registry/:/tmp/registry registry

第一个5000是本地的端口,第二个5000是docker里面的端口,将本地5000的端口映射到 

docker里面的5000端口

因为这里只是仓库,我们只用通过端口访问到仓库中的镜像即可所以没有必要使用host模式

2. 自己创建ubuntu16.04的基础镜像

1.安装 Debootstrap

sudo apt install debootstrap

2.通过 Debootstrap 构建 Ubuntu 16.04 LTS 的 rootfs

创建 rootfs 存放的位置,如我们把新的 rootfs 存放在 /opt/new_os:

sudo mkdir -p /opt/new_os

构建基础 Ubuntu 16.04 LTS 的 rootfs(Debootstrap 工具的参数使用 --help 查看)

sudo debootstrap --verbose --arch=amd64 xenial /opt/new_os http://mirrors.aliyun.com/ubuntu

3.配置基础系统参数

切换到新 rootfs

sudo chroot /opt/new_os /bin/bash

安装基础包(请根据实际需求安装)

apt -y update && apt -y upgrade && apt -y install vim locales

配置系统字符集(根据提示进行)

dpkg-reconfigure locales

配置时区

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

可选:配置第三方衍生系统版本信息(如:UbuntuKylin)

tee /etc/ubuntukylin-release <<-‘EOF'

DISTRIB_ID=Ubuntu Kylin

DISTRIB_RELEASE=16.04

DISTRIB_CODENAME=xenial

DISTRIB_DESCRIPTION="Ubuntu Kylin 16.04"

EOF

4.清理系统

rm -Rf /tmp/* && apt clean

退出当前 rootfs

exit

5.打包并创建 Docker 镜像(前置条件:当前系统已经配置了 Docker 运行时环境)

sudo tar -C /opt/new_os/ -c . | sudo docker import - new_os

测试

sudo docker run new_os cat /etc/lsb-release

3. 发布到仓库

1.发布到网上仓库(以发布到官方仓库为例,私有仓库请自行上传)

#sudo docker login shibingli@yeah.net

……

#sudo docker tag new_os shibingli/new_os

#sudo docker push shibingli/new_os

2.将创建的镜像推送到本地仓库

2.1 修改tag

docker tag   仓库IP地址:端口/镜像名

sudo docker tag new_os 10.108.113.59:5000/ubuntu16.04

2.2 推送到本地仓库

docker push tag名

3.补充,如果要把当前的系统环境打包为容器基础镜像,主要是 rootfs 的处理,可以参考以下命令

tar --numeric-owner --exclude=/proc --exclude=/sys -cvf new_os.tar /

cat new_os.tar | docker import - new_os

sudo tar --numeric-owner --exclude=/proc --exclude=/sys -C / -c . | sudo docker import - new_os

4. 简易的镜像保存与导出

保存,加载镜像命令:

docker save imageID > filename

docker load < filename

通过image保存的镜像会保存操作历史,可以回滚到历史版本。

保存,加载容器命令:

docker export containID > filename

docker import filename [newname]

通过容器保存的镜像不会保存操作历史,所以文件小一点。

如果要运行通过容器加载的镜像, 需要在运行的时候加上相关命令。

比如我通过容器加载了一个ubuntu系统的镜像,运行命令是这样的:

docker run -it ubuntu:container /bin/bash

5. 镜像的提交

docker commit -a "runoob.com" -m "my apache" a404c6c174a2  mymysql:v1

-a :提交的镜像作者;

-c :使用Dockerfile指令来创建镜像;

-m :提交时的说明文字;

-p :在commit时,将容器暂停。



作者:张晓天a
链接:https://www.jianshu.com/p/d082c2dbcc31


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP