Docker—备份、恢复及迁移

用容器生成镜像

[root@git docker]# docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS                 PORTS                                                            NAMES
e950a988d058        twang2218/gitlab-ce-zh   "/assets/wrapper"   2 hours ago         Up 2 hours (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:2222->22/tcp   gitlab-wahaha
[root@git docker]# docker commit e950a988d058 gitalb-zh
sha256:dd61a1ec3cdc782d6076e47afc10a35e19700a9ad56df6630a8c1de1c1c105c3
[root@git docker]# docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
gitalb-zh                          latest              dd61a1ec3cdc        6 seconds ago       1.72 GB
docker.io/twang2218/gitlab-ce-zh   latest              1f71f185271a        9 days ago          1.63 GB

 

备份:

查看镜像

[root@git docker]# docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
docker.io/twang2218/gitlab-ce-zh   latest              1f71f185271a        9 days ago          1.63 GB
docker save -o [tar包真实路径] [镜像名 ](ID也可以)
ocker save -o /opt/docker-gitlab-ce-zh.tar  docker.io/twang2218/gitlab-ce-zh

恢复:

docker load -i [tar包真实路径]

docker load -i /opt/docker-gitlab-ce-zh.tar

导出:是根据容器的  ID  进行导出镜像

[root@git docker]# docker ps  -a
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS                 PORTS                                                            NAMES
e950a988d058        twang2218/gitlab-ce-zh   "/assets/wrapper"   3 hours ago         Up 3 hours (healthy)   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:2222->22/tcp   gitlab-wahaha
[root@git docker]# docker export e950a988d058 > /opt/gitlab-zh.tar
[root@git docker]# ls -lh /opt/
total 3.1G
-rw------- 1 root root 1.7G Mar 20 02:16 docker-gitlab-ce-zh.tar
-rw-r--r-- 1 root root 1.5G Mar 20 02:38 gitlab-zh.tar

可以看出导出的镜像比备份的镜像小很多,是因为导出的镜像没历史数据,不能回滚

导入:

[root@git docker]# docker import - git-mast < /opt/gitlab-zh.tar
 git-mast镜像名(注意中间的  -   )
[root@git docker]# docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
git-mast                           latest              6dfab05161f9        14 seconds ago      1.49 GB
docker/gitlab-zh                   latest              aebe317ba2a3        16 minutes ago      1.72 GB
gitalb-zh                          latest              dd61a1ec3cdc        25 minutes ago      1.72 GB
docker.io/twang2218/gitlab-ce-zh   latest              1f71f185271a        9 days ago          1.63 GB

注:导出 export 与 保存 save 的区别

 (1).export导出的镜像文件大小  小于 save保存的镜像

 (2).export 导出(import导入)是根据容器拿到的镜像,再导入时会丢失镜像所有的历史,所以无法进行回滚操作(docker tag <LAYER ID> <IMAGE NAME>);而save保存(load加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。(查看方式:docker images --tree)

 

posted @ 2018-03-20 14:54  淼如  阅读(4708)  评论(0编辑  收藏  举报