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 身份创建的容器,也没报错,有朋友知道这是什么情况吗
1
Sharuru 2017-03-29 14:16:57 +08:00
host 的目录权限也会影响到 container 内的读取,请确认。
|
2
aogg 2017-03-29 14:30:42 +08:00
目录后面要加 /
|
3
cloverstd 2017-03-29 15:05:47 +08:00
host 的目录挂载进去,容器里的目录会被 host 的目录里的内容覆盖掉
host 的目录如果不存在, docker 会创建一个 host 目录,再挂载到容器里 |
4
Bardon 2017-03-29 17:08:07 +08:00
因为你 /web/html 示例页面被 host 目录 /home/data 覆盖了呀...
你需要在你 host 目录 /home/data 创建示例页面,同时 uid gid 要重设为 /web/html 的权限 |
5
kkxxxxxxx OP |
6
kkxxxxxxx OP @Bardon docker exec -t -i website sh 进去
ls: can't open '/web': Permission denied |
7
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 里 |
8
kkxxxxxxx OP @cxbig 宿主机 /home 下原来没有 data 目录, data 目录为容器映射时自动创建的,应该不存在内容被覆盖的问题, /home 目录权限 755
|
9
cxbig 2017-03-29 18:13:36 +08:00
@kkxxxxxxx 如果是这样,内外都是空的是正常情况
试着在 /home/data 创建个文件,再进去 container 看他们在不在 /web/html 里 |
10
kkxxxxxxx OP @cxbig container /web 提示无权限操作
ls: can't open'/web': Permission denied 这个权限是指哪的权限? host /home/data 755 container /web 755 |
11
cxbig 2017-03-29 18:31:02 +08:00
@kkxxxxxxx 那是内部权限,这个错误有点奇怪, container 里一般是 root 用户的,不应该有 Permission 这种问题
尝试在 docker run 命令里加一个参数 -w /web/html |