Docker--卷未将文件夹装入nginx容器

Docker--卷未将文件夹装入nginx容器,docker,nginx,Docker,Nginx,我正在尝试学习一些docker命令(没有Dockerfile,我在ubuntu上)。我首先使用此命令: docker container run -p 80:80 nginx:latest 然后,当我打开浏览器(这是我的virtualmachine IP)时,它会显示nginx的默认页面 然后我停止容器并尝试以下命令: dock container run --volume /home/mazoo/DockerExampleFolder/html:/usr/share/nginx/html -

我正在尝试学习一些docker命令(没有Dockerfile,我在ubuntu上)。我首先使用此命令:

docker container run -p 80:80 nginx:latest
然后,当我打开浏览器(这是我的virtualmachine IP)时,它会显示nginx的默认页面

然后我停止容器并尝试以下命令:

dock container run --volume /home/mazoo/DockerExampleFolder/html:/usr/share/nginx/html -p 80:80 nginx:latest
我在我的浏览器中打开,收到403禁止错误。我的控制台显示:

2019/12/16 00:23:56 [error] 6#6: *1 directory index of "/usr/share/nginx/html/" is forbidden, client: 192.168.99.1, server: localhost, request: "GET / HTTP/1.1", host: "192.168.99.100"
此外,我还尝试(1.html是我计算机上/home/mazoo/dockerexamplelfolder/html文件夹中的html文件,逻辑上应该装入容器)在浏览器中收到404 Not Found错误,在控制台中我看到此错误:

[error] 6#6: *1 open() "/usr/share/nginx/html/1.html" failed (2: No such file or directory), client: 192.168.99.1, server: localhost, request: "GET /1.html HTTP/1.1", host: "192.168.99.100"
错误显示“/usr/share/nginx/html”未将1.html文件从主机接收到容器中

然后我在容器中尝试另一个路径:

docker container run --volume /home/mazoo/DockerExampleFolder/html:/var/html -p 80:80 nginx:latest
cd /var/lib/docker/volumes/nginx-data/_data/
但当我浏览时,它会显示默认的nginx欢迎页面(我的html文件夹中有一个index.html,所以我希望默认的欢迎页面应该被覆盖),并且再次显示“我收到未找到”错误


似乎由于某些原因,我的文件夹没有装入我的容器。

首先用名称启动docker容器:

dock container run --name nginx --volume /home/mazoo/DockerExampleFolder/html:/usr/share/nginx/html -p 80:80 nginx:latest
然后进入正在运行的容器中进行探索

docker exec -it nginx bash
在/usr/share/nginx/中检查预期的文件和所有权

我怀疑这是许可问题


使用命名卷:

docker rm nginx  ## clean up from earlier, if needed

docker volume create nginx-data

docker run --name nginx --rm -v nginx-data:/usr/share/nginx/html nginx:latest
容器外部:

docker container run --volume /home/mazoo/DockerExampleFolder/html:/var/html -p 80:80 nginx:latest
cd /var/lib/docker/volumes/nginx-data/_data/

首先使用名称启动docker容器:

dock container run --name nginx --volume /home/mazoo/DockerExampleFolder/html:/usr/share/nginx/html -p 80:80 nginx:latest
然后进入正在运行的容器中进行探索

docker exec -it nginx bash
在/usr/share/nginx/中检查预期的文件和所有权

我怀疑这是许可问题


使用命名卷:

docker rm nginx  ## clean up from earlier, if needed

docker volume create nginx-data

docker run --name nginx --rm -v nginx-data:/usr/share/nginx/html nginx:latest
容器外部:

docker container run --volume /home/mazoo/DockerExampleFolder/html:/var/html -p 80:80 nginx:latest
cd /var/lib/docker/volumes/nginx-data/_data/
答案是:

在Oracle VM VirtualBox共享文件夹设置中,我的“主页”映射为“主机主页”,因此

dock container run --name nginx --volume /home/mazoo/DockerExampleFolder/html:/usr/share/nginx/html -p 80:80 nginx:latest
应该是

dock container run --name nginx --volume /hosthome/mazoo/DockerExampleFolder/html:/usr/share/nginx/html -p 80:80 nginx:latest
表示路径中的“home”应为“hosthome”,而不是“home”。答案如下:

在Oracle VM VirtualBox共享文件夹设置中,我的“主页”映射为“主机主页”,因此

dock container run --name nginx --volume /home/mazoo/DockerExampleFolder/html:/usr/share/nginx/html -p 80:80 nginx:latest
应该是

dock container run --name nginx --volume /hosthome/mazoo/DockerExampleFolder/html:/usr/share/nginx/html -p 80:80 nginx:latest

表示路径中的“home”应该是“hosthome”

谢谢,文件似乎不在那里,在运行docker exec-it之后。。。然后运行ls/usr/share/nginx/html,它会显示那里没有文件,并且文件是空的。这将是一个问题。看起来是个合适的地点,但必须找到一种新的方法来获取文件。在更新的答案中尝试命名的装载方法。运行cd/var/lib/docker。。。。I receive permission denied error:bash:cd:/var/lib/docker/volumes/nginx data/_data/:permission denied这是否意味着docker无法从主机访问文件?您的登录名和docker的服务用户没有在同一组文件上进行互操作的权限。老实说,我不确定现在最好的做法是什么。我通常会使用root用户(sudosu-)来调解差异。但是可能有一个更好/正确的答案。谢谢,在运行docker exec-it之后,文件似乎不在那里。。。然后运行ls/usr/share/nginx/html,它会显示那里没有文件,并且文件是空的。这将是一个问题。看起来是个合适的地点,但必须找到一种新的方法来获取文件。在更新的答案中尝试命名的装载方法。运行cd/var/lib/docker。。。。I receive permission denied error:bash:cd:/var/lib/docker/volumes/nginx data/_data/:permission denied这是否意味着docker无法从主机访问文件?您的登录名和docker的服务用户没有在同一组文件上进行互操作的权限。老实说,我不确定现在最好的做法是什么。我通常会使用root用户(sudosu-)来调解差异。但是可能有一个更好/正确的答案。你确定它的
dock
而不是
docker
?你确定它的
dock
而不是
docker