我尝试在docker容器中运行nginx,同时挂载配置和静态html文件以供其使用。据我所知,非常简单的东西,但我一直收到关于目录不是目录的错误?
我使用最新版本的Boot2Docker在我的Mac上运行此示例。
我有以下文件夹结构:
% tree ~/Projects/Docker/nginx-example
.
├── html
│ └── test.html
└── nginx.conf
1 directory, 2 files
nginx.conf
的内容如下:
http {
server {
listen *:80; # Listen for incoming connections from any interface on port 80
server_name ""; # Don't worry if "Host" HTTP Header is empty or not set
root /usr/share/nginx/html; # serve static files from here
}
}
我尝试运行容器(在~/Projects/Docker/nginx-example
目录中),如下所示:
docker run --name nginx-container \
-v /Users/M/Projects/Docker/nginx-example/html:/usr/share/nginx/html:ro \
-v /Users/M/Projects/Docker/nginx-example/nginx.conf:/etc/nginx:ro \
-P -d nginx
最初我曾尝试像
-v $(pwd)/html:/usr/share/nginx/html:ro
之类的东西来保持命令更短,但是当它没有工作时,我认为我是明确的,以防万一有一些时髦的子shell问题我不是#39;意识到
我得到以下输出
fc41205914098d236893a3b4e20fa89703567c666ec1ff29f123215dfbef7163
Error response from daemon:
Cannot start container fc41205914098d236893a3b4e20fa89703567c666ec1ff29f123215dfbef7163:
[8] System error: not a directory
有没有人知道我错过了什么?
我知道在使用Boot2Docker时将卷装入容器存在问题(虽然我认为这已经很久以来已经解决了)
即。 Mount volume to Docker image on OSX
但我无论如何都遵循那里的指示,但它仍然无法正常工作
答案 0 :(得分:4)
-v /Users/M/Projects/Docker/nginx-example/nginx.conf:/etc/nginx:ro
您正在尝试将文件挂载到目录 - 将其更改为:
-v /Users/M/Projects/Docker/nginx-example/nginx.conf:/etc/nginx/nginx.conf:ro
你应该没问题。请查看Docker Volumes Docs
同样,pwd
应该在路径中工作。 shell在运行docker命令之前扩展它,就像数学和内括号一样,首先运行内部子命令。