docker-撰写问题:尝试 create/mount 卷时权限被拒绝
docker-compose issue: Permission denied when attempting to create/mount volume
我有以下 docker-compose.yml 文件:
version: "3"
services:
dbs-poa-loc001d:
image: percona
volumes:
- ./mysql_backup:/var/lib/mysql
- ./create_databases:/docker-entrypoint-initdb.d
hostname: "dbs-poa-loc001d"
container_name: dbs-poa-loc001d
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
ports:
- "3306:3306"
networks:
- azion-network
...
当我尝试创建 dbs-poa-loc001d 服务(项目的数据库)时,出现以下错误:
Starting dbs-poa-loc001d ... done
Attaching to dbs-poa-loc001d
dbs-poa-loc001d | Initializing database
dbs-poa-loc001d | mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)
dbs-poa-loc001d | 2019-01-11T01:17:52.060984Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
dbs-poa-loc001d | 2019-01-11T01:17:52.062286Z 0 [ERROR] --initialize specified but the data directory exists and is not writable. Aborting.
dbs-poa-loc001d | 2019-01-11T01:17:52.062299Z 0 [ERROR] Aborting
dbs-poa-loc001d |
dbs-poa-loc001d exited with code 1
这个错误不会发生在我工作时的 MacOS 计算机上,但会发生在我的家用计算机 (运行 Ubuntu 16.04) 上。我确实注意到为保存卷数据而创建的主机上的 mysql_backup
文件夹设置为组和用户 root。谁能告诉我这是怎么回事,我该如何解决?已经试过没有成功:
- 运行 docker-使用 sudo
编写命令
- 手动将文件夹的所有者和用户更改为我的实际(低权限)用户。
我当前的设置和安装版本是:
- Ubuntu 16.04
- Docker 版本 18.09.0,构建 4d60db4
- docker-撰写版本 1.23.2,构建 1110ad0
- docker-compose 是使用
sudo pip install docker-compose
安装的
能否尝试将 mysql_backup
的权限设置为 1001:0?
像 sudo chown -R 1001:0 ./mysql_backup
或者作为替代方案,但 仅当文件夹为空时 sudo chmod 777 ./mysql_backup
关于 percona Dockerfile mysql 用户 id 是 1001
https://github.com/percona/percona-docker/blob/master/percona-server.80/Dockerfile
我有以下 docker-compose.yml 文件:
version: "3"
services:
dbs-poa-loc001d:
image: percona
volumes:
- ./mysql_backup:/var/lib/mysql
- ./create_databases:/docker-entrypoint-initdb.d
hostname: "dbs-poa-loc001d"
container_name: dbs-poa-loc001d
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
ports:
- "3306:3306"
networks:
- azion-network
...
当我尝试创建 dbs-poa-loc001d 服务(项目的数据库)时,出现以下错误:
Starting dbs-poa-loc001d ... done
Attaching to dbs-poa-loc001d
dbs-poa-loc001d | Initializing database
dbs-poa-loc001d | mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (Errcode: 13 - Permission denied)
dbs-poa-loc001d | 2019-01-11T01:17:52.060984Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
dbs-poa-loc001d | 2019-01-11T01:17:52.062286Z 0 [ERROR] --initialize specified but the data directory exists and is not writable. Aborting.
dbs-poa-loc001d | 2019-01-11T01:17:52.062299Z 0 [ERROR] Aborting
dbs-poa-loc001d |
dbs-poa-loc001d exited with code 1
这个错误不会发生在我工作时的 MacOS 计算机上,但会发生在我的家用计算机 (运行 Ubuntu 16.04) 上。我确实注意到为保存卷数据而创建的主机上的 mysql_backup
文件夹设置为组和用户 root。谁能告诉我这是怎么回事,我该如何解决?已经试过没有成功:
- 运行 docker-使用 sudo 编写命令
- 手动将文件夹的所有者和用户更改为我的实际(低权限)用户。
我当前的设置和安装版本是:
- Ubuntu 16.04
- Docker 版本 18.09.0,构建 4d60db4
- docker-撰写版本 1.23.2,构建 1110ad0
- docker-compose 是使用
sudo pip install docker-compose
安装的
能否尝试将 mysql_backup
的权限设置为 1001:0?
像 sudo chown -R 1001:0 ./mysql_backup
或者作为替代方案,但 仅当文件夹为空时 sudo chmod 777 ./mysql_backup
关于 percona Dockerfile mysql 用户 id 是 1001 https://github.com/percona/percona-docker/blob/master/percona-server.80/Dockerfile