我在生产中有3个正在运行的容器。我必须将存储策略移动到overlay2。我已经提交了我的容器,并将这些提交的映像保存为tar文件。现在我准备删除所有旧的docker内容,然后我将更改存储策略。有没有人做过这个关键的操作?有没有建议在安全区域?
tar
yhuiod9q1#
**注意:**由于图层的原因,您将无法访问所有当前镜像和容器!恢复您的更改将使您的旧镜像和容器再次可访问。您可以使用docker save IMAGE:TAG > IMAGE.tar.gz保存当前镜像,并使用docker load < IMAGE.tar.gz将其导入新的存储驱动程序。
docker save IMAGE:TAG > IMAGE.tar.gz
docker load < IMAGE.tar.gz
请按照以下步骤操作:
sudo systemctl stop docker
{ "storage-driver": "overlay2" }
启动docker:
sudo systemctl start docker
使用docker info验证存储驱动程序是否正在使用:
$ docker info ... Storage Driver: overlay2 ...
ql3eal8s2#
我第一次尝试实现它得到了这个:
failed to start daemon: error initializing graphdriver: overlay2: the backing xfs filesystem is formatted without d_type support, which leads to incorrect behavior. Reformat the filesystem with ftype=1 to enable d_type support.
在我的例子中,这是我的根文件系统;我创建了一个新的文件系统,并在复制了内容并完成后将/var/lib/docker符号链接到新的挂载
sudo semanage fcontext -a -e /var/lib/docker /vm0/docker
虽然它没有直接接触卷内容,但所有关于如何配置正在运行的容器的记录都丢失了,例如网络,端口Map等。尝试使用其docker-compose文件重新创建其中一个容器会重新下载公共映像,然后继续损坏其完整的卷。在另一个例子中,我导入了一个保存的图像,并在一个shell脚本中记录了它的调用,该脚本 Package 了“docker run....”-但失败了
docker: Error response from daemon: No command specified.
2条答案
按热度按时间yhuiod9q1#
**注意:**由于图层的原因,您将无法访问所有当前镜像和容器!恢复您的更改将使您的旧镜像和容器再次可访问。您可以使用
docker save IMAGE:TAG > IMAGE.tar.gz
保存当前镜像,并使用docker load < IMAGE.tar.gz
将其导入新的存储驱动程序。请按照以下步骤操作:
启动docker:
使用docker info验证存储驱动程序是否正在使用:
ql3eal8s2#
我第一次尝试实现它得到了这个:
在我的例子中,这是我的根文件系统;我创建了一个新的文件系统,并在复制了内容并完成后将/var/lib/docker符号链接到新的挂载
虽然它没有直接接触卷内容,但所有关于如何配置正在运行的容器的记录都丢失了,例如网络,端口Map等。尝试使用其docker-compose文件重新创建其中一个容器会重新下载公共映像,然后继续损坏其完整的卷。
在另一个例子中,我导入了一个保存的图像,并在一个shell脚本中记录了它的调用,该脚本 Package 了“docker run....”-但失败了