我正在尝试使用Docker运行我的应用程序,下面是运行mongo容器的YML文件内容。
services:
mongodb:
image: mongo:3.4
# ports:
# - "27017:27017"
volumes:
- ./data/mongo:/data/db
restart: always
并在contianer中收到此错误:(在运行docker Logs命令后看到此错误)
Chown:更改‘/data/db’的所有权:不允许操作
主机有./data/mongo文件夹,下面是详细信息。
drwxrwxrwx 2 nfsnobody nfsnobody 4096 May 11 23:13 mongo
我试着按照其中一个论坛中的建议在主机上运行这个程序。
sudo chgrp 1000 ./data/mongo
- 不确定这将如何帮助解决问题,因为我们得到的错误是包含容器文件夹,而不是来自主机的错误,无论如何我都尝试了。*
但得到的回应是这样的:
Chgrp:正在更改‘mongo’的组:不允许操作
如何解决这个问题?除了“chgrp”,还有其他解决办法吗?谢谢。
以下是完整的docker-compose.yml文件
## You can generate a custom docker compose file automatically on http://reportportal.io/download (Step 2)
## This is example of Docker Compose for ReportPortal
## Do not forget to configure data volumes for production usage
## Execute 'docker-compose -p reportportal up -d --force-recreate'
## to start all containers in daemon mode
## Where:
## '-p reportportal' -- specifies container's prefix (project name)
## '-d' -- enables daemon mode
## '--force-recreate' -- forces re-recreating of all containers
version: '2'
services:
mongodb:
image: mongo:3.4
# ports:
# - "27017:27017"
volumes:
- ./data/mongo:/data/db
restart: always
registry:
image: consul:1.0.6
volumes:
- ./data/consul:/usr/share/consul/data
# ports:
# - "8500:8500"
# - "8300:8300"
# - "53:8600/udp"
command: "agent -server -bootstrap-expect=1 -ui -client 0.0.0.0"
environment:
- 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}'
restart: always
uat:
image: reportportal/service-authorization:4.2.0
#ports:
# - "9999:9999"
depends_on:
- mongodb
environment:
- RP_PROFILES=docker
- RP_SESSION_LIVE=86400 #in seconds
# - RP_MONGO_URI=mongodb://localhost:27017
restart: always
### Another option for gateway
### Can be used instead of traefik
# gateway:
# image: fabiolb/fabio:1.5.8-go1.10
# ports:
# - "9998:9998" # GUI/management
# - "8080:9999" # HTTP exposed
# environment:
# - FABIO_REGISTRY_CONSUL_ADDR=registry:8500
# - FABIO_REGISTRY_CONSUL_REGISTER_NAME=gateway
# - FABIO_PROXY_ADDR=:9999;rt=300s;wt=300s
# restart: always
gateway:
image: traefik:1.6.6
ports:
- "4444:8080" # HTTP exposed
- "8081:8081" # HTTP Administration exposed
# expose:
# - '8080'
command:
- --consulcatalog.endpoint=registry:8500
- --defaultEntryPoints=http
- --entryPoints=Name:http Address::8080
- --web
- --web.address=:8081
restart: always
index:
image: reportportal/service-index:4.2.0
environment:
- RP_SERVER_PORT=8080
- RP_PROXY_CONSUL=true
depends_on:
- registry
- gateway
restart: always
api:
image: reportportal/service-api:4.3.0
depends_on:
- mongodb
environment:
- RP_PROFILES=docker
- JAVA_OPTS=-Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp
# - RP_MONGO_URI=mongodb://localhost:27017
restart: always
ui:
image: reportportal/service-ui:4.3.0
environment:
- RP_SERVER.PORT=8080
- RP_CONSUL.TAGS=urlprefix-/ui opts strip=/ui
- RP_CONSUL.ADDRESS=registry:8500
restart: always
analyzer:
image: reportportal/service-analyzer:4.3.0
depends_on:
- registry
- gateway
- elasticsearch
restart: always
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch-oss:6.1.1
restart: always
volumes:
- ./data/elasticsearch:/usr/share/elasticsearch/data
environment:
- bootstrap.memory_lock=true
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
# ports:
# - "9200:9200"
jira:
image: reportportal/service-jira:4.0.0
environment:
- RP_PROFILES=docker
# - RP_MONGO_URI=mongodb://localhost:27017
restart: always
rally:
image: reportportal/service-rally:4.3.0
environment:
- RP_PROFILES=docker
# - RP_MONGO_URI=mongodb://localhost:27017
restart: always
4条答案
按热度按时间z31licg01#
看起来您已经打开了用户命名空间重新Map。
在您的主机中打开下面的文件
/etc/sysconfig/docker
并添加/修改这些选项,如下所示,如果需要,用您的用户替换根用户
kkbh8khc2#
我试着在这里回答一个类似的问题-https://stackoverflow.com/a/73238863/1294667
简而言之,我们可以装载到路径
/data
,而不是/data/db
。这样,mongo就可以在内部对/data/db
执行chown。qyzbxkaa3#
与Windows或Mac主机共享卷可能是有限的或硬的(请参阅https://github.com/docker-library/mongo/issues/232#issuecomment-355423692).我在arm64Mac和Rancher Desktop上也遇到了类似的问题,我决定删除
volume
,但启动mongo容器仍然有问题。如果您并不真正需要共享卷,只需要解决错误,扩展底座-台式机解决方案可能是:
j0pj023g4#
如果以超级用户身份运行,Mongo启动脚本会更改
/data/configdb
和/data/db
中文件的所有权。尝试以nfsnobody
(本地./data/mongo
的所有者)身份运行以跳过此步骤: