linux - bitnami consul 无法使用 docker 桌面卷挂载访问文件或目录

标签 linux windows docker bitnami consul

使用 windows 容器和实验模式在 docker 桌面上运行 Consul 效果很好。但是,如果我尝试将 bitnami consul 的数据文件挂载到本地卷挂载,则会收到以下错误:
chown: cannot access '/bitnami/consul'
powershell chown error

我的撰写文件如下所示:

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" powershell failed to start Raft

最佳答案

另一种选择是编辑 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/

相关文章:

python - 在 gitlab-ci 中运行 Sonar 扫描仪

caching - docker build --no-cache=true 仍然使用缓存构建?

linux - SED 结尾不适用于字符串索引

linux - 如何忽略从 AC_CHECK_HEADERS 生成的 `configure' 拾取的系统文件

docker - Docker进行服务器配置

windows - VLC 媒体播放器的审查插件或扩展

c++ - 如何阻止函数在 MS VS C++ 中导出?

linux - 不同线程发送UDP报文,C语言

linux - Mac 与 Linux (Ubuntu) .ssh github 配置

c++ - 尝试在 Windows 上重定向标准输出和标准错误 - _fileno(stdout) 返回 -2