首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >docker-编写未挂载到主机目录的卷

docker-编写未挂载到主机目录的卷
EN

Stack Overflow用户
提问于 2016-10-20 14:49:13
回答 3查看 35.7K关注 0票数 18

我正在使用docker进行部署,在其中我在本地构建映像,并从服务器上的docker-compose.yml集线器中提取映像。

除了构建vs拉动图像之外,卷配置也是一样的。

当地:

代码语言:javascript
运行
复制
app:
  build: .
  volumes:
    - "/data/volume:/volume"

在服务器上:

代码语言:javascript
运行
复制
app:
  image: username/repo:tag
  volumes:
    - "/data/volume:/volume"

在我的Dockerfile中:

代码语言:javascript
运行
复制
volume /volume

在本地,我的卷挂载到指定的目录,由应用程序创建的文件保存在容器外。然而,在部署服务器上,这种情况不会发生。

然而,文件是通过部署创建和持久化的,即使我的部署脚本运行docker-compose down -v,它可能会删除容器上的命名和匿名卷。

我肯定我做错了什么,但我看不出是什么。会不会是缓存问题?在初始部署时,卷配置不一样。

更多信息:

实际上,我似乎不能强迫在部署之间丢失图像。我跑了:

代码语言:javascript
运行
复制
docker-compose down -v --rmi all --remove-orphans
docker rm $(docker ps -a -q)
docker rmi $(docker images -q)
docker volume rm $(docker volume ls -q)

..。我以为这会给我留下一张重新部署的白纸,然后:

代码语言:javascript
运行
复制
docker pull username/repo:tag
docker-compose build --no-cache --force-rm
docker-compose up -d

..。应该在挂载卷中的文件仍然是,,而磁盘上的挂载dir中仍然没有任何文件。有什么想法吗?

更多的信息

在服务器上运行docker inspect <container>会产生如下的挂载配置:

代码语言:javascript
运行
复制
"Mounts": [
  "Source": "/data/volume",
  "Destination": "/volume",
  "Mode": "rw",
  "RW": true,
  "Propagation": "rprivate"
]

我注意到没有指定驱动程序,也不确定"rprivate“的意义,但是源和目的地似乎是正确的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-10-21 12:56:54

问题是,在码头服务/volume 启动后,我安装了一个EBS卷。

目录被安装在容器中,这就是为什么docker inspect看起来是正确的,但是它安装了由主机自己的挂载覆盖的预先存在的挂载点。

这个挂载是在Docker服务启动之后进行的,但在任何容器实际启动之前很久,所以我没有想到Docker可能不尊重前面发生的文件系统更改。

解决方案只是重新启动Docker服务。

票数 14
EN

Stack Overflow用户

发布于 2018-06-05 08:23:41

只想补充一下,如果您正在上开发,您应该显式地允许Docker访问您的C:驱动器。在这样做之前,任何映射的卷都将显示为空。

如果通过Hyper-V (Docker for Windows)运行:

  • 转到设置->共享驱动器,检查"C:“(来源)

如果通过VirtualBox运行:

  • VBoxManage sharedfolder add default --name c --hostpath /c --automount (来源)
票数 5
EN

Stack Overflow用户

发布于 2016-10-20 15:30:30

我建议在服务器上检查/data/卷上的权限,将其改为777临时权限,以便进行测试,如果这是问题的话。另外,用户服务器只是一台Linux机器?或者是一个虚拟环境,它是用坞机或类似的东西创建的。

您使用的卷不是匿名的或命名的,而是已挂载的主机。在docker中没有删除主机挂载卷的命令。

我还建议使用docker run而不是docker-compose来执行相同的过程,以丢弃docker-组合中的一个问题。

问候

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40157756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档