将Nginx conf安装为Docker卷会导致系统错误boot2docker

Int*_*ist 5 nginx docker

我正在尝试在docker容器中运行nginx,同时安装配置和静态html文件以使其能够正常运行。据我所知,很简单的东西,但是我不断收到关于目录不是目录的错误?

我正在使用最新版本的Boot2Docker在Mac上运行此示例。

我具有以下文件夹结构:

% tree                 ~/Projects/Docker/nginx-example
.
??? html
?   ??? test.html
??? nginx.conf

1 directory, 2 files
Run Code Online (Sandbox Code Playgroud)

的内容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
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试~/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
Run Code Online (Sandbox Code Playgroud)

最初,我曾尝试过-v $(pwd)/html:/usr/share/nginx/html:ro使命令更短一些,但是当它不起作用时,我以为我会很明确,以防万一出现一些我不知道的时髦子壳问题。

我得到以下输出

fc41205914098d236893a3b4e20fa89703567c666ec1ff29f123215dfbef7163
Error response from daemon: 
Cannot start container fc41205914098d236893a3b4e20fa89703567c666ec1ff29f123215dfbef7163: 
[8] System error: not a directory
Run Code Online (Sandbox Code Playgroud)

有人对我缺少的东西有任何想法吗?

Mac Boot2Docker Volume问题?

我知道使用Boot2Docker时将卷装载到容器中存在问题(尽管我被认为这早已解决)

在OSX上将卷挂载到Docker映像

但是无论如何,我都按照那里的指示进行操作,但仍然无法正常工作

Mic*_*ael 5

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