Docker 映射容器目录启动,空目录无数据

2017-03-29 14:03:13 +08:00
 kkxxxxxxx

docker run -d -p 80:80 --name=website apache:latest sh 直接运行后,可以正常访问到容器 website /web/html 下的示例页面

docker run -d -p 80:80 -v /home/data:/web/html --name=website apache:latest sh 映射宿主目录 /data 到容器 website 的 /web/html 目录, 启动后 /data 和 /web/html 目录下都没有数据,空目录

环境 CentOS7 、 root 身份创建的容器,也没报错,有朋友知道这是什么情况吗

11520 次点击
所在节点    Docker
13 条回复
Sharuru
2017-03-29 14:16:57 +08:00
host 的目录权限也会影响到 container 内的读取,请确认。
aogg
2017-03-29 14:30:42 +08:00
目录后面要加 /
cloverstd
2017-03-29 15:05:47 +08:00
host 的目录挂载进去,容器里的目录会被 host 的目录里的内容覆盖掉
host 的目录如果不存在, docker 会创建一个 host 目录,再挂载到容器里
Bardon
2017-03-29 17:08:07 +08:00
因为你 /web/html 示例页面被 host 目录 /home/data 覆盖了呀...
你需要在你 host 目录 /home/data 创建示例页面,同时 uid gid 要重设为 /web/html 的权限
kkxxxxxxx
2017-03-29 17:39:19 +08:00
@Sharuru /home/data 目录权限 755,容器有自动创建宿主目录,改成 777 也没效果
@aogg 可以不加 /
@cloverstd 宿主目录 /home/data 由容器创建

不映射目录的情况下测试发现:
docker run -d --name=website apache:latest 正常访问容器 /web/html 示例页面
docker run -d --name=website apache:latest sh 启动后容器 /web/html 目录为空
kkxxxxxxx
2017-03-29 17:47:35 +08:00
@Bardon docker exec -t -i website sh 进去
ls: can't open '/web': Permission denied
cxbig
2017-03-29 17:52:05 +08:00
@kkxxxxxxx 你还是没有说清楚,你的 Host 机目录 /home/data 是否为空目录
如果 /home/data 是空的,那么挂载进去 /web/html 亦为空
如果 /home/data 有内容,挂载后 /web/html 还是空的,需要检查别的因素
从外向内 volume 挂载,内部原有内容将被覆盖,而不是内外同步
猜测你是想通过挂载,让内部 /web/html 原有内容出现在 Host 机 /home/data 里
kkxxxxxxx
2017-03-29 17:58:19 +08:00
@cxbig 宿主机 /home 下原来没有 data 目录, data 目录为容器映射时自动创建的,应该不存在内容被覆盖的问题, /home 目录权限 755
cxbig
2017-03-29 18:13:36 +08:00
@kkxxxxxxx 如果是这样,内外都是空的是正常情况
试着在 /home/data 创建个文件,再进去 container 看他们在不在 /web/html 里
kkxxxxxxx
2017-03-29 18:21:08 +08:00
@cxbig container /web 提示无权限操作
ls: can't open'/web': Permission denied
这个权限是指哪的权限?
host /home/data 755
container /web 755
cxbig
2017-03-29 18:31:02 +08:00
@kkxxxxxxx 那是内部权限,这个错误有点奇怪, container 里一般是 root 用户的,不应该有 Permission 这种问题
尝试在 docker run 命令里加一个参数 -w /web/html
kkxxxxxxx
2017-03-29 23:02:30 +08:00
@cxbig -w 后容器一启动就关闭,好郁闷,同样的命令在另外几台 Docker 上都正常,反倒是这台新装的 CentOS7 这么奇怪,是不是少装了什么东西
kkxxxxxxx
2017-03-30 15:46:53 +08:00
@Sharuru @aogg @cloverstd @Bardon @cxbig
感谢大家提供线索,原来是 selinux 的锅,已解决

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/351175

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX