您当前的位置: 首页 >  慌途L docker

Docker 镜像和容器的导入导出

慌途L 发布时间:2019-08-17 16:15:12 ,浏览量:2

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 8月  17 15:00 ./
drwxr-xr-x 26 root root      4096 8月  15 15:18 ../
-rw-r--r--  1 root root 261564928 8月  17 15:00 mysql-5.6.tar
可以将tar包拷贝下来,到各个支持docker的环境运行,用以下的导入方式即可 导入:docker load

命令:

docker load ]  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 8月  17 15:44 ./
drwxr-xr-x 26 root root      4096 8月  15 15:18 ../
-rw-r--r--  1 root root 256061952 8月  17 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 | 删除镜像和容器.
关注
打赏
1688896170
查看更多评论

慌途L

暂无认证

  • 2浏览

    0关注

    118博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文
立即登录/注册

微信扫码登录

0.2496s