2017-08-31 40 views
1

我有一個docker,版本號爲17.06.0-ce。當我試圖安裝使用泊塢窗用命令nginx的:docker nginx:你是否試圖將一個目錄掛載到文件上

docker run -p 80:80 -p 8080:8080 --name nginx -v $PWD/www:/www -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/logs:/wwwlogs -d nginx:latest 

它表明

docker: Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused "process_linux.go:339: container init caused \"rootfs_linux.go:57: mounting \\\"/appdata/nginx/conf/nginx.conf\\\" to rootfs \\\"/var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0\\\" at \\\"/var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0/etc/nginx/nginx.conf\\\" caused \\\"not a directory\\\"\"" 
: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type. 

如果不安裝nginx.conf文件,一切都還好。那麼,我怎樣才能掛載配置文件呢?

謝謝。

+0

'ls -al .'的輸出是什麼?想看看你的密碼看起來像什麼。 –

回答

3

由於碼頭工人承認$PWD/conf/nginx.conf文件夾,而不是文件。
檢查$PWD/conf/目錄是否不包含nginx.conf爲目錄

> cat $PWD/conf/nginx.conf 
cat: nginx.conf/: Is a directory 

嘗試否則,打開Docker issue
它對我來說工作正常,具有相同的配置。

1

刪除與容器關聯的卷。使用docker ps -a然後用取出容器找到容器名稱:

docker rm -v <container_name> 

問題:

你面對的,如果你嘗試過以前運行docker run命令時,文件不存在在該位置可能發生的錯誤它應該在主機目錄中。在這種情況下,docker守護程序會在容器內創建一個目錄。當正確的文件放入主機目錄並且docker再次運行時,以後無法映射到正確的文件。

解決方案:

刪除被關聯到所述容器中的卷。如果你不關心其他的集裝箱量,你也可以使用:

docker volume rm $(docker volume ls -q) 
+0

原始問題中的命令僅列出正在使用的主機卷。 「docker volume」命令/接口僅適用於匿名和命名卷,它們不屬於原始問題的一部分。 – programmerq

+0

@programmerq看看這個錯誤,它說當mount試圖掛載在'/ var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0 \\\「上時,掛載失敗了''我的推斷:由於之前已有一個文件夾運行,所以如果你試圖將一個文件映射到該文件夾​​,它將會失敗 – Ayushya

+0

這裏有兩件事情可能出錯了,主機有錯誤的東西,或者已經創建的卷有錯誤的東西,假設主機是正確的,我想最好是清除現有卷的問題 – Ayushya

0

到目前爲止,我的工作方式是手動創建nginx.conf文件。

+0

請刪除此內容或將其添加到原始問題中! –

相關問題