도커 복사 및 소유자 변경
다음과 같은 도커 파일이 주어집니다.
FROM ubuntu
RUN groupadd mygroup
RUN useradd -ms /bin/bash -G mygroup john
MKDIR /data
COPY test/ /data/test data
RUN chown -R john:mygroup /data
CMD /bin/bash
복사한 테스트 디렉토리에서 파일 권한을 770으로 설정했습니다.
제가 하면.su john
내 컨테이너 안에서, 나는 내 테스트 디렉토리에 있는 어떤 파일이나 서브디렉토리에도 접근할 수 없습니다.이 문제는 복사된 디렉토리가 여전히 root에 의해 소유되고 권한이 770으로 설정된 aufs 파일 시스템의 소유권과 관련이 있는 것으로 보입니다.
사용 권한을 올바르게 설정할 수 있는 이 문제에 대한 해결 방법이 있습니까?하나는 원래 디렉토리의 권한을 복사하기 전에 컨테이너 사용자의 uid로 설정하는 것입니다.하지만 이건 해킹에 가깝습니다.
A --chown
플래그가 마침내 추가되었습니다.COPY
:
COPY --chown=patrick hostPath containerPath
이 새로운 구문은 도커 17.09에서 작동하는 것 같습니다.
자세한 내용은 PR을 참조하십시오.
해결책을 찾은 것 같아요, 효과가 있어요.데이터 볼륨 컨테이너를 사용하면 효과를 볼 수 있습니다.먼저 외부 디렉토리의 복사본이 들어 있는 Data Volume Container를 만듭니다.
FROM busybox
RUN mkdir /data
VOLUME /data
COPY /test /data/test
CMD /bin/sh
애플리케이션 컨테이너에 사용자가 있는 경우, 이와 같이 보일 수 있습니다.
FROM ubuntu
RUN groupadd mygroup
RUN useradd -ms /bin/bash -G mygroup john
COPY setpermissions.sh /root/setpermissions.sh
CMD /root/setpermissions.sh && /bin/bash
사용 권한 설정 스크립트는 사용자 권한을 설정하는 작업을 수행합니다.
#!/bin/bash
if [ ! -e /data/.bootstrapped ] ; then
chown -R john:mygroup /data
touch /data/.bootstrapped
fi
이제 나는 단지 그것을 사용할 수 밖에 없습니다.--volumes-from <myDataContainerId>
애플리케이션 컨테이너를 실행할 때.
도커 복사 및 소유자 변경(Windows 컨테이너용)
FROM mcr.microsoft.com/windows/servercore:ltsc2019
WORKDIR /src
COPY . /src
RUN takeown /F . /d Y /r
소유자인 다른 사용자의 경우 추가/u <username>
. 자세한 내용은 아래 참조.
참조:
언급URL : https://stackoverflow.com/questions/28879364/docker-copy-and-change-owner
'programing' 카테고리의 다른 글
event.preventDefault를 다시 활성화하는 방법? (0) | 2023.10.04 |
---|---|
Excel 2013의 스프레드시트 비교 스크립트를 작성하는 방법은 무엇입니까? (0) | 2023.10.04 |
Android studio 오류 "지원되지 않는 모듈이 탐지됨:다음 모듈에 대해서는 컴파일이 지원되지 않습니다." (0) | 2023.10.04 |
메모리 내 데이터베이스 디스크에 저장 (0) | 2023.10.04 |
C 다차원 배열의 포인터 주소 (0) | 2023.10.04 |