programing

도커 복사 및 소유자 변경

lastcode 2023. 10. 4. 21:58
반응형

도커 복사 및 소유자 변경

다음과 같은 도커 파일이 주어집니다.

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>. 자세한 내용은 아래 참조.

참조:

  1. 빼앗다

언급URL : https://stackoverflow.com/questions/28879364/docker-copy-and-change-owner

반응형