Docker - 解決創建 nginx 容器嘗試掛載 nginx.conf 文件時報錯: mounting "/root/nginx.conf" to rootfs at "/etc/nginx/nginx.conf" caused: mount through procfd: not a directory:


背景

在自己的服務器上想通過 nginx 鏡像創建容器,並掛載鏡像自帶的 nginx.conf 文件

docker run -it -d -v ~/nginx.conf:/etc/nginx/nginx.conf nginx

 

但是報錯了

[root@poloyy ~]# docker run -it -d -v ~/nginx.conf:/etc/nginx/nginx.conf nginx
e0e4b40446a64927603b85854c3a6472b2dfa5681fcbfa0e170c16b15e5c8fdd
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting "/root/nginx.conf" to rootfs at "/etc/nginx/nginx.conf" caused: mount through procfd: not a directory: unknown: 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.
[root@poloyy ~]# client_loop: send disconnect: Broken pipe

 

提取關鍵錯誤信息

 mounting "/root/nginx.conf" to rootfs at "/etc/nginx/nginx.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)?

將“/root/nginx.conf”掛載到“/etc/nginx/nginx.conf”的rootfs導致:通過procfd掛載:不是目錄:未知:您是否試圖將目錄掛載到文件上(反之亦然) 

 

根因

  • 不支持直接掛載文件,只能掛載文件夾
  • 想要掛載文件,必須宿主機也要有對應的同名文件

 

解決方法

  • 可以先不掛載 nginx.conf
  • 先從容器中復制 nginx.conf 出來
  • 然后可以自行修改 nginx.conf,自定義配置項
  • 創建正式使用的 nginx 容器

 

從 test 容器中復制 nginx.conf 出來

當然也可以去網上隨便找個 nginx.conf,最重要的是宿主機要有個 nginx.conf

docker run --name test -d nginx  
docker cp test:/etc/nginx/nginx.conf /data/

 

創建正式的 nginx 容器,掛載 nginx.conf 文件

可以賦予權限

docker run --privileged -it -p 80:80 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
-v /data/nginx/conf/conf.d:/etc/nginx/conf.d:ro \
-v /data/nginx/html:/usr/share/nginx/html:rw \
-v /data/nginx/logs:/var/log/nginx -d nginx

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM