docker volume create-设置权限

时间:2019-05-15 07:47:01

标签: docker docker-compose

我正在debian 9上运行它

我正在使用sudo docker volume create db创建在docker-compose.yml中使用的卷。但是我仍然收到错误db_1_d89b59353579 | mkdir: cannot create directory '/var/lib/mysql': Permission denied

如何为使用该卷的用户设置权限。以及如何获得用户?

Docker-Compose:

version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
      - db:/var/lib/mysql:z
    environment:
      - MYSQL_ROOT_PASSWORD=***
      - MYSQL_PASSWORD=***
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
    image: nextcloud
    ports:
      - 8080:80
    links:
      - db
    volumes:
      - nextcloud:/var/www/html
    restart: always

运行时我得到一个install.sh文件:

...
sudo docker volume create db

sudo docker-compose build
docker-compose up -d

1 个答案:

答案 0 :(得分:3)

尝试首先将安装更改为本地文件夹,看看是否可以解决您的问题:

version: '2'

volumes:
  nextcloud:
  db:

services:
  db:
...
    volumes:
      - ./db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=***
      - MYSQL_PASSWORD=***
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud

  app:
...
    volumes:
      - ./nextcloud:/var/www/html
    restart: always

如果是,则检查docker-compose down是否已正确删除卷。运行docker volume ls。如果它们仍然存在,请手动将其删除,然后重新运行包含该卷的容器。

关于安装到卷(db:/ var / lib / mysql)和安装到主机路径(./db:/var/lib/mysql)之间的差异

>

在第一种情况下,它是volume managed by Docker。它是为了持久性而设计的,但是获取文件则比较棘手。在第二种情况下,它是path on the host,这使得检索持久文件变得容易得多。我建议在两种情况下都运行“ docker-compose config”,并查看docker-compose内部转换语句的方式的不同。