Docker 镜像和容器的导入导出


Docker 镜像和容器的导入导出


以下都以mysql镜像mysql容器为例

一、镜像

已经拉取好mysql:5.6的镜像

root@ubuntu-VirtualBox:/# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               5.6                 732765f8c7d2        3 days ago          257MB

导出:docker save

命令:

docker save > mysql-5.6.tar mysql:5.6

docker save -o mysql-5.6.tar mysql:5.6
  • -o>都表示输出到具体文件
  • mysql-5.6.tar:表示导出的目标文件,也可以指定到具体的目录下,自己定就行,这里表示当前目录下
  • mysql:5.6:表示镜像的名称和版本号,即上面拉取的镜像

导出成功,结果如下:

root@ubuntu-VirtualBox:/# ll
total 255452
drwxr-xr-x  4 root root      4096 817 15:00 ./
drwxr-xr-x 26 root root      4096 815 15:18 ../
-rw-r--r--  1 root root 261564928 817 15:00 mysql-5.6.tar
可以将tar包拷贝下来,到各个支持docker的环境运行,用以下的导入方式即可

导入:docker load

命令:

docker load < mysql-5.6.tar

docker load -i mysql-5.6.tar
  • -i<都表示文件的输入,会将镜像及相关元数据,包括tag信息导入到新生成的镜像中
  • mysql-5.6.tar:表示要导入的目标文件,也可以指定具体目录下的某个文件,这里表示当前目录下

导入成功,结果如下:

root@ubuntu-VirtualBox:/# docker load < mysql-5.6.tar
8fa655db5360: Loading layer [==================================================>]  58.48MB/58.48MB
f5741d086b76: Loading layer [==================================================>]  338.4kB/338.4kB
9f77b78f01a7: Loading layer [==================================================>]  10.44MB/10.44MB
7f33ce1066af: Loading layer [==================================================>]  4.472MB/4.472MB
1dd5f3e365cf: Loading layer [==================================================>]  1.536kB/1.536kB
e414da892acb: Loading layer [==================================================>]  41.24MB/41.24MB
2e98364e9176: Loading layer [==================================================>]  32.77kB/32.77kB
7ca570926bcb: Loading layer [==================================================>]  3.584kB/3.584kB
0a260f19ebfc: Loading layer [==================================================>]  146.5MB/146.5MB
7f2ea9fb03d6: Loading layer [==================================================>]  9.728kB/9.728kB
f0f88667dee9: Loading layer [==================================================>]  1.536kB/1.536kB
Loaded image: mysql:5.6

二、容器:容器导出之后再导入,是一个镜像

上面的第一步我们已经拉取了镜像,使用下面的命令运行:(设置挂载目录和root用户的密码:huangtuL@123

docker run -d \
-p 3306:3306 \
--name mysql \
-v /data/mysql:/data/mysql \
-v /data/mysql/conf:/etc/mysql/conf.d \
-v /data/mysql/logs:/logs \
-v /data/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=huangtuL@123 \
mysql:5.6

可以看到

root@ubuntu-VirtualBox:/# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                            NAMES
30abdab7b36f        mysql:5.6           "docker-entrypoint.s…"   28 minutes ago      Up 28 minutes       0.0.0.0:3306->3306/tcp                           mysql


导出:docker export

命令:

docker export mysql > mysql-container.tar
  • docker export 容器名称或容器ID 导出的容器tar包名称
  • 将上面名称为mysql的容器,导出为mysql-container.tar
  • >号左边可以是容器名称容器ID>号右边是自己定义导出到哪个目录下的那个tar文件

导出成功,结果如下:

root@ubuntu-VirtualBox:/# ll
total 245516
drwxr-xr-x  4 root root      4096 817 15:44 ./
drwxr-xr-x 26 root root      4096 815 15:18 ../
-rw-r--r--  1 root root 256061952 817 15:45 mysql-container.tar

导入:docker import

命令:

docker import mysql-container.tar mysql/container:1.0
  • docker import 导出的容器tar包 镜像名称:版本

导入成功,结果如下:(导入成功是一个镜像,但是并不能完整的运行成容器,后面总结说

root@ubuntu-VirtualBox:/# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql/container     1.0                 650e8860a40c        8 seconds ago       251MB

总结:

1.镜像导出/导入命令:docker save / docker load
2.容器导出/导入命令:docker export / docker import

注意:
1.1 用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以 使用 docker import 来导入一个容器快照到本地镜像库。
1.2 这两者的区别在于容 器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状 态),而镜像存储文件将保存完整记录,体积也要大。
1.3 此外,从容器快照文件导入 时可以重新指定标签等元数据信息。

简单来说,镜像导出导入会保留完整的信息,容器的导出导入不能保存完整的信息,即最后将容器导入并运行,也会因为相关文件信息缺失出现问题。

具体到底是导出镜像还是导出容器,根据自己的情况而定。如果是容器的话,感觉把东西都配置好,然后后面的使用会更方便,但是博主也没有试出来,留给大家去探索吧。


推荐我的其他文章:Docker | 删除镜像和容器.

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值