docker - docker-compose 卷安装的只读文件系统错误
问题描述
我正在使用 docker-compose 作为哨兵内部安装的一部分。
下面是我的 docker-compose.yml 的 nginx 部分的片段。这是提供给我的 nginx 容器配置。您会注意到它有一个现有的卷安装。
nginx:
<< : *restart_policy
ports:
- '$SENTRY_BIND:80/tcp'
image: 'nginx'
volumes:
- type: bind
read_only: true
source: ./nginx
target: /etc/nginx
depends_on:
- web
- relay
问题是我需要额外的挂载才能让我的 nginx 配置正常工作。我需要能够为 SSL 安装证书。当我对 nginx 部分进行以下修改时...
nginx:
<< : *restart_policy
ports:
- '$SENTRY_BIND:80/tcp'
image: 'nginx'
volumes:
- type: bind
read_only: true
source: ./nginx
target: /etc/nginx
- type: bind
read_only: true
source: ./certs
target: /etc/nginx/certs
depends_on:
- web
- relay
relay:
...使用 docker-compose up -d 时出现以下错误:
Creating sentry_onpremise_nginx_1 ... error
Creating sentry_onpremise_ingest-consumer_1 ... done
Creating sentry_onpremise_subscription-consumer-events_1 ... done
me/brad/repo/onpremise/certs" to rootfs at "/var/lib/docker/overlay2/357f60b96e866d8dd84d657f7cad55fad76420a61cc8cb35a10ebcb13bcf4060/merged/etc/nginx/certs" caused: mkdir /var/lib/docker/overlay2/357f60b96e866d8dd84d657f7cad55fad76420a61cc8cb35a10ebcb13bcf4060/merged/etc/nginx/certs: read-only file system: unknown
ERROR: for nginx Cannot start service nginx: OCI runtime create failed: container_linux.go:367: starting container process caused: process_linux.go:495: container init caused: rootfs_linux.go:60: mounting "/home/brad/repo/onpremise/certs" to rootfs at "/var/lib/docker/overlay2/357f60b96e866d8dd84d657f7cad55fad76420a61cc8cb35a10ebcb13bcf4060/merged/etc/nginx/certs" caused: mkdir /var/lib/docker/overlay2/357f60b96e866d8dd84d657f7cad55fad76420a61cc8cb35a10ebcb13bcf4060/merged/etc/nginx/certs: read-only file system: unknown
ERROR: Encountered errors while bringing up the project.
任何帮助将不胜感激。我对 docker/compose 不是很有经验。
编辑:对于它的价值,当我运行docker exec -it sentry_onpremise_nginx_1 /bin/bash
并尝试在容器内创建一个目录时,我遇到了类似的错误:
root@83afd0c563de:/etc/nginx# mkdir certs
mkdir: cannot create directory 'certs': Read-only file system
解决方案
这是通过将 certs 目录放在 nginx 目录下解决的。坐骑相互冲突。首先使用 RO 挂载到 /etc/nginx 会阻止挂载到 /etc/nginx/certs,因为它试图附加到只读部分。
推荐阅读
- python - 在 python Plotly 仪表板中的绘图内拖动一个圆圈
- c# - Microsoft Dynamics CRM 注释实体错误的“创建者”字段值
- python - 在 aws-s3 中创建大压缩文件并返回到 S3 python
- c - 如何使用 bison/flex 在 C 代码的头文件中解析自定义数据类型的类型?
- javascript - 旋转卡动画故障
- reactjs - 我尝试从 firestore 获取一次数据,但我为集合中的每个文档接收三次
- javascript - 即使在浏览器中禁用 JavaScript 也提交 Ajax 表单?
- firebase - Flutter/Firebase:如何减少对推送/弹出调用的 StreamBuilder 调用?
- javascript - 简化不等于 && 条件
- c# - 如何使用 Leaf.xNets HttpRequest 在 Post-Request 中使用正文?