问题标签 [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.
docker - docker中持久化容器数据的不同策略
基本上我已经看到了四种在 docker 容器中管理数据的不同方法
- 使用容器内的“临时”卷 - 删除容器时会删除数据
- 将主机上的容器映射到 docker 容器中的卷 - 仅推荐用于测试目的
- 创建一个“数据容器”并将该容器卷映射到其他容器
- 创建一个 docker“数据卷”并将其映射到其他容器
据我了解,备选方案 3 和 4 是最推荐的方法,但我想知道不同方法的优点/缺点是什么?
一些代码来说明我的意思:
数据容器
数据量
在这里解释:https ://docs.docker.com/engine/reference/commandline/volume_create/
使用不同的“docker volume”命令来维护卷
用例
将 jira、bitbucket、jenkins、sonar 和 nexus 作为 docker 容器运行,并尽可能简单可靠地备份应用程序数据:-)
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/app
B。
请注意,在公共可访问端口和 nginx 容器之间有一个 HAProxy 层,该容器称为app
.
上面的任务正在使用 docker compose 文件进行编排,如下所示:
这目前仅在第一次构建 docker compose 文件时有效。创建卷后,卷中的文件不再更新。我读过命名卷在建立后无法更新,但我无法确认。我找到了涉及运行的解决方法,docker-compose rm --force && docker volume webapp_build rm
但如果可能的话,我不想杀死缓存的容器,因为 CI 服务会变得太慢。
如果我能澄清任何事情,请告诉我(我知道这里有很多活动部分)。请注意,我也在使用 docker 2 beta,尽管我看不出这会如何改变我在这里所做的任何事情。
docker - 将文件从 docker 容器公开到主机
我有一个包含 django 应用程序的 docker 容器。生成静态文件并将其复制到静态文件夹。
容器文件夹层次结构:
在我构建 docker 映像之前,我运行./manage.py collectstatic
所以静态文件在/var/django/static
文件夹中。为了公开应用程序并提供静态文件,我在主机上有一个 nginx。问题是,如果我在主机上的静态文件夹和指定文件夹之间创建一个卷,当我运行 docker 容器时,容器中的/var/django/static
文件夹会被删除(嗯,不是删除而是挂载)。有什么办法可以克服这个吗?如设置音量但告诉 docker 也获取当前文件?
go - Docker 错误:卷指定内存中不存在的驱动程序
根据文档,docker 卷有一个“内存”驱动程序: https ://docs.docker.com/registry/storage-drivers/inmemory/
纯粹出于测试目的,您可以使用内存存储驱动程序。该驱动程序是 storagedriver.StorageDriver 接口的实现,它使用本地内存进行对象存储。
但是当尝试像这样使用它时:
它给了我这个输出:
我错过了什么还是需要以某种方式安装“内存”驱动程序?
docker - 如何安装 docker 的 btrfs 卷插件?
运行命令时:
终端显示:
=====================
但如果先创建卷:
它将成功创建卷。现在,如果我尝试运行容器并创建一个新卷:
它显示(当然这是有道理的,因为已经创建了同名卷):
如果我尝试使用现有卷运行容器:
它返回:
=====================
谁能帮我告诉我如何为 docker 安装卷插件 btrfs?除了一些关于插件的介绍(但不是如何安装),我还没有找到任何有用的信息。提前致谢。
正如@forevergenin 在评论中所建议的,这是我的 docker 环境:
docker version
docker info
caching - 如何缓存 docker 构建的包管理器下载?
如果我composer install
从我的主机运行,我会点击我的本地作曲家缓存:
然而,当构建一个包含在其 Dockerfile 中的容器时:
我下载所有东西,例如:
这是意料之中的,但我喜欢避免它。即使在重建时,它也会再次下载所有内容。
我想为作曲家提供一个通用缓存,我也可以将其转发给其他 docker 项目。
我对此进行了调查,并找到了在 Dockerfile 中定义卷的方法:
我将它添加到我的Dockerfile
,并希望只下载一次文件,然后点击缓存。
然而,当我修改我的composer
,例如删除-o
标志并重新运行docker build .
时,我希望在构建时命中缓存,但我仍然再次下载供应商。
卷应该如何工作以在 docker 容器内拥有数据缓存?
docker - 在多个容器中使用相同的主机卷是否安全?
我可以安全地同时使用来自多个容器的同名数据卷吗?意思是,我可以执行以下操作:
不用担心数据损坏?
docker - 共享文件夹不包含数据
我创建了一个卷
现在想将此卷用作两个容器的共享文件夹。所以我的 docker-compose.yml 看起来像这样:
我可以看到app1
将文件写入/some/folder
但当我查看时app2
是/another/folder
空的。
我究竟做错了什么?
docker - Docker 共享卷创建
我正在尝试创建一个将在 2 个主机之间共享的 docker 卷。假设我有两台主机 A 和 B。使用以下命令在主机 A 上创建卷时:
检查体积后,结果如下:
我的问题是:为什么卷的 Mountpoint 目录不指向目录 /tmp/dir,而是指向默认的 docker 卷位置?我怎么能认为目录主机 B/tmp/dir 中的数据是可共享的?
提前致谢!