2017-02-13 6 views
4

내부 테스트 환경에서 우리는 vSphere 기반 서버에서 CentOS VM을 프로비저닝합니다. 이미지는 LDAP를 통한 인증을 지원하는 패키지 및 관련 구성의 vanilla 7.1입니다. Docker 1.13.1을 xfs 파일 시스템에 OverlayFS 드라이버와 함께 설치했습니다.Docker 호스트 마운트 볼륨 사용 권한

mkdir data 
echo "hello from host" > data/host-msg.txt 
docker run -ti --rm -v $(pwd)/data:/data testimage bash 

컨테이너 내부 :

echo "hello from container" > /data/container-msg.txt 
bash: /data/container-msg.txt: Permission denied 

용기 내부의 디렉토리 내용을 목록 :

drwxr-xr-x 2 12345 13000 25 Feb 12 21:36 data 
drwxr-xr-x 5 root root 360 Feb 12 21:36 dev 
drwxr-xr-x 1 root root  62 Feb 12 21:36 etc 

data 디렉토리 쇼 호스트에

FROM centos:7 
RUN useradd dockeruser 
USER dockeruser 
VOLUME /data 

username/groupname이 아닌 uid/gid 형식의 소유권.

이 동작을 설명하는 많은 기사와 질문을 읽었으며 variousstrategies ~ workaround입니다.

그러나. Fedora 25 개발 시스템에서이 문제는 발생하지 않습니다. 위의 절차를 수행하고 호스트 마운트/데이터 마운트에 쓸 수 있으며 디렉토리 목록에 사용자 이름/그룹 이름이 표시됩니다. , 아니이 UID/GID 매핑, 사용자 네임 스페이스로 장난 -

/ 
    drwxrwxr-x 2 dockeruser dockeruser 4096 Feb 12 04:36 data 
    drwxr-xr-x 5 root  root   360 Feb 12 22:00 dev 
    drwxr-xr-x 1 root  root  4096 Feb 12 22:00 etc 

/data 
    -rw-rw-r-- 1 dockeruser dockeruser 21 Feb 12 22:04 container-msg.txt 

내가 libvirt를 통해 내 dev에 시스템에 CentOS는 7.1 VM을 서서 다시 같은 결과를 얻었다 실험실 구성에 최대한 유사 모든 것을 만들려면 아무것도. 상자에 넣은 상태에서 Just Worked 컨테이너 내부에서 호스트에 볼륨을 마운트합니다.

이 동작을 어떻게 설명 할 수 있습니까? 실험실 VM의 LDAP가 파일 시스템 수준에서 권한 문제를 발생 시키는가? 이 문제를 해결하고 문제를 해결하기 위해 운영 팀에 조사하거나 일시적으로 사용 중지하도록 요청할 수있는 구체적인 내용이 있습니까?

호스트 마운트 볼륨의 사용 권한 문제가 깨끗한 CentOS 또는 Fedora Workstation에서 나에게 전혀 문제가되지 않는다면 Docker에서 계속 문제가되는 이유는 무엇입니까? 커뮤니티? 이 설정에는 다른 모든 사람들이 사용하는 것과 근본적으로 다른 구성이 있습니까 (팀의 랩 VM 포함)?

+0

해결책을 찾았습니까? – Xplouder

답변

0

데이터 디렉토리의 소유권이 username/groupname이 아닌 uid/gid 형식으로 표시됩니다.

이것은 컨테이너에이 uid/guid (/ etc/passwd 확인)에 대한 매핑이 없기 때문입니다. 사실 실제로 파일은 uid/guid가 이고 항상입니다. 이것은 응용 프로그램/os가 이름을 돌려주는 역할을합니다. 내부/외부 컨테이너의 경로를 stat으로 시도하십시오. 그들은 동일한 uid/guid를 가져야합니다.

stat /data 
stat /path/on/host 
관련 문제