当前位置: 首页 > 面试题库 >

在Docker中将数据添加到现有命名卷的正确方法是什么?

须捷
2023-03-14
问题内容

我以旧的方式使用Docker和卷容器:

docker run -d --name jenkins-data jenkins:tag echo "data-only container for Jenkins"

但是现在我通过创建命名卷更改为新方法:

 docker volume create --name my-jenkins-volume

我将此新卷绑定到新的Jenkins容器。我只剩下一个文件夹,其中有/var/jenkins_home我以前的jenkins容器的文件夹。(通过使用docker cp)现在,我要用该文件夹的内容填充新的命名卷。

我可以复制该文件夹的内容到/var/lib/jenkins/volume/my-jenkins-volume/_data吗?


问题答案:

可以 数据无疑直接复制到/var/lib/docker/volumes/my-jenkins-volume/_data,但这样做你:

  • 依靠对Docker主机的物理访问。如果您正在与远程docker API进行交互,则此技术将无效。

  • 将来,依赖于卷实现的特定方面可能会发生变化,从而破坏您依赖它的任何流程。

我认为您最好依靠命令行客户端使用docker api可以完成的事情。最简单的解决方案可能只是使用一个辅助容器,例如:

docker run -v my-jenkins-volume:/data --name helper busybox true
docker cp . helper:/data
docker rm helper


 类似资料:
  • 我创建了一个Docker容器,只需在Ubuntu上安装Docker并执行以下操作: 我立即开始安装Java和一些其他工具,花了一些时间与它,并停止了容器通过 然后我想增加一个卷,并意识到这并不像我想的那样简单。如果我使用,那么我最终会得到一个新的容器,因此我必须安装Java并执行之前已经执行的操作,只需要到达一个具有已装入卷的容器。 所有关于从主机装入文件夹的文档似乎都暗示装入卷是创建容器时可以完

  • 问题内容: 我有一个Docker容器,它是通过在Ubuntu上安装Docker并执行以下操作而创建的: 我立即开始安装Java和其他一些工具,花了一些时间并通过以下方式停止了该容器 然后,我想添加一个卷,并意识到这并不像我想象的那样简单。如果我使用了,那么我将得到一个全新的容器,因此我将安装Java并做我已经做过的事情,然后再到达一个具有已安装卷的容器。 有关从主机安装文件夹的所有文档似乎都暗示了

  • 我有一个现有的spring boot项目和一个数据库。现在,我想添加liquibase来处理进一步的数据库迁移。做这件事的正确步骤是什么? 我已经跟随本文添加liquibase并生成Changelog。我发现的大多数文章都在讨论从零开始在项目中使用liquibase,或者对实现并不太详细。到目前为止,我已经完成了以下工作: 在src/main/resources下添加了 更新了src/main/r

  • 问题内容: 我在Java应用程序中有成百上千的应用程序,我想添加所有这些来 设置 文本的“ 水平对齐” ,并在每个这些文本字段上 添加FocusListener 。因此,我做了这种方法,效果很好。但是我只是想知道这种正确的方法还是其中存在错误,或者我违反某种OOP规则? 这是代码 并将此方法应用于我的文本字段 现在,当我运行代码时,它非常有用,只是想知道这是否正确,如果不正确,那么当您必须在数百个

  • 我正在通过使用Laravel作为后端开发来创建一个电子商务移动应用程序。 方案:我有一个Product表,其中存储了有关产品的一些信息。每当用户购买一个产品,他将得到一个购买历史记录(它将显示产品信息)将被存储到数据库中。所以当卖家更新他们的产品信息时,用户购买历史记录的产品信息不会受到影响。 问题:如果我只是简单地创建一个用户的购买历史记录表来存储每个用户的记录,我认为这将在数据库中需要大量的空

  • 我正试图在Android Studio项目中添加库,但我得到了一个错误: 错误:找不到名称为“default”的配置。 我所做的只是遵循堆栈溢出的教程和指南 null 图书馆链接