programing

도커 구성 볼륨 사용 권한 리눅스

nicegoodjob 2023. 2. 11. 23:32
반응형

도커 구성 볼륨 사용 권한 리눅스

도커 컨테이너에서 워드프레스를 실행하려고 합니다.docker-compose.yaml파일은 다음과 같습니다.

version: "2"
services:
  my-wpdb:
    image: mariadb
    ports:
      - "8081:3306"
    environment:
      MYSQL_ROOT_PASSWORD: ChangeMeIfYouWant
  my-wp:
    image: wordpress
    volumes:
      - ./:/var/www/html
    ports:
      - "8080:80"
    links:
      - my-wpdb:mysql
    environment:
      WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant

도커 구조를 구축하면 볼륨이 마운트되지만 루트에 속합니다.

나는 그것을 바꾸려고 했다:

my-wp:
  image: wordpress
  user: 1000:1000    # added
  volumes:
    - ./:/var/www/html
  ports:
    - "8080:80"
  links:
    - my-wpdb:mysql
  environment:
    WORDPRESS_DB_PASSWORD: ChangeMeIfYouWant

이제 파일을 편집할 수 있습니다.하지만 그 컨테이너는 더 이상 웹사이트에 서비스를 제공하지 않습니다.

이 허가 문제를 해결하는 올바른 방법은 무엇입니까?

도커 구성 및 도커 실행 참조에 따르면user옵션은 컨테이너에서 실행 중인 프로세스의 사용자 ID(및 그룹 ID)를 설정합니다.이 설정을 하면1000:1000웹 서버가 포트 80에 바인드할 수 없게 되었습니다.1024 미만의 포트에 바인딩하려면 루트 권한이 필요합니다.즉, 추가된 파일을 삭제해야 합니다.user: 1000:1000스테이트먼트를 다시 입력합니다.

공유 볼륨에 대한 권한 문제를 해결하려면 디렉터리의 소유권을 변경해야 합니다.달려.chown 1000:1000 /path/to/volume이 작업은 컨테이너 내부 또는 호스트 시스템에서 직접 실행할 수 있습니다.변경은 지속적이고 즉시 유효합니다(컨테이너를 재시작할 필요가 없습니다).

일반적으로 볼륨은 서브디렉토리에 있어야 합니다.

  volumes:
    - ./public:/var/www/html

올바른 사용자가 소유하는지 확인합니다../public컨테이너를 시작하고 디렉토리가 존재하지 않으면 도커가 대신 작성합니다.이 경우 디렉토리는 다음 사용자가 소유자입니다.root위에서 설명한 대로 수동으로 소유권을 변경해야 합니다.


또는 웹 서버를 권한 없는 사용자로 실행할 수도 있습니다(user: 1000:1000)는 서버가 포트 8080을 리슨하고 루팅을 로 변경합니다.

 ports:
    - "8080:8080"

같은 질문에 답변한 경우 도킹 스테이션의 루트 사용자를 사용하여 모든 권한을 얻습니다.

예:-

node-app:
    container_name: node-app
    image: node
    user: root
    volumes:
      - ./:/home/node/app
      - ./node_modules:/home/node/app/node_modules
      - ./.env.docker:/home/node/app/.env

메모:- user:root = > 에서는 볼륨의 완전한 권한을 부여합니다.

Google Cloud 쉘을 사용하던 중 다음 명령을 통해 WordPress 도커 컨테이너에서 FTP 파일 액세스를 사용할 수 있는 올바른 권한이 사용되도록 설정되었습니다.

sudo chmod 644 -R wordpress-docker-compose

언급URL : https://stackoverflow.com/questions/52917695/docker-compose-volume-permissions-linux

반응형