问题标签 [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 投票
1 回答
704 浏览

amazon-ec2 - 无法将 HOST 文件夹挂载到 Amazon Docker 容器中?

我正在使用 EC2 实例来运行 docker。在使用 OSX 的本地机器上,我使用 docker 机器来创建容器和卷。但是,当我尝试将本地文件夹安装到任何容器时是不可能的。

使用第一个命令,我创建了一个仅数据容器,我正在执行第二个命令以进入一个容器,该容器应该具有仅数据容器卷和我正在尝试挂载的容器,但是当访问它时,文件夹 /备份为空

我做错了什么?

编辑:我正在尝试挂载一个主机文件夹,以便将备份的数据从我的 PC 恢复到容器。在那种情况下,会有什么不同的方法?

我应该尝试使用 Flocker 吗?

0 投票
0 回答
249 浏览

docker - 启动 Docker 容器来处理 HTTP 请求

我正在构建一个 Web 应用程序,用户可以在其中管理项目中的文件。每个用户可以有多个项目,每个项目可以有多个文件。我已经使用 Docker 实现了这一点,其中每个项目都是一个 Docker 卷。当用户点击 webapp 界面中的一个按钮来修改他们项目中的文件时,web 服务器会配置并启动一个 worker(它是另一个 Docker 实例)来修改 Docker 卷中的文件。到目前为止,这一切都很好。

但是,现在我想通过 HTTP 提供这些项目文件。我想到的策略是:

  1. Web 服务器(如 nginx)接受来自用户的传入 HTTP 请求
  2. Web 服务器检查传入的请求以确定正在请求哪个项目。例如,如果 URL 是sparkle-pony.myapp.com,那么我们知道sparkle-pony正在请求该项目。如果这个项目不存在,nginx 会做出404 Not Found响应。
  3. Web 服务器还会检查用户是否已登录,以及该登录用户是否有权查看项目。如果不是,则 Web 服务器以403 ForbiddenHTTP 响应进行响应。
  4. Web 服务器配置并启动一个新的 Docker 容器,可能是另一个 nginx 进程。此配置的一部分包括将正确的 Docker 卷安装到新容器上。我们将这个新启动的容器称为“内部”容器,将现有容器称为“外部”容器。
  5. 外部容器要么将此 HTTP 请求传递给内部容器,要么充当内部容器响应的代理。
  6. 内部容器可以访问项目的正确 Docker 卷并确保请求用户具有正确的权限,检查 URL 路径并从 Docker 卷中提供正确的项目文件。在请求得到适当处理后,内部容器关闭。

所以,说了这么多,我有三个问题:

  1. 这是一个合理的策略吗?它确实涉及为每个传入的 HTTP 请求启动一个新的 Docker 容器,但我认为这没关系......
  2. 将 HTTP 请求从一个容器传递到另一个容器的最佳方法是什么?或者外部容器是否必须代理来自内部容器的响应?
  3. 有人可以提供一些关于如何设置这样的项目的指示或示例吗?可能有一些我还不知道的工具或技术。

谢谢!

0 投票
2 回答
5445 浏览

docker - 更新映像时的 Docker 卷

我是 Docker 的新手,我正在努力更好地理解 Volumes 主题。在这里,我看到:

  • 创建容器时会初始化卷。如果容器的基础映像包含指定挂载点的数据,则在卷初始化时,现有数据将复制到新卷中。(请注意,这不适用于挂载主机目录。)
  • 数据卷可以在容器之间共享和重用。
  • 直接对数据卷进行更改。
  • 更新映像时不会包括对数据卷的更改。
  • 即使容器本身被删除,数据卷仍然存在。
  • 数据卷旨在持久化数据,独立于容器的生命周期。因此,当您删除容器时,Docker 永远不会自动删除卷,它也不会“垃圾收集”不再被容器引用的卷。

这很清楚,除了这个:

  • 更新映像时不会包括对数据卷的更改。

我真的很难更好地理解这一点。谁能给我一些更清晰的概述,可能还有一些基本的例子?

谢谢!

0 投票
0 回答
506 浏览

docker - 在正在运行的容器中重新挂载卷

出于开发目的,我在 OSX 中运行的 VirtualBox 中使用 docker compose。为了开始魔法,我运行了这样的东西(dkc=docker-compose

我的 docker compose 文件将是这样的:

基础.yml

发展:

这是一个 PHP+MySql 应用程序

在开发过程中,我希望使用已安装的 PHP 代码更新卷,以反映我的./padeltotal文件夹中的更改。

已安装卷的默认行为应反映 HOST 文件夹。但是,在 OSX 中不是这样工作的

我再说一遍,这是出于开发目的,对于生产模式,我什至不使用 docker compose

有没有办法重新安装卷?

有什么不同的方法?

0 投票
5 回答
20988 浏览

node.js - node_modules 上的 docker-compose 卷但为空

我对 Docker 很陌生,我想在我的计算机上映射 node_modules 文件夹(用于调试目的)。

这是我的 docker-compose.yml

我使用 Docker for Mac。当我运行docker-compose up -d一切正常时,它会在我的计算机上创建一个 node_modules 文件夹,但它是空的。我进入容器的 bash 和 ls node_modules,所有的包都在那里。

我如何才能在我的计算机上获取容器上的内容?

谢谢

0 投票
3 回答
16805 浏览

docker - Docker命名卷不更新

我对如何使用命名数据卷(而不是数据容器)感到困惑。

我有一个app_src安装到的命名数据卷/usr/src/app使用 docker compose 文件但是,在(本地)对我的源代码进行更改后,构建映像不会更新卷。

我正在像这样构建图像,

docker-compose -f development.yml build并运行它docker-compose -f development.yml up -d

为了确认卷没有改变,我附加到正在运行的容器中,并且确实,源代码没有更新。

这是我的 docker compose 文件development.ymlDockerfile我的web服务。版本:'2'

我可以通过像这样安装主机来使其工作,

我在运行 docker 1.11.2 的 Ubuntu 16.04 上。我的理解错了吗?我确实查看了文档,但我可以找到任何可以很好地解释该卷的内容。

0 投票
2 回答
11023 浏览

docker - Docker 容器特定磁盘配额

每个 Docker 容器默认配置 10GB 磁盘空间,这是 devicemapper 的默认配置,适用于所有容器。如何将 inode 或磁盘配额限制为单个容器?

例如 :

容器 #1,磁盘 10GB 和 10000 Inode 值

容器 #2,磁盘 20GB 和 100000 Inode 值

注意:我知道我们可以通过使用更改默认值 10GB, docker -d--storage-opt但这适用于每个容器。

问题:如何限制单个容器的 inode 或磁盘配额?

0 投票
0 回答
204 浏览

docker-swarm - 如何为每个容器分配单独的卷?[码头工人群] [超级账本]

通常,Hyperledger 使用内部 /var/hyperledger/ 来存储每个容器的数据库。我们实际上需要将此目录挂载到容器之外。

在运行裸命令 docker run 或 docker-compose 时,我们可以单独指定此参数,甚至可以使用 docker compose 文件。

问题: 由于我可能需要使用 docker swarm (Docker 1.12) 尝试 Hyperledger,并且每个 Hyperledger 容器不得与任何其他容器使用相同的共享卷。那么,如何使用 Docker swarm 模式为每个容器指定分离的卷?

0 投票
0 回答
646 浏览

php - Docker 卷是空的,没有拾取任何文件

我正在尝试在本地(并最终在生产中)设置 Docker,但现在,我什至无法正确安装卷。我一直在关注这个教程,这显然已经过时了,因为 Docker 在过去一年中变化如此之快,教程和 git 问题都跟不上。

我的问题是,我的 docker 容器中的 index.php 文件在哪里?尽管在我的volumes指令中指定了它为什么没有出现?我什至在我的 nginx 配置中启用了自动索引,所以我实际上可以看到目录并证明我的怀疑。

我在 Windows 10 上

这是我的目录树:

这是我的 docker-compose 文件:

还有我的 Dockerfile:

然后我运行:

然后我点击 localhost 并获得 nginx 欢迎页面。但是 index.php 不存在!是什么赋予了?请教我,提前谢谢。

0 投票
3 回答
13922 浏览

docker - 使用 minikube 的 HostPath - Kubernetes

更新:我连接到 minikubevm,我看到我的主机目录已安装,但那里没有文件。此外,当我在那里创建文件时,它不会在我的主机中。任何链接都在它们之间

我尝试挂载一个主机目录以使用 kubernetes 开发我的应用程序。

正如文档所建议的那样,我正在使用 minikube 在我的电脑上运行我的 kubernetes 集群。目标是使用 docker 和 kubernetes 创建一个开发环境来开发我的应用程序。我想挂载一个本地目录,这样我的 docker 就会从那里读取代码应用程序。但这是行不通的。任何帮助将不胜感激。

我的测试应用程序(server.js):

我的 Dockerfile:

我的 pod kubernetes 配置:(pod-configuration.yaml)

我的文件夹是:

当我在没有 hostPath 卷的情况下运行我的 docker 映像时,它当然可以工作,但问题是每次更改时我都必须重新创建对开发来说真的不强大的映像,这就是我需要卷 hostPath 的原因。

任何的想法 ?为什么我没有成功挂载我的本地目录?

谢谢您的帮助。