使用 windows 容器和实验模式在 docker 桌面上运行 Consul 效果很好。但是,如果我尝试将 bitnami consul 的数据文件挂载到本地卷挂载,则会收到以下错误:chown: cannot access '/bitnami/consul'
我的撰写文件如下所示:
version: "3.7"
services:
consul:
image: bitnami/consul:latest
volumes:
- ${USERPROFILE}\DockerVolumes\consul:/bitnami
ports:
- '8300:8300'
- '8301:8301'
- '8301:8301/udp'
- '8500:8500'
- '8600:8600'
- '8600:8600/udp'
networks:
nat:
aliases:
- consul
如果我删除卷部分,一切正常,但我无法保留我的数据。如果遵循 readme file 中的说明.谈到拥有适当的权限,但我不知道如何使用 docker desktop 让它工作。
旁注
如果我不挂载
/bitnami
但是 /bitnami/consul
,我收到以下错误:2020-03-30T14:59:00.327Z [ERROR] agent: Error starting agent: error="Failed to start Consul server: Failed to start Raft: invalid argument"
最佳答案
另一种选择是编辑 docker-compose.yaml 以通过添加 user: root
以 root 身份部署 consul 容器。指示:
version: "3.7"
services:
consul:
image: bitnami/consul:latest
user: root
volumes:
- ${USERPROFILE}\DockerVolumes\consul:/bitnami
ports:
- '8300:8300'
- '8301:8301'
- '8301:8301/udp'
- '8500:8500'
- '8600:8600'
- '8600:8600/udp'
networks:
nat:
aliases:
- consul
没有
user: root
容器以非 root 用户(用户 1001)执行:▶ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c590d7df611 bitnami/consul:1 "/opt/bitnami/script…" 4 seconds ago Up 3 seconds 0.0.0.0:8300-8301->8300-8301/tcp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8301->8301/udp, 0.0.0.0:8600->8600/tcp, 0.0.0.0:8600->8600/udp bitnami-docker-consul_consul_1
▶ dcexec 0c590d7df611
I have no name!@0c590d7df611:/$ whoami
whoami: cannot find name for user ID 1001
但是添加这一行,容器将被执行为
root
:▶ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac206b56f57b bitnami/consul:1 "/opt/bitnami/script…" 5 seconds ago Up 4 seconds 0.0.0.0:8300-8301->8300-8301/tcp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8301->8301/udp, 0.0.0.0:8600->8600/tcp, 0.0.0.0:8600->8600/udp bitnami-docker-consul_consul_1
▶ dcexec ac206b56f57b
root@ac206b56f57b:/# whoami
root
如果容器执行为
root
主机卷中的权限应该没有任何问题。
关于linux - bitnami consul 无法使用 docker 桌面卷挂载访问文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60933618/