当前位置: 首页 > 知识库问答 >
问题:

如何将卷挂载添加到正在运行的postgreSQL容器中?

邵璞
2023-03-14

我遵循了以下步骤:如何将卷添加到现有的Docker容器(在容器上运行Docker Commit以将其另存为映像,并基于该映像旋转另一个容器,其中挂载了命名卷)。来自第一个容器的所有数据文件都存在于第二个容器的/var/lib/postgres/data中。

但是,当我试图查询第二个postgres数据库时,我看不到第一个容器中的任何表。几天来一直在尝试解决这个问题,但没有成功,我是不是遗漏了什么(安装一个卷是否会使/var/lib/postres/data中的现有数据变得模糊不清)?

共有1个答案

颜畅
2023-03-14

提交将不起作用,因为DockerFile中定义了卷。

卷在许多情况下很有用,例如,用于运行数据库存储。然而,由于卷不是容器的“一部分”,这使得容器不再具有可移植性--这似乎与“构建一次……运行任何地方”的口号直接冲突。

docker提交带有卷的数据容器

您可以尝试的一个选项是将数据文件夹从现有容器复制到主机,然后使用挂接路径启动该容器。

docker cp my_db_cotainer:/var/lib/postgresql/data  db_data

然后用此路径启动一个新容器,这样它将包含与前一个相同的数据

docker run -d --name some-postgres -v $PWD/db_data/:/var/lib/postgresql/data postgres
docker cp some-mysql-old:/var/lib/mysql db_backup
docker run --rm --name some-mysql-new -v $PWD/db_backup:/var/lib/mysql  -it mysql
 类似资料:
  • 我想挂载我的usb驱动器到一个正在运行的docker实例,手动备份一些文件。 我知道的特性,但这会创建一个新的容器。注意:它是一个nextcloudpi容器。

  • 问题内容: 我对Docker中的整个数据量过程有疑问。基本上,这里有两个Dockerfile及其各自的运行命令: Dockerfile 1- 命令1- Dockerfile 2- 命令2- 因此,奇怪的是第一个dockerfile和命令按预期工作。docker守护程序将目录从容器装载到主机的位置。因此,我可以根据需要编辑配置文件,它们将在重新启动后保留在容器中。 但是,对于第二个dockerfil

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

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

  • 我使用命令在我的macOS Big Sur上运行带有Ubuntu Xenial映像的docker容器,它工作正常,给我一个Linux的终端。 然而,我想将一个卷附加到我的容器中,这样我就可以将我在ubuntu终端中所做的工作保存在Mac文件系统的容器中。为此,我尝试运行以下命令: sudo docker run-it ubuntu:xenial-v/Users/myname/Documents/U

  • 我正试图将一个持久卷装入windows容器中,但总是会出现以下错误: my PersistentVolumeClaim: 和我的容器的部署: 我做错了什么?有其他方法挂载卷吗?