Docker备份还原简介

一般而言,使用docker远端镜像仓库的话,基本不需要使用备份还原,但再某些情况下也是需要这些操作的,如对网络受限的主机进行部署或者基于安全考虑对本地仓库进行备份,就需要这些操作,总之Docker的备份还原还是十分简便的,这里也做一下记录。

备份镜像

一般迁移时使用,有图可能更直观,如下,可以使用镜像名+TAG,也可以使用镜像ID
docker-1

1
2
3
4
5
docker images #list images
docker history d86649f09ddb #查看这个镜像的历史,如果有需要可以导出之前版本的镜像
docker save -o /data/image_bak.tar docker.taiyouxi.net/ticore/testlink:1.0.1
#save usage: docker save -o /down_dir/your_tar_file_name image:TAG
#OR:docker save image:TAG > /down_dir/your_tar_file_name

备份容器

备份容器跟备份镜像有些细微的差别,首先需要容器commit成为image,如果必要可以对容器的启动配置也进行备份,然后就跟直接对镜像备份一样对新生成的镜像备份即可
docker-2

1
2
3
docker ps #list Running container
docker commit ${CONTAINER ID} new_images_name:version #将容器提交为镜像
docker rmi image_name:version #删除某个镜像

另外可以备份容器的运行配置

1
2
3
4
docker inspect d7796307dfb7 > /data/bak_container_config.json #备份配置
#PS:附送命令
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $INSTANCE_ID #获取IP地址
docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' $INSTANCE_ID #获取端口映射

还原镜像

还原也十分简单,在具备docker环境并运行docker的主机上,执行导入镜像命令即可

1
2
3
4
docker load -i /data/image_bak.tar
#OR
docker load < /data/image_bak.tar
docker images