gpt4 book ai didi

Docker 卷 mariadb 具有 root 权限

转载 作者:行者123 更新时间:2023-12-04 18:24:54 33 4
gpt4 key购买 nike

在使用 docker compose 文件(MariaDB、RabbitMQ、Maven)启动 docker 容器时,我偶然发现了 docker 卷的问题。我只是用 docker-compose up -d 开始它们。 (没有须藤)
我的卷定义如下:

...
volumes:
- ./production/mysql:/var/lib/mysql:z
...
一切正常, ./production创建目录(映射卷的位置)
但是当我再次尝试使用 down/up 重新启动 docker 容器时,出现以下错误:
error checking context: 'no permission to read from '…/production/mysql/aria_log.00000001'
当我检查提到的文件时,我发现它需要 root:root 权限。这是因为该文件是使用容器内的 root 用户生成的。所以我尝试使用 docs 中提到的命名空间.
无论如何,错误仍然存​​在。有什么想法或引用吗?
谢谢。
docker 撰写文件:
version: '3.8'

services:
mysql:
image: mariadb:latest
restart: always
env_file:
- config.env
volumes:
- ./production/mysql:/var/lib/mysql:z
environment:
MYSQL_DATABASE: ${DATABASE_NAME}
MYSQL_USER: ${DATABASE_USER}
MYSQL_PASSWORD: ${DATABASE_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DATABASE_PASSWORD}
networks:
- testnetwork

networks:
testnetwork:


最佳答案

问题来自主机用户/组 ID 与容器内的 ID 之间的映射。解决方案之一是使用命名卷并避免所有这些麻烦,但您也可以执行以下操作:
添加 user: ${UID}:${GID}到 docker-compose 文件中的服务。
运行UID=${id -u} GID=${id -g} docker-compose up .这样可以确保容器中的用户与主机上的用户具有相同的 UID/GID,并且在容器中创建的文件将具有适当的权限。
注意: Docker for Mac(使用 osxfs 驱动程序)在后台执行此操作,您无需担心用户和组。

关于Docker 卷 mariadb 具有 root 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70512898/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com