不懂就问~Docker 无法挂载/etc/nginx 目录

2019-07-19 12:04:43 +08:00
 noahsophie

docker-compose 配置如下

version: "3"
services:
        nginx:
                image: nginx
                ports:
                        - "80:80"
                container_name: nginx
                restart: always
                privileged: true
                volumes:
                        #1 - /data/nginx:/etc/nginx
                        #2 - /etc/nginx


用第一种方式,会报错 open() "/etc/nginx/nginx.conf" failed (2: No such file or directory)

用第二种方式就没问题

不知道为什么第一种方式,容器的文件没有同步到宿主机上,权限都有

本人刚学 Docker

7605 次点击
所在节点    Docker
10 条回复
noahsophie
2019-07-19 12:06:30 +08:00
目前我是照着这个教程学的:https://yeasy.gitbooks.io/docker_practice/content/
大佬们要是有好的学习地址,也可以发一下
kchum
2019-07-19 12:59:44 +08:00
你别挂载先 复制一份 nginx.conf 出来了放在要挂载的目录
kchum
2019-07-19 13:03:14 +08:00
/etc/nginx/的所有文件复制到 host 要挂载的目录
gam2046
2019-07-19 13:11:22 +08:00
因为你的宿主环境下 /data/nginx/nginx.conf 文件不存在呀,提示说的很清楚了。容器内这样提示,而容器内这个目录是由宿主 mount 进去的。

那么结果就是要么宿主挂载目录下没有这个文件,要么是宿主目录下存在这个文件,但是容器内的 nginx 没有权限读取。
noahsophie
2019-07-19 13:39:12 +08:00
@kchum @gam2046
我 MYSQL 这样挂载目录,也没事先复制文件到宿主机上啊
但是查看 /data/insane_mysql 目录,里面文件和容器内的文件一样
version: "3"
services:
db:
image: mysql:5.7
container_name: insane_mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: "123456"
volumes:
- /data/insane_mysql:/var/lib/mysql
VD
2019-07-19 13:46:53 +08:00
@noahsophie 因为 mysql 容器启动,没有库的情况下,默认新建一个库,所以最后 mysql 就跑起来了

nginx 因为没有找到 nginx.conf,所以终止了,容器也就启动失败了 。
VD
2019-07-19 13:48:11 +08:00
挂载是这样的

/host/path:/container/path

讲宿主机的目录或文件,挂载到容器中
noahsophie
2019-07-19 13:52:59 +08:00
@VD 知道了~ 那么我上面第二种不指定目录方式绑定成功,是 docker 帮我把容器的文件复制到宿主机目录下了吗
VD
2019-07-19 14:20:13 +08:00
noahsophie
2019-07-19 17:40:51 +08:00
@VD 理解了~
第一种方式 Type:bind
第二种方式 Type:volume
参考连接: https://docs.docker.com/storage/bind-mounts/

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

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

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

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

© 2021 V2EX