将nginx conf挂载为docker卷会导致系统错误boot2docker

时间:2015-08-01 14:55:54

标签: nginx docker

我尝试在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

有没有人知道我错过了什么?

Mac Boot2Docker卷问题?

我知道在使用Boot2Docker时将卷装入容器存在问题(虽然我认为这已经很久以来已经解决了)

即。 Mount volume to Docker image on OSX

但我无论如何都遵循那里的指示,但它仍然无法正常工作

1 个答案:

答案 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命令之前扩展它,就像数学和内括号一样,首先运行内部子命令。