简体   繁体   中英

Docker not starting, volume permission denied error

i am trying create postgresql container with this command in windows with WSL 2 integration enabled

docker run -d --name pg-docker --restart=always --publish 5432:5432 \
  -e POSTGRES_PASSWORD=postgres \
  -v "C:\Program Files\Docker\Volumes\pg:/var/lib/postgresql/data" \
 postgres:alpine

but container not starting, keeps restarting and I get permission error:

chmod: /var/lib/postgresql/data: Permission denied.

i tried to change chmod permissions but I cant enter bash due to container not running

Use extreme caution with these options. Bind-mounting a system directory such as /home or /usr with the Z option renders your host machine inoperable and you may need to relabel the host machine files by hand.

Use the below command as it worked well for me.

docker run -d --name pg-docker --restart=always \
  --publish 5432:5432 -e POSTGRES_PASSWORD=postgres \
  -v "C:\Program Files\Docker\Volumes\pg:/var/lib/postgresql/data:Z" \
  postgres:alpine

Reason: Host volume settings are not portable, since they are host-dependent and might not work on any other machine. Also, be aware that the host system has no knowledge of container SELinux policy. Therefore, if SELinux policy is enforced, the mounted host directory is not writable to the container.

Work around this by assigning the proper SELinux policy type to the host directory:

chcon -Rt svirt_sandbox_file_t host_dir

Where host_dir is a path to the directory on host system that is mounted to the container.

The above command (with:Z) will automatically do the chcon -Rt svirt_sandbox_file_t /var/lib/postgresql/data

See https://docs.docker.com/storage/bind-mounts/#configure-the-selinux-label

Source: Permission denied on accessing host directory in Docker

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