06、container、image、文件的互相转化
1、情况说明
- image(又称为镜像):是通过
Dockerfilefile创建的,通过docker image ls查看; - container(容器):是 image 通过
docker container run [image]来生成; - 文件(就是文件):方便管理,适用于将一个服务器上的image转移/拷贝其他服务器上(虽然也可以通过传到 Docker 官方仓库来实现);
他们各有适用范围,但在某些情况下,需要互相转化。
2、image转container和文件
2.1 转container
之前提过,略;
2.2 转文件
命令:
docker save [image名] > [文件路径(需要是tar文件)]
说明:
[image名]:通过docker image ls来查询;[文件路径(需要是tar文件)]:将 image 打包为一个 tar 文件;- 然后就可以拷贝走这个 tar 文件了,至于如何转回 image,参考下面;
3、container转image和文件
3.1、转image
命令:
docker commit [containerID] [imagename]:[version]
说明:
docker commit:表示container转image,固定的,很好理解;[containerID]:一个容器的ID,可以是运行状态;[imagename]:转换后的 image 的名字,可以自定义,很好理解;:[version]:可选,tag,也可以认为是版本号,不加默认是latest,加了就是指定的tag;
示例:
docker commit f46b174f0c69 c2image:0.0.2
结果:
[root@qq20004604 ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
c2image 0.0.2 2b86002ebd4b 4 seconds ago 907MB
docker-demo-01-express 0.0.1 416f1050c9bf 21 hours ago 907MB
3.2、转文件
命令:
docker export [containerID] > [文件路径(需要是tar文件)]
说明:
docker export [containerID] >:都好理解,略略略;[文件路径(需要是tar文件)]:将容器打包为一个 tar 文件;- 容器打包成文件,比 image 打包成文件要小一些,因为它丢失了历史和数据元metadata;
4、文件转image和container
4.1、转image
基本说明:
- 【tar文件】可以是从 image 转来的,也可以是从 container 转来的;
- 这些【tar文件】都可以转为 image;
- 转换并不会带来之前的日志(指转换前的),所以如果需要日志,记得提前备份;
方法一:
命令:
docker load < [tar文件路径]
说明:
- 将 tar文件 转为 image;
- 转换完后,可以通过
docker images查看; - 这种方法似乎并不能指定转换结束后的 image 的名字;
方法二:
命令:
docker import [tar文件名] [imagename]:[version]
说明:
docker import:导入,固定的意思,略;[tar文件名]:就是来自于容器或者image压缩成的【tar文件】咯;[imagename]:导入后的 imagename,如果不写,那么最后名字和tag都将是<none>;:[version]:可选,tag名,如果不填,则默认为latest;
4.2、转容器
没必要,先转 image,再从 image 生成容器;
更多内容参见我的github项目:https://github.com/qq20004604/docker-learning
本文详细介绍了Docker中镜像(image)、容器(container)与文件之间的转换方法,包括镜像转容器、镜像转文件、容器转镜像、容器转文件、文件转镜像及容器的过程和命令。适合需要在不同服务器间迁移Docker资源的读者。
2820

被折叠的 条评论
为什么被折叠?



