如何解决复制 docker 卷
我想更新一些容器。为了测试,我想创建相应卷的副本。为这个新卷设置一个新容器。
这和cp -r volumeOld volumeNew
一样简单吗?
或者我需要注意什么?
解决方法
要克隆 docker 卷,您可以将文件从一个卷传输到另一个卷。为此,您必须手动创建一个新卷,然后启动一个容器来复制内容。
有人已经为此编写了一个脚本,您可以使用它:https://github.com/gdiepen/docker-convenience-scripts/blob/master/docker_clone_volume.sh
如果没有,请使用以下命令(取自脚本):
# Supplement "old_volume" and "new_volume" for your real volume names
docker volume create --name new_volume
docker container run --rm -it \
-v old_volume:/from \
-v new_volume:/to \
alpine ash -c "cd /from ; cp -av . /to"
,
在 Linux 上,它可以像复制目录一样简单。 Docker 将卷保存在 /var/lib/docker/<volume_name>
中,因此您可以简单地将源卷的内容复制到另一个名称的目录中。见下文:
# Create a container with 'source_volume' mounted at
# /data and write 'foo' in /data/foo.txt
docker run --rm -v source_volume:/data alpine ash -c "echo 'foo' > /data/foo.txt"
# Read the contents of the 'foo.txt' file
cat /var/lib/docker/volumes/source_volume/_data/foo.txt
foo
# Create a copy of the volume and name it 'target_volume' (-p to preserve permissions)
cp -rp /var/lib/docker/volumes/source_volume /var/lib/docker/volumes/target_volume
# Run a new container,mounting the new 'target_volume' and
# reading contents of the /data/foo.txt
docker run --rm -v target_volume:/data alpine ash -c "cat /data/foo.txt"
foo
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。