您是否尝试将目录挂载到文件上(反之亦然)?

新手上路,请多包涵

我有一个版本为 17.06.0-ce 的 docker。当我尝试使用带有命令的 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:来自守护进程的错误响应:oci 运行时错误:container_linux.go:262:启动容器进程导致“process_linux.go:339:容器初始化导致\”rootfs_linux.go:57:安装\\“/appdata/nginx/conf/ nginx.conf\\” to rootfs \\“/var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0\\” at \\“/var/lib/docker/aufs/mnt/dcea22444e9ffda114593b18fc8b574adfada06947385aedc2ac09f199188fa0/etc/nginx/nginx.conf \\” 导致 \\“not a directory\\”\”” :您是否尝试将目录挂载到文件上(反之亦然)?检查指定的主机路径是否存在并且是预期的类型。

如果不挂载 nginx.conf 文件,一切正常。那么,如何挂载配置文件呢?

原文由 Steven Luo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 480
2 个回答

因为 docker 会将 $PWD/conf/nginx.conf 识别为 文件夹 而不是文件。检查 $PWD/conf/ 目录是否包含 nginx.conf 目录

测试

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

否则,打开 Docker 问题

使用相同的配置对我来说工作正常。

原文由 callmemath 发布,翻译遵循 CC BY-SA 4.0 许可协议

这不应再发生(自 v2.2.0.0 起),请参见 此处


如果您使用的是 Docker for Windows ,如果您最近更改了密码,则可能会发生此错误。

怎么修:

  1. 首先确保删除损坏容器的卷

docker rm -v <container_name>

更新:以下步骤可能无需先删除卷即可工作。 2. 打开 Docker 设置 3. 转到“共享驱动器”选项卡 4. 单击窗口底部的“重置凭据…”链接 5. 重新共享要与 Docker 一起使用的驱动器

  • 应该提示您输入您的用户名/密码
  1. 点击“申请”
  2. 转到“重置”选项卡
  3. 点击“重启 Docker”
  4. 重新创建您的容器/卷

该解决方案归功于 GitHub 上的 BaranOrnarli。

原文由 Jesse Webb 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题