본문 바로가기

Cloud/Docker, Kubernetes

[Docker] 로컬 시스템과 컨테이너 내부의 user uid 관계성

<테스트 상황>

JBoss 컨테이너를 root가 아닌 일반 유저로 실행하고자 하는 상황

 


 

<Docker Container 내부 user 설정>

Dockerfile 에서 jboss라는 user를 추가하도록 명령어를 추가했으며

해당 jboss 유저의 uid는 1001 로 설정했다.

uid 설정이 중요하다

# add a user for the application, with sudo permissions
RUN useradd -m jboss -u 1001 ; echo jboss: | chpasswd ; usermod -a -G wheel jboss

 

 

JBoss Docker 이미지를 생성하고 해당 이미지로 container를 생성하였다.

container 내부에서 /etc/passwd 를 확인해보면

jboss 유저가 uid 1001로 생성된 것을 확인할 수 있다.

 


 

<Docker Container 외부(로컬 시스템) 유저 설정>

Docker Container 외부, 즉 Docker 데몬을 실행하고 있는 로컬 시스템에서

해당 JBoss 프로세스를 검색하면

jboss 계정이 아닌, 다른 계정으로 실행 중인 것으로 되어있다.

 

JBoss Container 내부에서 jboss 계정의 uid가 1001 으로 세팅되어 있는데,

로컬 시스템에서 uid 1001 에 해당하는 계정은

docker 계정이기 때문이다.

 


 

실제 운영 환경에서는

로컬 시스템과 Container 내부의 유저 uid 설정이 중요할 것으로 생각한다.

 

로컬 시스템에서 우선적으로 각 용도에 맞는 user를 사전에 생성해야 하며,

용도 별 Docker Container 마다 각각 알맞은 uid를 매핑하도록 설정에 신경써야 할 것으로 보인다.

그렇게 해야 운영하면서 알아보기도 쉽고, 보안 상으로도 올바를 것으로 생각한다.