简体   繁体   中英

Docker compose fails to create volume on OSX

I am trying to use docker-compose to create a volume on my MAC, and I ran into a weird behavior that I don't really understand where docker-compose fails to run because of a volume owning user regardless to the permissions set on the folder.

First, here is my docker file and docker-compose file:

Dockerfile :

FROM debian

RUN groupadd -r test && useradd -r -g test test

VOLUME /var/test
# RUN mkdir -p /var/test && chown -R test:test /var/test
RUN mkdir -p /var/test
COPY test.sh /var/test/test.sh

CMD ["sh", "/var/test/test.sh"]

docker-compose.yml :

version: '3.0'
services:
    test:
      build: .
      volumes:
          - test:/var/test
volumes:
  test:
    driver_opts:
      o: bind
      type: none
      device: "/tmp/vols"

Structure:

|____tmp
| |____Dockerfile
| |____vols
| |____docker-compose.yml

Running docker compose:

➜  /tmp docker-compose up
Creating tmp_test_1 ... error

ERROR: for tmp_test_1  Cannot create container for service test: failed to chmod on /var/lib/docker/volumes/tmp_test/_data: chmod /var/lib/docker/volumes/tmp_test/_data: operation not permitted

ERROR: for test  Cannot create container for service test: failed to chmod on /var/lib/docker/volumes/tmp_test/_data: chmod /var/lib/docker/volumes/tmp_test/_data: operation not permitted
ERROR: Encountered errors while bringing up the project.

Permissions:

drwxrwxrwx   2 root   wheel   64 May  3 12:20 vols

Solutions that worked for me:

  1. Changing the owner of /tmp/vols from root , but I was wondering if there is something better
  2. Creating any file in /tmp/vols seems to solve this, why????

Basically my question is: why does this happen, and how should I fix it?

I can't find an explanation in the docs for this, and I want to make sure I am not missing anything important.

Thanks!

For now, what we did is just change the file owner to not be root . If anyone will have a better suggestion, I will accept the answer

I had a corrupted _data and _dbs in the folder where docker-compose.yml was located. deleted and recreated the _data and _dbs folders and the system was up and running.

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