我有一个Docker容器,其中的一个卷存储了我的大量Jenkins数据。我希望可以从主机访问这些文件。具体地说,我希望卷中的目录与主机上的某个文件夹共享。这是绑定挂载、docker卷还是服务创建问题?我怎样才能做到这一点呢?
发布于 2021-02-01 23:13:35
主机系统不能(*)直接访问卷数据。如果容器已经在运行,您可以将数据从容器docker cp到主机
docker cp jenkins:/var/jenkins_home ./jenkins如果不是,则可以使用Backup a container中的过程从指定的卷中复制它
docker run --rm -v jenkins_home:/jenkins -w / \
busybox \
tar cf - jenkins \
| tar xf -无论哪种方式,现在您的主机上都有一个目录./jenkins,您可以将它绑定挂载到一个新的容器中
docker run -v "$PWD/jenkins:/var/jenkins_home" ... jenkins/jenkins您可以删除现在未使用的卷。
如果具有基于合成的设置,则可以使用和docker-compose run来简化导出。似乎没有等同于docker cp的docker-compose,但由于您试图复制的数据位于命名卷中,因此这并不重要。
docker-compose run -w /var jenkins tar cf - jenkins_home | tar xf -
mv jenkins_home jenkins然后,将服务声明中的volumes:更改为引用./jenkins:/var/jenkins_home而不是命名卷,并删除顶级volumes:块中的命名卷。
(*)如果您在原生Linux主机上,Docker内部存储中有一个路径,该路径将卷内容作为普通目录包含,但查看Docker内部存储通常不是最佳实践。
https://stackoverflow.com/questions/65994183
复制相似问题