Docker compose - 共享卷Nginx
Docker compose - share volume Nginx
我只是想测试一下 Docker,似乎有些东西没有正常工作。当我有这样的 docker-compose.yml 时:
web:
image: nginx:latest
ports:
- "80:80"
在浏览器中我 运行 我的 docker.app
域(示例域指向 docker IP)我正在获取默认的 nginx 网页。
但是当我尝试做这样的事情时:
web:
image: nginx:latest
volumes:
- /d/Dev/docker/nginx-www/nginx/html/:/usr/share/nginx/html/
ports:
- "80:80"
当我 运行:
docker-compose up -id
当我在浏览器中 运行 相同 url 时,我得到:
403 Forbidden
nginx/1.9.12
我正在使用 Windows 8.1 作为我的主机。
是我做错了什么,还是无法通过这种方式共享文件夹?
编辑
解决方案(基于@HemersonVarela 的回答):
我尝试传递的卷位于 D:\Dev\docker
位置,因此我在路径的开头使用了 /d/Dev/docker
。但是看着 https://docs.docker.com/engine/userguide/containers/dockervolumes/ 你可以读到:
If you are using Docker Machine on Mac or Windows, your Docker daemon has only limited access to your OS X or Windows filesystem. Docker Machine tries to auto-share your /Users (OS X) or C:\Users (Windows) directory.
所以我需要做的是在 C:\users\marcin
目录中创建我的 nginx-ww/nginx/html
目录,所以我以:
web:
image: nginx:latest
volumes:
- /c/Users/marcin/docker/nginx-www/nginx/html/:/usr/share/nginx/html/
ports:
- "80:80"
这没有问题。文件现在按应有的方式共享
如果您在 Windows
上使用 Docker 计算机,docker 对您的 Windows 文件系统的访问权限有限。默认情况下 Docker 机器尝试自动共享您的 C:\Users
(Windows) 目录。
因此文件夹 .../Dev/docker/nginx-www/nginx/html/
必须位于主机中 C:\Users
目录下的某处。
所有其他路径都来自您虚拟机的文件系统,因此如果您想让一些其他主机文件夹可用于共享,您需要做额外的工作。对于 VirtualBox,您需要使主机文件夹在 VirtualBox 中作为共享文件夹可用。
你必须设置一个命令来将你的 nginx.conf
复制到 nginx 容器中:
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf`
创建一个名为 nginx 的目录并将 Dockerfile
& nginx.conf
放在那里,然后你必须设置一个构建:
web:
image: nginx:latest
build :./nginx/
volumes:
- /d/Dev/docker/nginx-www/nginx/html/:/usr/share/nginx/html/
ports:
- "80:80"
然后构建容器:sudo docker-compose build
我只是想测试一下 Docker,似乎有些东西没有正常工作。当我有这样的 docker-compose.yml 时:
web:
image: nginx:latest
ports:
- "80:80"
在浏览器中我 运行 我的 docker.app
域(示例域指向 docker IP)我正在获取默认的 nginx 网页。
但是当我尝试做这样的事情时:
web:
image: nginx:latest
volumes:
- /d/Dev/docker/nginx-www/nginx/html/:/usr/share/nginx/html/
ports:
- "80:80"
当我 运行:
docker-compose up -id
当我在浏览器中 运行 相同 url 时,我得到:
403 Forbidden
nginx/1.9.12
我正在使用 Windows 8.1 作为我的主机。
是我做错了什么,还是无法通过这种方式共享文件夹?
编辑
解决方案(基于@HemersonVarela 的回答):
我尝试传递的卷位于 D:\Dev\docker
位置,因此我在路径的开头使用了 /d/Dev/docker
。但是看着 https://docs.docker.com/engine/userguide/containers/dockervolumes/ 你可以读到:
If you are using Docker Machine on Mac or Windows, your Docker daemon has only limited access to your OS X or Windows filesystem. Docker Machine tries to auto-share your /Users (OS X) or C:\Users (Windows) directory.
所以我需要做的是在 C:\users\marcin
目录中创建我的 nginx-ww/nginx/html
目录,所以我以:
web:
image: nginx:latest
volumes:
- /c/Users/marcin/docker/nginx-www/nginx/html/:/usr/share/nginx/html/
ports:
- "80:80"
这没有问题。文件现在按应有的方式共享
如果您在 Windows
上使用 Docker 计算机,docker 对您的 Windows 文件系统的访问权限有限。默认情况下 Docker 机器尝试自动共享您的 C:\Users
(Windows) 目录。
因此文件夹 .../Dev/docker/nginx-www/nginx/html/
必须位于主机中 C:\Users
目录下的某处。
所有其他路径都来自您虚拟机的文件系统,因此如果您想让一些其他主机文件夹可用于共享,您需要做额外的工作。对于 VirtualBox,您需要使主机文件夹在 VirtualBox 中作为共享文件夹可用。
你必须设置一个命令来将你的 nginx.conf
复制到 nginx 容器中:
FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf`
创建一个名为 nginx 的目录并将 Dockerfile
& nginx.conf
放在那里,然后你必须设置一个构建:
web:
image: nginx:latest
build :./nginx/
volumes:
- /d/Dev/docker/nginx-www/nginx/html/:/usr/share/nginx/html/
ports:
- "80:80"
然后构建容器:sudo docker-compose build