问题标签 [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.
python - Docker 卷 - 需要权限才能写入数据库
我正在开发一个烧瓶服务器(在带有 python 3.5 的 virtualenv 中),它用作 REST API(仅用于烧瓶建议的开发)。一开始它连接到本地 sqlite 数据库,它会尽快提交任何数据库更改。现在我想在 docker 容器中运行所有东西,我想知道如何访问数据库,因为 sqlite 文件位于容器中。
所以我在 docker-compose 文件中创建了一个卷,它指向构建应用程序的 dockerfile。
Dockerfile:
.dockerignore
码头工人-compose.yml
如果我跑步,docker-compose up
我会得到以下信息
如果我在 output/reports.db 中创建数据库并再次启动 docker-compose,它会返回以下错误:
所以显然我没有写入文件的权限。我通过写入一个像这样安装的测试文件来测试这种行为:
错误信息:
让我们看看谁拥有这个文件:
事实证明,容器中没有用户 4262,但在主机上我的用户帐户有这个 id。所以我想我知道现在的问题是什么,但我不知道如何访问这些文件。我尝试在卷定义中添加“:rw”,但我仍然没有写权限。如果定义了卷,我如何告诉 docker 不要更改文件/目录所有者。
我正在考虑我的本地卷驱动程序的问题,但也许其他人已经遇到了这个问题并且可以告诉我如何配置我的图像以获得所需的权限。
问候,托马斯
docker info
docker-compose -v
lsb_release -a
python-2.7 - 使用 docker-py 从容器运行和共享主机文件夹
我想使用带有持久共享文件夹的 python docker 运行容器。执行此操作的命令行如下:
docker run --rm -ti -v /home/docker:/container_shared_folder ubuntu:14.04 bash -c my_command
你能帮我意识到使用 docker-py 吗?
问候 !
docker - docker-compose:为绑定挂载和托管挂载定义挂载
我正在使用 docker-compose 来定义我的服务。在 docker 中,docker volume 有两个概念。首先是关于bind mount
:挂载在主机存储上。
其次是关于managed mount
:抽象存储,不依赖于主机。
我想将这些概念映射到 docker-compose。这意味着我如何定义bind mount
以及managed mount
何时使用 docker-compose。
wordpress - 错误:在文件 './docker-compose.yml' 中,卷必须是映射而不是字符串
问题: 为什么会出现此错误?
错误:在文件“./docker-compose.yml”中,卷“mariavolume”必须是映射而不是字符串。
我的 docker-compose 文件几乎与这个文件相同:https ://docs.docker.com/compose/wordpress/
docker - Docker卷存储复制
我正在运行 ElasticSearch 的 dockerized 版本,并使用卷将 ElasticSearch 目录映射到 docker 外部。
我的问题是 docker 容器(在 /var/lib/docker/containers/ 中)的大小与 /path/to/outside/docker/container 目录中的文件的增长速度相同。我已经确认 docker 容器内的内容与 /path/to... 目录的内容相同。
这种数据重复正常吗?
附上 Docker 信息:
docker - 无法使用 Rex-Ray 和 VirtualBox 媒体存储将持久卷挂载到 Docker 容器 - “无效的托管对象引用”错误
我正在尝试使用 Rex-Ray 插件将数据卷安装到 docker 容器。我选择了 VirtualBox Media 作为存储提供商。
我正在使用的版本是:
- 码头工人 1.12.5
- Rex-Ray 0.6.3 和 libStorage 0.3.5
- VirtualBox 基础包 5.1.12
设置:
- 一台在 VirtualBox 中运行的 CentOS 7 虚拟机
- 在 CentOS 7 虚拟机中运行的 Docker 1.12.5
- Rex-Ray 在 CentOS 7 VM 中安装并运行
- Mac OS X 10.12.1 主机
在 Mac OS 主机上:
1. 我关闭了 VirtualBox SOAP API 身份验证VBoxManage setproperty websrvauthlibrary null
2. 我启动 VirtualBox SOAP API
vboxwebsrv -H 0.0.0.0 -v
以允许 Rex-Ray 与 VirtualBox 通信
在 CentOS 7 VM 中,我正在执行以下操作(以 root 身份):
1. 启动 Dockersystemctl start docker
2. 创建 Rex-Ray/etc/rexray/config.yml
文件:
其中endpoint
是 VirtualBox SOAP API 在 Mac OS X 主机上运行的 IP,并且是 Mac OS X 主机上volumePath
的现有文件夹,创建后将在其中存储卷
此配置文件采用与https://github.com/codedellemc/labs/tree/master/setup-virtualbox-dockermachine上的 Dell EMC 教程中相同的格式
3. 使用启动 Rex-Ray 服务rexray start
4. 创建一个 1GB 的卷
docker volume create -d rexray --name pg_data --opt=size=1
5. 尝试使用官方postgres
镜像运行 Postgres docker 容器。之前创建的rexray
卷被挂载到/var/lib/postgresql/data
Postgres 容器中的目录:
docker run -dit --name pg -e POSTGRES_PASSWORD=mysecretpassword --volume-driver=rexray -v pg_data:/var/lib/postgresql/data postgres
容器无法启动,我收到以下错误
Error response from daemon: VolumeDriver.Mount: {"Error":"VirtualBox error: Invalid managed object reference """}
我的 VirtualBox 存储设置如下图所示:
非常感谢任何帮助
mysql - 使用 docker-compose 时未在 MySQL 中创建用户
这是我在 docker-compose 创建的容器中看到的:
因此dbuser
即使$MYSQL_USER
设置正确,也不会出现在 users 表中。
在docker-compose.yml
我有这个:
我希望dbuser
自动创建,但这并没有发生。
如果它们不存在,我还有一个sql
文件来创建我的数据库和表,但现在 tomcat 无法连接到我的数据库。
与此问题相同的症状,但我已经在为我的用户名/密码使用字典。
更新:
我越来越近了。当在容器内时,我手动做了:
然后在MySQL
表中创建了用户,我能够将我的应用程序部署到我的tomcat
服务器,并且我没有收到关于dbuser
被拒绝访问的错误。
那么,为什么我必须自己运行这个命令,它应该由 docker-compose 运行,根据Initializing a fresh instance下的mysql docker 文档。
amazon-web-services - 用于 AWS ECS 时的存储要求
我已经为我们的应用程序设置了 AWS EC2 容器服务,并且似乎 AWS强制您为linux OS设置一个卷,为docker设置另一个卷(默认情况下)。有没有办法解决?
为什么它必须至少为 22GB?我尝试降低到 10 和 15 GB,但实例甚至无法启动......
有任何想法吗?
docker - 使用 rsync 在分区之间复制 docker 映像文件夹
我想将我的/var/lib/docker
数据移动到另一个地方,为了安全起见,我想使用rsync
.
但是数据是用稀疏文件存储的,rsync 似乎不能正确处理它。
什么是正确的参数rsync
?
-a
正确保留 uid/gid+rights-S
有效处理稀疏文件,但 rsync 似乎永远不会结束
如果没有-S
, rsync 会尝试复制比原始位置更多的数据(48G 分区上的 100G)。有了-S
,我似乎在大约 10G 之后永远被卡住了。
docker - 在 docker 数据容器与卷中部署 Web 应用程序
我对不应该使用数据容器的普遍共识感到困惑。我有我想要完成的特定用例。
我想拥有 docker nginx 容器,并在其后面有一些其他带有应用程序的容器。要运行我的应用程序的最新版本,我想从我的私人 Docker 注册表下载现成的容器。该应用程序现在是纯静态的 html、javascript 的东西。
所以我的计划是创建将保存文件的 docker 映像,并将在某些 /webapp 文件夹中指定一个命名卷。nginx 容器将为这个卷提供服务。我看不到任何其他方式如何以“docker containerized”方式将一堆文件移动到远程系统。我实际上不是在创建受诅咒的数据容器吗?
无论如何,在应用容器交换期间会发生什么?当我停止应用程序容器时,卷仍然可以访问,因为它被放置在主机上。当我拉动并启动新版本的应用程序容器时。该卷将再次创建并使用存储在同一位置的图像文件进行预归档,替换主机上的内容,因此 nginx 容器将从现在开始提供应用程序的新版本。对吗?当我从 nginx 容器中引用尚不存在的卷时会发生什么。
似乎命名值不会自动与图像的内容一起归档。我也不确定如何在 docker 文件中创建命名卷,因为从这里获取的语法不起作用