问题标签 [docker-volume]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
322 浏览

docker - docker中持久化容器数据的不同策略

基本上我已经看到了四种在 docker 容器中管理数据的不同方法

  1. 使用容器内的“临时”卷 - 删除容器时会删除数据
  2. 将主机上的容器映射到 docker 容器中的卷 - 仅推荐用于测试目的
  3. 创建一个“数据容器”并将该容器卷映射到其他容器
  4. 创建一个 docker“数据卷”并将其映射到其他容器

据我了解,备选方案 3 和 4 是最推荐的方法,但我想知道不同方法的优点/缺点是什么?

一些代码来说明我的意思:

数据容器

在这里解释:https ://docs.docker.com/engine/tutorials/dockervolumes/#/creating-and-mounting-a-data-volume-container

数据量

在这里解释:https ://docs.docker.com/engine/reference/commandline/volume_create/

使用不同的“docker volume”命令来维护卷

用例

将 jira、bitbucket、jenkins、sonar 和 nexus 作为 docker 容器运行,并尽可能简单可靠地备份应用程序数据:-)

0 投票
1 回答
1462 浏览

nginx - 命名 Docker 卷以共享构建而不更新

我工作的公司的开发人员要求我用 Docker 做一些不同的事情,然后我也习惯了。目标是拥有 2 个具有以下职责的容器:

容器 A:节点容器,它将构建前端反应应用程序并将捆绑包放入名为app/dist/. 完成后,容器将停止运行。

容器 B:一个高山 nginx 容器,它将从/usr/share/nginx/html/app.

已在容器 A 中构建的文件将使用将安装<Container A>/app/dist到的卷提供给容器<Container B>/usr/share/nginx/html/appB。

请注意,在公共可访问端口和 nginx 容器之间有一个 HAProxy 层,该容器称为app.

上面的任务正在使用 docker compose 文件进行编排,如下所示:

这目前仅在第一次构建 docker compose 文件时有效。创建卷后,卷中的文件不再更新。我读过命名卷在建立后无法更新,但我无法确认。我找到了涉及运行的解决方法,docker-compose rm --force && docker volume webapp_build rm但如果可能的话,我不想杀死缓存的容器,因为 CI 服务会变得太慢。

如果我能澄清任何事情,请告诉我(我知道这里有很多活动部分)。请注意,我也在使用 docker 2 beta,尽管我看不出这会如何改变我在这里所做的任何事情。

0 投票
3 回答
9925 浏览

docker - 将文件从 docker 容器公开到主机

我有一个包含 django 应用程序的 docker 容器。生成静态文件并将其复制到静态文件夹。
容器文件夹层次结构:

在我构建 docker 映像之前,我运行./manage.py collectstatic所以静态文件在/var/django/static文件夹中。为了公开应用程序并提供静态文件,我在主机上有一个 nginx。问题是,如果我在主机上的静态文件夹和指定文件夹之间创建一个卷,当我运行 docker 容器时,容器中的/var/django/static文件夹会被删除(嗯,不是删除而是挂载)。有什么办法可以克服这个吗?如设置音量但告诉 docker 也获取当前文件?

0 投票
1 回答
3273 浏览

go - Docker 错误:卷指定内存中不存在的驱动程序

根据文档,docker 卷有一个“内存”驱动程序: https ://docs.docker.com/registry/storage-drivers/inmemory/

纯粹出于测试目的,您可以使用内存存储驱动程序。该驱动程序是 storagedriver.StorageDriver 接口的实现,它使用本地内存进行对象存储。

但是当尝试像这样使用它时:

它给了我这个输出:

我错过了什么还是需要以某种方式安装“内存”驱动程序?

0 投票
1 回答
1359 浏览

docker - 如何安装 docker 的 btrfs 卷插件?

运行命令时:

终端显示:

=====================

但如果先创建卷:

它将成功创建卷。现在,如果我尝试运行容器并创建一个新卷:

它显示(当然这是有道理的,因为已经创建了同名卷):

如果我尝试使用现有卷运行容器:

它返回:

=====================

谁能帮我告诉我如何为 docker 安装卷插件 btrfs?除了一些关于插件的介绍(但不是如何安装),我还没有找到任何有用的信息。提前致谢。

正如@forevergenin 在评论中所建议的,这是我的 docker 环境:

docker version

docker info

0 投票
3 回答
11415 浏览

caching - 如何缓存 docker 构建的包管理器下载?

如果我composer install从我的主机运行,我会点击我的本地作曲家缓存:

然而,当构建一个包含在其 Dockerfile 中的容器时:

我下载所有东西,例如:

这是意料之中的,但我喜欢避免它。即使在重建时,它也会再次下载所有内容。

我想为作曲家提供一个通用缓存,我也可以将其转发给其他 docker 项目。

我对此进行了调查,并找到了在 Dockerfile 中定义卷的方法

我将它添加到我的Dockerfile,并希望只下载一次文件,然后点击缓存。

然而,当我修改我的composer,例如删除-o标志并重新运行docker build .时,我希望在构建时命中缓存,但我仍然再次下载供应商。

卷应该如何工作以在 docker 容器内拥有数据缓存?

0 投票
1 回答
748 浏览

docker - 在多个容器中使用相同的主机卷是否安全?

我可以安全地同时使用来自多个容器的同名数据卷吗?意思是,我可以执行以下操作:

不用担心数据损坏?

0 投票
1 回答
43 浏览

docker - 共享文件夹不包含数据

我创建了一个卷

现在想将此卷用作两个容器的共享文件夹。所以我的 docker-compose.yml 看起来像这样:

我可以看到app1将文件写入/some/folder但当我查看时app2/another/folder空的。

我究竟做错了什么?

0 投票
1 回答
534 浏览

docker - Docker 共享卷创建

我正在尝试创建一个将在 2 个主机之间共享的 docker 卷。假设我有两台主机 A 和 B。使用以下命令在主机 A 上创建卷时:

检查体积后,结果如下:

我的问题是:为什么卷的 Mountpoint 目录不指向目录 /tmp/dir,而是指向默认的 docker 卷位置?我怎么能认为目录主机 B/tmp/dir 中的数据是可共享的?

提前致谢!

0 投票
2 回答
1568 浏览

docker - 如何对 Docker 容器的数据量进行版本控制?

我想在 docker 容器中运行 Jenkins,根据我对这个线程的理解,管理容器数据的最佳实践是使用 docker 的新卷 API(这样我就可以在不丢失数据的情况下更新 Jenkins 容器)

我担心会以某种方式丢失数据,所以我想使用版本控制系统(例如 Git)来存储它。这样,我可以跟踪团队构建中所做的更改,并在有人搞砸时让事情重新开始。

我不清楚的问题是如何对数据进行版本控制?此外,我希望能够让我的容器在闪存中运行并恢复数据(一个简单的脚本/命令)

请注意,版本控制系统不是这里的问题,我正在寻找一种处理容器数据(卷)的最佳实践,以允许跟踪更改并在出现问题时快速恢复“系统”。