如何在不丢失容器数据的情况下从 docker 命名卷切换到基于路径的卷?
How to switch from docker named volumes to path based volumes without losing the container data?
我在 raspberry pi 上运行几个 docker 容器。所有容器都使用命名卷来存储持久数据。但是由于我经常需要从 docker 卷编辑配置文件等,我更喜欢使用基于路径的卷而不是由 docker.
管理的命名卷
我首先想到我可以从
复制所有内容
/var/lib/docker/volumes/
到我的主目录上的一个文件夹并删除所有容器并使用新的基于路径的卷重新运行它们。
但不幸的是,这似乎不起作用。例如,如果我使用基于新路径的卷(这只是我从 /var/lib/docker/volumes/ 复制的文件夹)重新运行 portainer,我需要创建一个新用户等,就好像 portainer 无法使用复制的数据一样。我已经使用chown为当前用户添加权限了。
希望有人能提供帮助。
好的,我注意到在命名卷的每个文件夹中都有一个名为“_data”的额外文件夹,我必须将所有内容从底层文件夹复制到正确的文件夹才能 运行包含命名卷数据的容器。
我仍然不知道这是否是从命名卷迁移到基于路径的卷的“正确方法”,但至少它现在有效。
为什么 docker 甚至创建一个名为 _data 的额外文件夹而不是仅使用命名卷的文件夹?
我在 raspberry pi 上运行几个 docker 容器。所有容器都使用命名卷来存储持久数据。但是由于我经常需要从 docker 卷编辑配置文件等,我更喜欢使用基于路径的卷而不是由 docker.
管理的命名卷我首先想到我可以从
复制所有内容/var/lib/docker/volumes/
到我的主目录上的一个文件夹并删除所有容器并使用新的基于路径的卷重新运行它们。 但不幸的是,这似乎不起作用。例如,如果我使用基于新路径的卷(这只是我从 /var/lib/docker/volumes/ 复制的文件夹)重新运行 portainer,我需要创建一个新用户等,就好像 portainer 无法使用复制的数据一样。我已经使用chown为当前用户添加权限了。
希望有人能提供帮助。
好的,我注意到在命名卷的每个文件夹中都有一个名为“_data”的额外文件夹,我必须将所有内容从底层文件夹复制到正确的文件夹才能 运行包含命名卷数据的容器。
我仍然不知道这是否是从命名卷迁移到基于路径的卷的“正确方法”,但至少它现在有效。
为什么 docker 甚至创建一个名为 _data 的额外文件夹而不是仅使用命名卷的文件夹?