Simplify

jenkins를 docker로 구동 시 사용자 변경하기 (Modify user in jenkins with docker) 본문

Web & Server/Docker & Container

jenkins를 docker로 구동 시 사용자 변경하기 (Modify user in jenkins with docker)

Simplify - Jonghun 2019. 6. 17. 15:09

docker 로 각종 서비스를 올리는 데 활용하고 있고, 현재까지는 mariadb, tomcat, jenkins 세 가지 서비스를 올려둔 상태입니다.

 

docker 의 경우 repository 설정을 통해서 docker container 내부의 특정 폴더를 외부(Host)의 특정 폴더로 mount 하여 사용할 수 있습니다. 이를 활용해서 mariadb 의 각종 데이터 디렉토리(mysql 폴더 등)와 tomcat 의 webapp, log 폴더 등을 Host에 mount 하여 사용하고 있습니다. 이와 마찬가지로 jenkins의 폴더 jenkins_home 도 그렇게 마운트하려고 했더니 자꾸 permission error 가 나오면서 동작이 되지 않습니다. 예를 들어, tomcat 같은 경우, 내부의 root 계정으로 실행이 되기 때문에 외부 폴더에 permission을 가지는데 반해, jenkins 는 내부적으로 jenkins 라는 계정을 통해서 실행되기 때문에 이러한 문제가 발생합니다. 

 

이를 해결하기 위해서 여러가지 방법을 가이드하고 있고, 저 역시 다 수행해 보았지만, 제가 찾은 방법 중 가장 나아보이는 것을 찾아 아래와 같이 공유합니다. 거의 대부분의 가이드가 사용자마다의 id값이 존재하고, 그 값을 추가해주는 방법, 혹은 설치되고 나서 사용자 permission을 chmod / chown 등을 통해서 변경하는 방법 등이 존재합니다만, 저는 그 중에서 jenkins 계정을 생성하여 docker 그룹에 추가해주는 방법을 사용하기로 하였습니다. 

 

우선 아래와 같이 입력하여 jenkins 계정을 생성합니다. 

$ sudo useradd jenkins

 

그리고 다음과 같이 입력하여 docker 그룹에 jenkins 계정을 추가합니다. 

$ sudo usermod -aG docker jenkins

 

이렇게 하면 다음과 같이 jenkins_home 디렉토리를 외부 host 로 mount 해도 정상 동작함을 확인하였습니다. 참고용으로 제 docker-compose.yml 파일을 공유합니다. 

 

version: '3.1'

services:
  jenkins:
    image: jenkins/jenkins:2.176.1
    container_name: "jenkins"
    restart: always
    ports:
      - "60180:8080"
        #      - "60150:50000"
    volumes:
      - ~/docker/jenkins/var/jenkins_home:/var/jenkins_home

 

Comments