1 场景及关键命令
场景
简要步骤
关键命令
备注
1
迁移镜像
原镜像打包为本地文件
新环境导入为镜像
docker save [镜像名称:tag] -o [tar包]
docker load -i [tar包]
以镜像层的形式保存为tar包
2
迁移容器a
保存容器至镜像
保存镜像至本地文件
导入为镜像
从镜像生成容器
docker commit [容器id] [镜像名称:tag]
docker save [镜像名称:tag] -o [tar包]
docker load -i [tar包]
docker run
3
迁移容器b
保存容器至本地文件
导入为镜像
从镜像生成容器
docker export [容器名称/id] -o [tar包]
docker import [tar包] [镜像名称:tag]
docker run
以文件的形式保存为tar包
4
从系统打包镜像
原系统打包为本地文件
导入为镜像
打包系统文件 tar ***
docker import [tar包] [镜像名称:tag]
注意:
1) 导入的新Docker镜像是否自带tag:
a) docker import 可以直接使用[镜像名称:tag]格式指定镜像名;
b) docker save使用[镜像名:tag]格式保存,docker load会自动加载tag,使用[镜像id]格式保存,docker load不会自动加载tag;
c) docker load不能对载入的镜像重命名,需使用docker tag;
2) save将镜像保存为tar包(场景2),镜像层之间有重复的文件,export将容器保存为tar包(场景3),非层结构;
3) 在容器中配置了基础环境,希望分发作为基础开发环境使用等,推荐用export(场景3)分享基础镜像;
4) save保存镜像,若save后指定容器id或名称,将只保存容器基于的镜像;
2 详细步骤
2.1 场景1-迁移镜像
原镜像打包为本地文件:
# docker save 711d6d1f32b3-o kylinv10sp2.tar
新环境加载:
# docker load -ikylinv10sp2.tar
# docker tag 711d6d1f32b3kylin:V10sp2
2.2 场景2-迁移容器a
- 容器打包为镜像(需暂停容器)
# docker commit 76471edf03ac kylin-migraphxtest:01
- 镜像打包为本地文件
#docker save kylin-migraphxtest:01 -okylin-migraphxtest.tar
新环境导入
docker load -i kylin-migraphxtest.tar
2.3 场景3-迁移容器b
# docker exportf42fbfc75aff -o kylin-migraphxtest.tar
# docker importkylin-migraphxtest.tar kylin:export
该镜像相比save后加载的镜像小1G左右
2.4 场景4-系统打包镜像
2.4.1 打包镜像文件
以麒麟系统为例:
- 创建目录
#mkdir /kylin-docker-fs
#cd /kylin-docker-fs
- 创建基础目录
#mkdir usr dev
#cp -a /usr/lib /usr/lib64/usr/bin /usr/share usr/
- 创建链接
#ln -s usr/lib lib
#ln -s usr/lib64 lib64
#ln -s usr/bin bin
- 复制配置及root目录
#cp -a /etc /root ./
裁剪
#rm -rf etc/profile.d/flatpak.sh etc/profile.d/gawk.csh etc/profile.d/gawk.sh etc/profile.d/lang.csh etc/profile.d/lang.sh etc/profile.d/system-info.sh
- 测试镜像目录
#chroot .
- 打包
#cd ..
#tar -C kylin-docker-fs/ -z-c . -f kylin-hg-docker.tar.gz
2.4.2 导入为Docker镜像
方法一(推荐):
# docker import kylin-hg-docker.tar.gzkylin:ori
或# catkylinv10sp2.tar | docker import - kylin:ori
方法二:
# docker import kylinv10sp2.tar
# docker tag a8c01ec994a6kylin:ori
版权归原作者 技术瘾君子1573 所有, 如有侵权,请联系我们删除。