Docker for windows挂载文件到Nginx目录踩坑小记
前言:因为最近在学Docker,通过菜鸟教程的文档,在学到Docker安装Nginx时,挂载目录运行容器时碰到了错误,一直跑不起来,浪费了很多时间,这里记录中途的解决方法
相关教程:
菜鸟教程
这是菜鸟教程的运行代码:
$ docker run -d -p 8082:80 --name runoob-nginx-test-web -v ~/nginx/www:/usr/share/nginx/html -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/logs:/var/log/nginx nginx
踩坑
按照菜鸟教程的命令运行代码,因为教程上的是Linux的目录命令,然后我自己脑抽的把命令脑补成Windows的目录:
docker run -d -p 8082:80 --name runoob-nginx-test-web -v E:/nginx/www:/usr/share/nginx/html -v E:/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v E:/nginx/logs:/var/log/nginx nginx
第一跤:
然后就报错:
docker: Error response from daemon: open \.\pipe\docker_d4w_systray: The syThe system cannot find the file specified
错误分析
经过 有道翻译,系统找不到文件,觉得有可能是路径问题,于是网上搜索Docker在Windows上挂载路径的问题,发现确实有不少坑。
爬起来
网上搜了解决办法,发现要用下面这种方法来书写:
docker run -d -p 8082:80 --name runoob-nginx-test-web -v //E/nginx/www:/usr/share/nginx/html -v //E/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v //E/nginx/logs:/var/log/nginx nginx
第二跤
这一次,倒是没有上面的那个错误了,可是却又出现了新的问题,容器倒是执行了,可是却没跑起来,并且有错误提示:
OCI runtime create failed: container_linux.go:344: starting container process caused "process_linux.go:424: container init caused \"rootfs_linux.go:58: mounting \\\"/E/PHPSpace/docker/nginx/conf/nginx.conf\\\" to rootfs \\\"/var/lib/docker/overlay2/69414be2b2572a590e7ee33cc8765f431e8a354100090e802d78888a85834862/merged\\\" at \\\"/var/lib/docker/overlay2/69414be2b2572a590e7ee33cc8765f431e8a354100090e802d78888a85834862/merged/etc/nginx/nginx.conf\\\" caused \\\"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
错误分析
- 简而言之,大意应该是我不应该把一个目录挂载到文件上,或者是文件挂载到目录上,然后我又去网上搜答案:我的nginx.conf可能是个文件夹,要删除重新建立一个文件类型的nginx.conf;
- 可是我这里的nginx.conf确实是一个文件,而且还是从nginx容器copy来的,然后又接着找解决办法,找了很久,有说在C盘新建文件的,试了,也不行,最后,发现了Docker for Windows有个桌面应用Docker Desktop启动后可以设置文件挂载的路径问题。
解决错误
然后抱着侥幸心理,我打开了灰色图标Docker,点击Settings,进入设置页面的Shared Drivers里面,勾选了E盘,这里保存需要登录Windows系统的用户名,然后发现尼玛我居然没有设置密码,然后又跑去设置密码,过程:
- Windows + R, 输入control.exe 进入控制面板,选用户账户;
- 再次点击用户账户,进去后选择管理其他账户;
- 然后在里面设置密码就行了。
一切OK后,我又运行了一次命令:
docker run -d -p 8082:80 --name runoob-nginx-test-web -v //E/nginx/www:/usr/share/nginx/html -v //E/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v //E/nginx/logs:/var/log/nginx nginx
结果还是一样的错误,文件不能挂载到目录或是目录不能挂载到文件。
柳暗花明又一村
心中绝望之际,突然看见Shared Drivers下面有句代码提示,可以用Windows的C:/xxx这种命令,然后我就改成这种命令试了一下,居然跑起来了:
docker run -d -p 8082:80 --name runoob-nginx-test-web -v E:/PHPSpace/docker/nginx/www:/usr/share/nginx/html -v E:/PHPSpace/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v E:/PHPSpace/docker/nginx/logs:/var/log/nginx nginx
这就是这一次的踩坑教训,做个笔记,希望不要忘记吧
转载于:https://juejin.im/post/5d0746f46fb9a07ebd48d656
Docker for windows挂载文件到Nginx目录踩坑小记相关推荐
- docker 三种挂载文件路径方式
为何要为容器进行文件挂载 为了持久化docker容器产生的数据(数据文件/配置文件/日志文件), 通常会挂载(映射)产生数据的容器内路径到主机路径上. 用处: 不用进入容器内就能访问配置容器内数据 删 ...
- Docker容器实现原理及容器隔离性踩坑介绍
2019独角兽企业重金招聘Python工程师标准>>> 正如Docker官方的口号:"Build once,Run anywhere,Configure once,Run ...
- 阿里云配置二级域名与nginx代理踩坑
之前一直想配置一个二级域名.过程中踩了一些坑.现记录下来也给自己一个总结. 1 配置二级域名 配置二级域名,也就是我们在主域名下分发一个域名.比如 www.baidu.com ,我们想配置一个www. ...
- WSL下Docker使用踩坑小记
众所周知,Win10中开始提供Linux子系统,即Windows Subsystem for Linux,简称WSL,它可以让我们在Windows系统使用Linux系统,自从有了这个新功能以后,博主果 ...
- 使用OkHttp 下载文件无进度回调 踩坑
一.踩坑速记 1. 未添加header指定服务器采用何种压缩方式导致下载进度异常 描述:使用OkHttp3执行文件下载(服务端有nginx反向代理服务器进行压缩),获取回调中文件总大小为0或负值,导致 ...
- virtualvenv+django+uWSGI+nginx 部署 踩坑记录
原创博文 转载请注明出处! uwsgi: unrecognized option '--http:8089' uwsgi: unrecognized option '--http' uwsgi trk ...
- 菜鸟在 windows 下 python 中安装 jupyter 踩坑要点 、被神化的 VsCode
我平时用不到 python ,更没用过 jupyter ,因此我的 python知识仅限于知道有 python 这么个编程语言,会写个 print("Hello World!!!" ...
- 装完docker电脑黑屏无法启动_Docker入门踩坑实录
安装环境 问题:准备安装docker前,要先安装win10的Hyper-v虚拟机(win10专业版才有的哈).在安装Hyper-v时,大叔遇到开启win10开启Hyper-v后,在系统重启过程中,直接 ...
- Lenovo R590服务器Windows换装ESXi--2022.01.08(踩坑日记)
Lenovo R590服务器配置硬盘为一块480GB SSD,一块2TB SAS硬盘,原安装了Windows server 2019在SSD上面.想通过在该物理服务器上安装ESXi6.7,实现运现多台 ...
最新文章
- 软件测试职业培训中心,软件测试工程师就业班
- Android图片缓存框架Glide
- window.showModalDialog弹出模态窗口
- eclipse取消空格补全
- Symfony2模版引擎使用说明手册
- 测试开发python面试_python测试开发面试之深浅拷贝
- Maven3.0.5代理nexus
- jQuery选择元素
- html鼠标悬停效果_【开发小技巧】023—如何使用HTML和CSS实现3D文字效果
- 给 console 添加颜色
- 带你快速实现【C语言】之三子棋(简易版)
- Linux下通过ssh上传、下载文件或者文件夹
- example包下载
- ​【Flutter小记7】​Mac M1 使用 pod install编译常见两种错误解决方案(CocoaPod Error | LoadError)
- Fibonacci数列Linux程序,使用fork()调用计算Fibonacci数列
- PCL5打印机命令语言功能参考
- 纳尼?华为首席架构师只用434页笔记,就将网络协议给拿下了
- 每日一题·648.单词替换·前缀树
- uniapp登录页设计
- 动态规划求解最大子段和
热门文章
- ECCV 2020 | 首届GigaVision挑战赛揭榜,双赛道冠军技术干货分享
- 港中文周博磊:十年之间的CVPR与我们(附CVPR2020部分论文链接/开源代码/解读)...
- SAP MM VL32N和MIGO对内向交货单做收货,都会更新其‘总体货物移动状态‘
- SAP CV02N 审批一个文档
- Adam又要“退休”了?耶鲁大学团队提出AdaBelief
- 无需「域外」文本,微软:NLP就应该针对性预训练
- SAP 操作,弹出报错 - 已根据规则拒绝服务器触发的操作,是否要查看上个通讯步骤中触发的操作列表 -
- 微课丨华为的18条军规
- 最常拿来面试的算法与数据结构,不是递归,不是动态规划,看下这
- 机器学习面试题集-图解准确率,精确率,召回率