도커 볼륨 mariadb에 루트 권한이 있습니다.
도커 구성 파일(MariaDB, RabbitMQ, Maven)을 사용하여 도커 컨테이너를 시작하던 중 도커 볼륨에 문제가 발생했습니다.간단히 말하면docker-compose up -d(SUDO 미포함)
볼륨은 다음과 같이 정의됩니다.
...
volumes:
- ./production/mysql:/var/lib/mysql:z
...
모든 것이 잘 작동하고 있습니다../production디렉토리가 생성됩니다(볼륨이 매핑된 위치).
그러나 다운/업 상태에서 도커 컨테이너를 다시 시작하려고 하면 다음 오류가 나타납니다.
error checking context: 'no permission to read from '…/production/mysql/aria_log.00000001'
언급한 파일을 확인해보니 root:root 권한이 필요합니다.이는 파일이 컨테이너 내에서 루트 사용자와 함께 생성되기 때문입니다.그래서 나는 문서에 언급된 네임스페이스를 사용하려고 했다.
어쨌든, 에러는 아직 발생합니다.아이디어나 참고 자료가 있나요?
감사합니다.
도커 작성 파일:
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}서비스를 제공합니다.
달려.UID=${id -u} GID=${id -g} docker-compose up이렇게 하면 컨테이너 내의 사용자가 호스트의 사용자와 동일한 UID/GID를 가지며 컨테이너 내에서 작성된 파일이 적절한 권한을 갖게 됩니다.
메모: Mac용 도커(사용:osxfsdriver)는 이 작업을 백그라운드에서 수행하므로 사용자 및 그룹에 대해 걱정할 필요가 없습니다.
Docker 데몬을 root 이외의 사용자로 실행합니다.이것이 목적에 도움이 될 수 있습니다.
모든 문서가 여기에 있습니다.
언급URL : https://stackoverflow.com/questions/70512898/docker-volume-mariadb-has-root-permission
'source' 카테고리의 다른 글
| MySQL 쿼리 - 오늘에서 최근 30일 사이의 레코드 (0) | 2022.09.12 |
|---|---|
| 파라미터가 리터럴 null 값인 경우 오버로드된 메서드는 어떻게 선택됩니까? (0) | 2022.09.12 |
| 플롯 배경색을 변경하는 방법 (0) | 2022.09.12 |
| PEP8에 준거하여 E501을 방지하는 매우 긴 문자열 작성 방법 (0) | 2022.09.12 |
| String을 사용하여 JSON 개체를 만드는 방법 (0) | 2022.09.12 |