2017-02-13 2 views
0

나는 몇 가지 고정 표시기 용기가 내가 사용 container_1의 CLI에 액세스 할 수 있어요 그 중 하나가 container_1도커 컨테이너 쓰기 권한

되는, 내 컴퓨터에서 실행 한이

[email protected]~/D/m/l/db> docker exec -it container_1 bash 
[email protected]:/$ 

이 날 container_1로 이동 할 수 있습니다 cli하지만 쓰기 권한이 없습니다. 다음 명령은

[email protected]~/D/m/l/db> docker exec -it container_1 touch test.txt 
bash: test.txt: Permission denied 
[email protected]~/D/m/l/db>docker exec -it container_1 bash 
[email protected]:/$ touch test.txt 
bash: test.txt: Permission denied 

는 또한 --previleged 옵션을 사용하여 시도 권한 거부 오류를 제공하지만, 문제는 그래서 난이 질문에

  1. 어떻게이

    [email protected]~/D/m/l/db> docker --previleged=true exec -it container_1 touch test.txt 
    bash: test.txt: Permission denied 
    

    을 지속 고정 표시기 작업에 권한?

  2. 도커 파일 시스템에 대한 이러한 종류의 수정이 권장됩니까? 이유가 없다면?

최근에 도커를 사용하기 시작했습니다. 즐겁게 질문 해주세요. 미리 감사드립니다 :)

답변

2

Docker는 리눅스 파일 시스템 사용 권한에 바인딩 된 리눅스 사용자로 명령을 실행합니다. ,

  1. 당신이 (루트이 기본값으로 명령을 실행하는 UID를하지만, Dockerfile에 USER 명령을 사용하여 이미지에서 재정의 할 수 있습니다, 또는 docker run CLI에 : 그럼이 질문에 대한 대답에 따라 다릅니다 또는 docker-compose.yml 파일 내에서).

  2. 상대 경로를 사용하고 있기 때문에 명령이 실행되는 위치입니다. 기본값은 /이지만 다시 다양한 방법으로 작업 디렉토리를 변경하여 덮어 쓸 수 있습니다. 가장 많이 사용되는 디렉토리는 Dockerfile 내의 WORKDIR입니다.

  3. 해당 위치에서의 디렉터리 및 파일 사용 권한.

컨테이너 내에서 ls -al을 사용하면 현재 사용 권한을 볼 수 있습니다. 현재 uid를 보려면 id을 사용하십시오. docker exec을 사용하면 현재 사용자를 변경하는 플래그를 전달할 수 있습니다. 사용 권한을 변경하려면 chmod을 사용하여 사용 권한을 직접 변경하고 chown 사용자 소유권을 변경하고 chgrp을 사용하여 그룹 소유권을 변경할 수 있습니다. 예 :

docker exec -u root container_1 chmod 777 . 

이 명령을 사용하면 모든 사용자가 루트 사용자로 실행하여 컨테이너 내부의 현재 폴더를 읽거나 쓸 수 있습니다.

이것은 사용자가 SE Linux 또는 AppArmor에서 다른 보안을 활성화하지 않았다고 가정합니다.