파이문

도커 컨테이너 어플리케이션을 호스트 머신의 유저로 실행하기 본문

TIL/도커 Docker

도커 컨테이너 어플리케이션을 호스트 머신의 유저로 실행하기

민Z 2022. 3. 3. 22:37

목적

도커 컨테이너 어플리케이션을 호스트 머신의 유저로 실행하기

이유

도커 컨테이너의 스프링 부트에서 로그를 호스트 머신의 디렉토리에 남기고 싶었다. 그리고 호스트 머신 유저랑 어플리케이션 유저가 항상 같다는 전제가 있음!

디렉토리 마운트

디렉토리를 rw 로 마운트 하였지만, (어플리케이션 로그는 작성이 되고) 톰캣 access log 는 Permission denied 가 떴다. 디렉토리의 권한을 변경하면 해결되는 문제였지만, 777 은 뭔가 꺼려졌다.

priviledged

보안상 사용을 지양하고 있다.

호스트 머신의 유저로 실행하기

리서치 한 방법으로는 2가지 방법이 있다.

  1. 도커 이미지 실행 시 호스트의 유저 정보로 실행하기
  2. 도커 이미지 빌드 시 호스트의 유저 정보와 동일하게 추가하고 어플리케이션을 실행하기

도커 이미지 실행 시 호스트의 유저 정보로 실행하기

도커 실행 명령 시 호스트 머신의 id 값을 넘기는 것이다.

UID=$(id -u)
GID=$(id -g)
docker run -it -d --user ${UID}:${GID} <IMAGE NAME>

실행 할 때 bashUID, GID 가 이미 설정 되어 있다면 warn 로그가 뜰 수도 있다.

도커 이미지 빌드 시 호스트의 유저 정보와 동일하게 추가하여 사용하기

호스트 머신의 유저 정보를 이미 알고 있다고 가정 하에 해당 UIDGID 로 동일하게 유저 정보 추가해서 사용하는 것이다. (adduser 옵션 확인)

RUN addgroup -g <GID> -S <USER> && adduser -u <UID> -D <USER> -G <USER> -H
USER <USER>

주저리

역시 도커는 어려워

참고

Comments