앞선 포스팅에서 Portainer를 설치했었는데요, 이번 포스팅에서는 Portainer에서 Jenkins 컨테이너를 만들어보도록 하겠습니다.
포스팅 환경
- OS : Ubuntu 20.04.3 LTS
- CPU : AMD Ryzen 7 PRO 4750G with Radeon Graphics
- RAM : 32GB
- Docker : Community 20.10.8
Pull Jenkins Image
Portainer WebUI로 접속해 Images 메뉴를 클릭합니다.
Image에 Jenkins 이미지 태그를 입력한 뒤, Pull the image 버튼을 클릭합니다.
- Image : jenkins/jenkins:latest
이미지가 다운로드(Pull)되면 아래 Images 리스트에 Jenkins 이미지가 추가됩니다.
Volume 생성
좌측 메뉴에서 Volumes 메뉴를 클릭한 뒤 Add volume 버튼을 클릭합니다.
생성할 volume의 Name을 입력하고 Create the volume 버튼을 클릭합니다.
- Name : jenkins_volume
정상적으로 volume이 생성되어 Volumes 목록에 노출됩니다.
Jenkins 컨테이너 생성
좌측 메뉴에서 Containers 메뉴를 클릭하고, Add container 버튼을 클릭합니다.
Image configuration
생성할 컨테이너의 이름을 지정하고, Image에 j를 입력하면 앞서 다운로드(Pull) 받은 Jenkins 이미지가 자동완성됩니다.
Network ports configuration
외부로 노출시킬 포트를 지정하기 위해 Manual network port publishing 항목 옆 publish a new network port 버튼을 클릭합니다. 그러면 아래에 host 포트와 container 포트를 지정하는 항목이 추가되는데, Jenkins의 기본 포트가 8080이므로 container 포트는 8080으로, host 포트는 원하시는 포트를 지정해주세요.
- host : 호스트 포트. 원하는 포트 입력
- container : 내부 포트. Jenkins 기본포트가 8080이므로 8080 입력
Volumes
Advanced container settings 에서 Volumes 탭을 클릭합니다.
Volume mapping 항목 옆 map additional volume 버튼을 클릭합니다.
Jenkins 홈을 앞서 생성한 volume에 매핑합니다.
- container : /var/jenkins_home
- volume : jenkins_volume
다시 한 번 map additional volume을 클릭합니다. 이 설정은 Jenkins에서 docker image를 빌드할 수 있도록 하기 위한 설정입니다.
- container의 Bind 버튼 클릭
- container : /var/run/docker.sock
- host : /var/run/docker.sok
Env
Advanced container settings 에서 Env 탭을 클릭합니다.
Environment variables 항목의 add environment variable 버튼을 클릭하고, 아래 환경 변수를 추가해 젠킨스의 타임존을 서울로 지정해줍니다.
- name : TZ
- value : Asia/Seoul
Restart policy
Advanced container settings 에서 Restart policy 탭을 클릭하고, Restart policy 의 Unless stopped를 선택합니다.
Deploy the container
다시 상단으로 돌아와 Deploy the container 버튼을 클릭해 컨테이너를 생성합니다.
Containers 에서 생성된 컨테이너를 확인할 수 있습니다.
설치 확인
앞서 설정한 포트로 접속해 젠킨스가 정상적으로 설치되었는지 확인합니다.
http://localhost:7602
세팅 마무리
Jenkins 로그인
아직 끝나지 않았습니다! 젠킨스에 접속하면 알 수 있듯이 아래 위치에 있는 패스워드를 복사해 입력해야합니다.
/var/jenkins_home/secrets/initialAdminPassword
앞서 jenkins_volume 볼륨에 젠킨스 컨테이너의 /var/jenkins_home 디렉토리를 마운트했습니다. 그렇다면 jenkins_volume의 디렉토리에서 저 파일을 찾아야된다는것이죠.
좌측 Volumes 메뉴에서 jenkins_volume의 Mount point를 복사합니다.
터미널로 Mount point의 디렉토리로 이동합니다.
hoon@1hoon-server:~$ cd /var/lib/docker/volumes/jenkins_volume/_data
hoon@1hoon-server:/var/lib/docker/volumes/jenkins_volume/_data$ ls -al
합계 88
drwxr-xr-x 13 hoon hoon 4096 8월 21 16:49 .
drwx-----x 3 root root 4096 8월 21 15:56 ..
drwxr-xr-x 4 hoon hoon 4096 8월 21 16:49 .cache
drwxr-xr-x 3 hoon hoon 4096 8월 21 16:49 .java
-rw-r--r-- 1 hoon hoon 0 8월 21 16:49 .lastStarted
-rw-r--r-- 1 hoon hoon 1661 8월 21 16:49 config.xml
-rw-r--r-- 1 hoon hoon 53 8월 21 16:49 copy_reference_file.log
-rw-r--r-- 1 hoon hoon 156 8월 21 16:49 hudson.model.UpdateCenter.xml
-rw------- 1 hoon hoon 1712 8월 21 16:49 identity.key.enc
-rw-r--r-- 1 hoon hoon 171 8월 21 16:49 jenkins.telemetry.Correlator.xml
drwxr-xr-x 2 hoon hoon 4096 8월 21 16:49 jobs
drwxr-xr-x 3 hoon hoon 4096 8월 21 16:49 logs
-rw-r--r-- 1 hoon hoon 907 8월 21 16:49 nodeMonitors.xml
drwxr-xr-x 2 hoon hoon 4096 8월 21 16:49 nodes
drwxr-xr-x 2 hoon hoon 4096 8월 21 16:49 plugins
-rw-r--r-- 1 hoon hoon 64 8월 21 16:49 secret.key
-rw-r--r-- 1 hoon hoon 0 8월 21 16:49 secret.key.not-so-secret
drwx------ 4 hoon hoon 4096 8월 21 16:49 secrets
-rw-rw-r-- 1 hoon root 7152 8월 18 04:50 tini_pub.gpg
drwxr-xr-x 2 hoon hoon 4096 8월 21 16:49 updates
drwxr-xr-x 2 hoon hoon 4096 8월 21 16:49 userContent
drwxr-xr-x 3 hoon hoon 4096 8월 21 16:49 users
drwxr-xr-x 11 hoon hoon 4096 8월 21 16:49 war
secrets/initialAdminPassword 내용을 복사해 젠킨스에 로그인합니다.
로그인에 성공하시면 완료!
rootless Docker 설정
Portainer에서 Docker build를 수행하기 위해서는 rootless 설정을 해줘야합니다.
터미널에서 아래 명령어를 실행한 뒤, 재부팅 해주시면 됩니다.
sudo usermod -aG docker 사용자
'🐳 DOCKER' 카테고리의 다른 글
[Portainer] Docker를 WebUI로 관리하기 - 설치하기 (0) | 2021.08.21 |
---|---|
[Docker] 컨테이너 bash에 vim 설치하기 (4) | 2020.06.01 |
[Docker] MariaDB 설치하기 (2) | 2020.06.01 |
[Docker] Windows10에서 Docker 설치 (0) | 2020.05.31 |