首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使已存在的Docker卷可从主机访问?

如何使已存在的Docker卷可从主机访问?
EN

Stack Overflow用户
提问于 2021-02-01 22:09:35
回答 1查看 86关注 0票数 0

我有一个Docker容器,其中的一个卷存储了我的大量Jenkins数据。我希望可以从主机访问这些文件。具体地说,我希望卷中的目录与主机上的某个文件夹共享。这是绑定挂载、docker卷还是服务创建问题?我怎样才能做到这一点呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-01 23:13:35

主机系统不能(*)直接访问卷数据。如果容器已经在运行,您可以将数据从容器docker cp到主机

代码语言:javascript
复制
docker cp jenkins:/var/jenkins_home ./jenkins

如果不是,则可以使用Backup a container中的过程从指定的卷中复制它

代码语言:javascript
复制
docker run --rm -v jenkins_home:/jenkins -w / \
  busybox \
  tar cf - jenkins \
| tar xf -

无论哪种方式,现在您的主机上都有一个目录./jenkins,您可以将它绑定挂载到一个新的容器中

代码语言:javascript
复制
docker run -v "$PWD/jenkins:/var/jenkins_home" ... jenkins/jenkins

您可以删除现在未使用的卷。

如果具有基于合成的设置,则可以使用和docker-compose run来简化导出。似乎没有等同于docker cpdocker-compose,但由于您试图复制的数据位于命名卷中,因此这并不重要。

代码语言:javascript
复制
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内部存储通常不是最佳实践。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65994183

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档