source

도커 볼륨 mariadb에 루트 권한이 있습니다.

goodcode 2022. 9. 12. 11:38
반응형

도커 볼륨 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

반응형