如何在Docker中更改已挂载目录的目录

时间:2018-11-27 04:19:59

标签: docker docker-compose windows-subsystem-for-linux

我想在WSL(Windows)中永久使用docker-compose存储我的数据库数据。 我的docker-compose.yml文件在下面。 /C/Users/XXX/Documents/dev/db-data是数据库数据目录,该目录将永久存储数据。 我可以使用下面的docker-compose.yml来构建容器。

db_docker:
    image: mysql:5.7
    container_name: mysql
    env_file:
        - .env.mysql
    ports:
        - "3306:3306"
    volumes:
        - /C/Users/XXX/Documents/dev/db-data:/var/lib/mysql

但是我无法访问此容器的数据库,并且错误消息如下所示。

  

错误29(HY000):找不到文件'./mysql/user.MYD'(错误代码:13-权限被拒绝)

我搜索了此错误消息,发现/var/lib/mysql的所有权为root:root。     drwxrwxrwx 2根根4096 Nov 27 03:42 mysql     drwxrwx --- 2个mysql mysql 4096 Nov 16 01:14 mysql-files     drwxr-x --- 2个mysql mysql 4096 Nov 16 01:14 mysql-keyring

我测试了如果从docker-compose.yml中删除卷设置,所有权将如何更改。然后我使用下面的设置文件构建了容器。

db_docker:
    image: mysql:5.7
    container_name: mysql
    env_file:
        - .env.mysql
    ports:
        - "3306:3306"

在这种情况下,/var/lib/mysql的所有权为mysql:mysql,我可以访问我的数据库。

基于这些事实,挂载文件会将/var/lib/mysql的所有权固定为root:root,如果我可以更改/var/lib/mysql的权限,就可以解决我的问题。

接下来,我尝试如下操作。 999是mysql的UID和GID,但是/var/lib/mysql的权限是root:root

db_docker:
    image: mysql:5.7
    container_name: mysql
    env_file:
        - .env.mysql
    ports:
        - "3306:3306"
    user: "999:999"
    volumes:
        - /C/Users/XXX/Documents/dev/db-data:/var/lib/mysql

这是我的思考故事,直到现在我都无法解决这个问题。 如何更改已挂载目录的所有权?

0 个答案:

没有答案