用容器生成鏡像
[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)