Docker撰写 - 共享卷Nginx

时间:2016-03-14 18:47:53

标签: windows nginx docker docker-compose

我只是想测试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"

这没有问题。文件现在应该是共享的

2 个答案:

答案 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容器中:

Dockerfile

FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf`

创建一个名称为nginx并将Dockerfile& nginx.conf那里,你必须设置一个构建:

docker-compose.yml

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

构建容器