Docker 卷 mariadb 具有 root 权限

kau*_*lex 5 ubuntu permission-denied mariadb docker docker-compose

我在使用 docker compose 文件(MariaDB、RabbitMQ、Maven)启动 docker 容器时偶然发现了 docker 卷的问题。我简单地开始它们docker-compose up -d(没有 SUDO)开始它们

\n

我的卷定义如下:

\n
...\nvolumes:\n  - ./production/mysql:/var/lib/mysql:z\n...\n
Run Code Online (Sandbox Code Playgroud)\n

一切工作正常并且./production目录已创建(卷映射到的位置)

\n

但是当我再次尝试使用 down/up 重新启动 docker 容器时,出现以下错误:

\n
error checking context: \'no permission to read from \'\xe2\x80\xa6/production/mysql/aria_log.00000001\'\n
Run Code Online (Sandbox Code Playgroud)\n

当我检查提到的文件时,我发现它需要 root:root 权限。这是因为该文件是使用容器内的 root 用户生成的。所以我尝试使用文档中提到的名称空间。

\n

无论如何,错误仍然发生。有什么想法或参考吗?

\n

谢谢。

\n

Docker 撰写文件:

\n
version: \'3.8\'\n\nservices:\n  mysql:\n    image: mariadb:latest\n    restart: always\n    env_file:\n      - config.env\n    volumes:\n      - ./production/mysql:/var/lib/mysql:z\n    environment:\n      MYSQL_DATABASE: ${DATABASE_NAME}\n      MYSQL_USER: ${DATABASE_USER}\n      MYSQL_PASSWORD: ${DATABASE_PASSWORD}\n      MYSQL_ROOT_PASSWORD: ${DATABASE_PASSWORD}\n    networks:\n      - testnetwork\n\nnetworks:\n  testnetwork:\n\n\n
Run Code Online (Sandbox Code Playgroud)\n

rez*_*har 1

以非 root 用户身份运行 Docker 守护进程,这对您的目的很有帮助。

所有文件都在这里