Docker是一个用于开发、运行和运送应用程序的开放平台。Docker可以让您将应用程序和基础架构分离,便于快速交付软件。通过Docker可以像管理应用高层许一样管理基础架构。通过Docker来实现运送、测试和部署代码,可以显著减少代码和生产中运行代码之间的延迟。
华纳云在本文将来分享关于保存和恢复映像和容器数据的方法。如想要重置vm磁盘或者把Docker环境转移到新计算机中,都可能需要这些方法。
首先如何备份?通过卷或绑定挂载来存储容器数据,可能不需要备份容器。要记住创建容器时使用的选择,或者想重新安装后使用相同配置来创建容器。需使用Docker Compose 文件。
保存数据,把容器提交图像:
docker container commit
提交容器就会把容器文件系统更改和容器的某些配置存储为本地映像。要注意,环境变量可能包含密码或代理身份验证等敏感信息,所以把生成的映像推送到注册表时要注意。另外还要关注附加到容器卷中的文件系统更改不包含在图像中,需要单独备份。
使用下面命令推送用户在本地构建并想保留的任何图像到 Docker Hub 注册表:
docker push
不应公开的访问图形,要保证将存储库的可见性配置为私有。或者使用以下命令把想保留的任何图形保存在本地tar文件。
docker image save -o images.tar image1 [image2 ...]
备份数据后,可以卸载当前版本的Docker Desktop 并 安装其他版本或将 Docker Desktop 重置为出厂默认设置。
恢复数据操作。用于 docker pull恢复您推送到 Docker Hub 的镜像。
如果您将图像备份到本地 tar 文件,请使用以下命令来恢复以前保存的图像。
docker run如果需要,使用或 Docker Compose重新创建容器 。
卷是用于持久保存docker容器生成和使用的数据的首选机制。虽然绑定挂载依赖于主机的目录结构和操作系统,但卷完全由Docker管理。和绑定挂载相比,卷优势是:更容易备份和迁移,可以 通过DockerCLI和Docker API管理卷,卷支持在Linux和Windows容器中运行,卷可以在多个容器之间安全的共享,卷驱动程序可支持把卷存储在远程主机或者云提供商上,加密卷内容或添加其他内容,新卷内容可以由容器预先填充。卷通常是比在容器的可写层中持久保存数据更好的选择,因为卷不会增加使用它的容器的大小,并且卷的内容存在于给定容器的生命周期之外。
如果卷驱动程序接受逗号分隔列表作为选项,则必须对外部 CSV 解析器中的值进行转义。要对 进行转义volume-opt,用双引号 ( ) 将其括起来,并用单引号 ( )"括起整个挂载参数。'
如,local驱动程序接受参数中以逗号分隔的列表形式显示挂载选项o。此示例显示了转义列表的正确方法。
docker service create \
--mount 'type=volume,src=<VOLUME-NAME>,dst=<CONTAINER-PATH>,volume-driver=local,volume-opt=type=nfs,volume-opt=device=<nfs-server>:<nfs-path>,"volume-opt=o=addr=<nfs-address>,vers=4,soft,timeo=180,bg,tcp,rw"'
--name myservice \
<IMAGE>
创建卷:
docker volume create my-vol
列出所有卷:
docker volume ls
local my-vol
检查卷:
docker volume inspect my-vol
[
{
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
"Name": "my-vol",
"Options": {},
"Scope": "local"
}
]
删除卷:
docker volume rm my-vol