首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >docker-组合错误“只读文件系统”

docker-组合错误“只读文件系统”
EN

Stack Overflow用户
提问于 2018-11-04 18:08:37
回答 1查看 21.2K关注 0票数 10

我设计了一个docker-compose.yml文件,它应该也可以处理各个卷。

我创建了一个raid驱动器,它作为/dataraid挂载到我的系统中。我可以对系统进行读写,但是在我的撰写文件中使用它时,我会得到read-only file system错误消息。

将卷调整到另一个路径(如/home/myname/test ),复合文件可以工作。

我不知道/dataraid把它变成了“只读”。

撰写文件所需的权限设置是什么?

错误信息:

代码语言:javascript
代码运行次数:0
运行
复制
ERROR: for db  Cannot start service db: error while creating mount source path '/dataraid/nextcloud/mariadb': mkdir /dataraid: read-only file system

作曲:

代码语言:javascript
代码运行次数:0
运行
复制
version: '3'
services:
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - /dataraid/nextcloud/mariadb:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=PASSWORD
    env_file:
      - db.env
  redis:
    image: redis
    restart: always
  app:
    image: nextcloud:fpm
    restart: always
    volumes:
      - /dataraid/nextcloud/html:/var/www/html
    environment:
      - MYSQL_HOST=db
    env_file:
      - db.env
    depends_on:
      - db
      - redis
  web:
    build: ./web
    restart: always
    volumes:
      - /dataraid/nextcloud/html:/var/www/html:ro
    environment:
      - VIRTUAL_HOST=name.de
      - LETSENCRYPT_HOST=name.de
      - LETSENCRYPT_EMAIL=x@y.de
    depends_on:
      - app
    ports:
      - 4080:80
    networks:
      - proxy-tier
      - default
  collabora:
    image: collabora/code
    expose:
       - 9980
    cap_add:
      - MKNOD
    environment:
      - domain=name.de
      - VIRTUAL_HOST=name.de
      - VIRTUAL_PORT=9980
      - VIRTUAL_PROTO=https
      - LETSENCRYPT_HOST=name.de
      - LETSENCRYPT_EMAIL=x@y.de
      - username=            #optional
      - password=       #optional
    networks:
      - proxy-tier
    restart: always
  cron:
    build: ./app
    restart: always
    volumes:
      - /dataraid/nextcloud/html:/var/www/html
    entrypoint: /cron.sh
    depends_on:
      - db
      - redis
  proxy:
    build: ./proxy
    restart: always
    ports:
      - 443:443
      - 80:80
    environment:
      - VIRTUAL_PROTO=https
      - VIRTUAL_PORT=443
    labels:
      com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy: "true"
    volumes:
      - /dataraid/nextcloud/nginx-certs:/etc/nginx/certs:ro
      - /dataraid/nextcloud/nginx-vhost.d:/etc/nginx/vhost.d
      - /dataraid/nextcloud/nginx-html:/usr/share/nginx/html
      - /dataraid/nextcloud/nginx-conf.d:/etc/nginx/conf.d
      - /var/run/docker.sock:/tmp/docker.sock:ro
    networks:
      - proxy-tier
  letsencrypt-companion:
    image: jrcs/letsencrypt-nginx-proxy-companion
    restart: always
    volumes:
      - /dataraid/nextcloud/nginx-certs:/etc/nginx/certs
      - /dataraid/nextcloud/nginx-vhost.d:/etc/nginx/vhost.d
      - /dataraid/nextcloud/nginx-html:/usr/share/nginx/html
      - /var/run/docker.sock:/var/run/docker.sock:ro
    networks:
      - proxy-tier
    depends_on:
      - proxy
networks:
  proxy-tier:

请参阅错误消息:

代码语言:javascript
代码运行次数:0
运行
复制
bernd@sys-dock:/dataraid/Docker-Configs/nextcloud$ docker-compose up -d
Creating network "nextcloud_default" with the default driver
Creating network "nextcloud_proxy-tier" with the default driver
Creating nextcloud_db_1 ...
Creating nextcloud_proxy_1     ... error
Creating nextcloud_db_1        ... error
Creating nextcloud_collabora_1 ...
ERROR: for nextcloud_proxy_1  Cannot start service proxy: error while creating mount source path '/dataraid/nextcloud/nginx-certs': mkdir /dataraid: read-only file system
Creating nextcloud_redis_1     ... done
Creating nextcloud_collabora_1 ... done
ERROR: for proxy  Cannot start service proxy: error while creating mount source path '/dataraid/nextcloud/nginx-certs': mkdir /dataraid: read-only file system
ERROR: for db  Cannot start service db: error while creating mount source path '/dataraid/nextcloud/mariadb': mkdir /dataraid: read-only file system
ERROR: Encountered errors while bringing up the project.
EN

回答 1

Stack Overflow用户

发布于 2020-03-23 14:43:34

如果在安装文件系统之前启动了对接器,您可能会看到对接器引擎试图写入父文件系统时出现的问题。您可以重新启动docker守护进程以排除这种情况( systemd基本环境中的systemctl restart docker)。

如果重新启动守护进程有帮助,那么您可以在对接引擎和外部文件系统挂载之间添加一个依赖项。在systemd中,这涉及到单元文件中的After=子句。例如,您可以创建一个包含以下内容的/etc/systemd/system/docker.service.d/override.conf文件:

代码语言:javascript
代码运行次数:0
运行
复制
[Unit]
After=nfs-client.target

(请注意,我不确定nfs-client.target是否是您的文件系统的正确单元文件,您需要检查它的安装位置。)

最近我看到人们遇到的另一个问题是基于Snap的码头安装,它在另一种容器技术的内部运行对接器,这将阻止访问未显式配置的路径。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53143849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档