简体   繁体   中英

bitnami consul cannot access file or directory using docker desktop volume mount

Running Consul with docker desktop using windows containers and experimental mode turned on works well. However if I try mounting bitnami consul's datafile to a local volume mount I get the following error:

chown: cannot access '/bitnami/consul'

powershell chown 错误

My compose file looks like this:

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

If I remove the volumes part, everything works just fine, but I cannot persist my data. If followed instructions in the readme file . The speak of having the proper permissions, but I do not know how to get that to work using docker desktop.

Side note If I do not mount /bitnami but /bitnami/consul , I get the following error: 2020-03-30T14:59:00.327Z [ERROR] agent: Error starting agent: error="Failed to start Consul server: Failed to start Raft: invalid argument" powershell 无法启动 Raft

Another option is to edit the docker-compose.yaml to deploy the consul container as root by adding the user: root directive:

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

Without user: root the container is executed as non-root (user 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

But adding this line the container is executed as 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

If the container is executed as root there shouldn't be any issue with the permissions in the host volume.

Consul container is a non-root container , in those cases, the non-root user should be able to write in the volume.

Using host directories as a volume you need to ensure that the directory you are mounting into the container has the proper permissions, in that case, writable permission for others . You can modify the permission by running sudo chmod o+x ${USERPROFILE}\\DockerVolumes\\consul (or the correct path to the host directory).

This local folder is created the first time you run docker-compose up or you can create it by yourself with mkdir . Once created (manually or automatically) you should give the proper permissions with chmod .

I am not familiar with Docker desktop nor Windows environments, but you should be able to do the equivalent actions using a CLI.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM