我只是想测试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/,您可以阅读:
如果您在Mac或Windows上使用Docker Machine,您的Docker守护程序只能有限地访问您的OS X或Windows文件系统。 Docker Machine尝试自动共享您的/ Users(OS X)或C:\ Users(Windows)目录。
所以我需要做的是在nginx-ww/nginx/html
目录中创建我的C:\users\marcin
目录,所以我结束了:
web:
image: nginx:latest
volumes:
- /c/Users/marcin/docker/nginx-www/nginx/html/:/usr/share/nginx/html/
ports:
- "80:80"
这没有问题。文件现在应该是共享的
答案 0 :(得分:10)
如果您在Windows
上使用Docker Machine,则docker对Windows文件系统的访问权限有限。默认情况下,Docker Machine会尝试自动共享您的C:\Users
(Windows)目录。
因此文件夹.../Dev/docker/nginx-www/nginx/html/
必须位于主机中C:\Users
目录下的某个位置。
所有其他路径都来自虚拟机的文件系统,因此如果您想使其他主机文件夹可用于共享,则需要执行其他工作。对于VirtualBox,您需要将主机文件夹作为VirtualBox中的共享文件夹提供。
答案 1 :(得分:0)
您必须设置命令将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