【问题标题】:Docker mounting rootfs caused not a directory errorDocker挂载rootfs导致不是目录错误
【发布时间】:2020-01-11 18:10:29
【问题描述】:

我一直在尝试 docker-compose up -d 到我的容器,但导致以下错误:

错误:对于 phpsample-feed_phpsample_1 无法启动服务 phpsample:OCI 运行时创建失败: container_linux.go:346:启动容器进程导致“process_linux.go:449:容器初始化导致 \"rootfs_linux.go:58: 挂载 \\"/c/Users/testUser/Documents/phpsample-feed/src\\" 到 rootfs \\"/mnt/sda1/var/lib/docker/overlay2/e6bf66b01f587c8826c2944b676044c6a199a0c8c2b8807adf13de0e0f8c4509/ 合并 \\" 在 \\"/mnt/sda1/var/lib/docker/overlay2/e6bf66b01f587c8826c2944b676044c6a199a0c8c2b8807adf13de0e0f8c4509/ 合并/var/www/html\\"导致\\"不是目录\\"\"":未知:您是否尝试挂载目录 到文件上(反之亦然)?检查指定的主机路径是否存在并且是预期的类型

这是我的docker-compose.yml 文件:

version: '3.7'
services:
  phpsample:
    build:
      context: .
    init: true
    ports:
      - '8080:80'
    depends_on:
      - db
      - redis
    volumes:
      - ./src:/var/www/html:rw
    environment:
      - DB_HOST=db
      - DB_USR=user
      - DB_PW=test
      - DB_DBNAME=phpsample
      - DB_DBPREFIX=dev_
      - IS_SHORT_URL=1
      - CACHE_DRIVER=redis
      - CACHE_HOST=redis
      - CACHE_PORT=6379
      - CACHE_REDIS_DB=3
      - DEBUG=false
    restart: always
  db:
    image: mysql:8
    environment:
      - MYSQL_ROOT_PASSWORD=test
      - MYSQL_USER=user
      - MYSQL_PASSWORD=test
      - MYSQL_DATABASE=phpsample
    volumes:
      - db_data:/var/lib/msyql
    command: --default-authentication-plugin=mysql_native_password --sql_mode=NO_ENGINE_SUBSTITUTION
  redis:
    image: redis:5-buster
    init: true
    command: ["redis-server", "--appendonly", "yes"]
    volumes:
      - redis_data:/data
volumes:
  db_data:
  redis_data:

我使用的系统和工具:

  • Windows 10 家庭版
  • Docker 工具箱终端
  • 风筝
  • 甲骨文虚拟机

我还尝试通过 this 在 VM 上编辑我的 Shared Folders。使用以下设置:

名称:c/Users 路径:C:\Users

【问题讨论】:

  • src 是否存在于您运行 docker-compose 的目录中,它是一个目录吗?
  • 如果您将./src:/var/www/html:rw 更改为php_data:/var/www/html:rw,并将php_data 也添加到volumes: 列表中怎么办?
  • @wobr 已经存在并且是一个src文件
  • @J.ScottElblein 您的建议使它运行,但无法通过 localhost:8080 访问,当我 docker ps 时它不断重启。

标签: docker docker-compose dockerfile


【解决方案1】:

src 应该是包含您的网络内容的目录,而不是文件。

【讨论】:

  • 好吧,它包含一个重定向到包含我的网页内容的文件夹的字符串
  • 您无法将文件挂载到 docker 中的目录中。这就是您收到错误的原因。
  • 实际上,如果我在 Linux 环境中工作,则此设置有效。我只是想让它在 windows 环境下工作。
【解决方案2】:

在 docker-compose.yaml 文件中确保输入的 yaml 文件路径存在于卷下:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 1970-01-01
    • 2021-06-14
    相关资源
    最近更新 更多