Jenkins 설치 (도커 컨테이너)

2025. 2. 10. 16:47·Docker

 ansible 배포 자동화 구성을 위해 Jenkins 설치

 

 

우선 설치까지만 진행하고 구성은 다음에...


 

1. Jenkins 컨테이너 실행

$ docker run -d --name jenkins \
 -e TZ=Asia/Seoul \
 -p 8888:8080 -p 50000:50000 \
 -v jenkins-data:/var/jenkins_home \
 -v /var/run/docker.sock:/var/run/docker.sock \
 --restart unless-stopped \
 jenkins/jenkins
Unable to find image 'jenkins/jenkins:latest' locally
latest: Pulling from jenkins/jenkins
fd0410a2d1ae: Pull complete
8fd0e6949700: Pull complete
0b8c4de74554: Pull complete
6cb562e5f934: Pull complete
02bbf1f6f7ac: Pull complete
af526f34b1b3: Pull complete
301ce19b0e14: Pull complete
02660793e834: Pull complete
d2c171e62e2e: Pull complete
f8f232577aa1: Pull complete
27a6ae3e33d5: Pull complete
d3633a8df18a: Pull complete
Digest: sha256:53e112cf5556582ddcc94e08ce1ae2066070d8a7e45ca57a6bd7409544aa35de
Status: Downloaded newer image for jenkins/jenkins:latest
2a556be33987a857c0edcbca19b5530464dc2ac2754c4ab81c9d2f4427fd1344

 

더보기

-d

  • 데몬 모드로 컨테이너를 백그라운드에서 실행

-p 8888:8080

  • 호스트의 8888 포트를 컨테이너의 8080 포트에 매핑(Jenkins 웹 인터페이스)

-p 50000:50000

  • 호스트의 50000 포트를 컨테이너의 50000 포트에 매핑(Jenkins 에이전트 통신용)

-v jenkins-data:/var/jenkins_home

  • Jenkins 데이터를 영구적으로 저장하기 위해 Docker 볼륨 'jenkins-data'를 컨테이너의 '/var/jenkins_home' 디렉토리에 마운트.

-v /var/run/docker.sock:/var/run/docker.sock

  • 호스트의 Docker 소켓을 컨테이너 내부에 마운트
  • Jenkins 컨테이너 내에서 호스트 시스템의 Docker 데몬에 접근할 수 있게 하기 위함
    "Docker-out-of-Docker" 또는 "DooD"라고 부름
  • Jenkins 컨테이너가 호스트의 Docker 데몬에 완전한 접근 권한을 가져, 잠재적인 보안 위험이 있을 수 있음.

 

Jenkins 컨테이너 실행 확인

$ docker ps
CONTAINER ID   IMAGE               COMMAND                  CREATED          STATUS                  PORTS                                              NAMES
2a556be33987   jenkins/jenkins     "/usr/bin/tini -- /u…"   23 seconds ago   Up 23 seconds           0.0.0.0:50000->50000/tcp, 0.0.0.0:8888->8080/tcp   jenkins

 

 

 

2. docker log에서 Jenkins 패스워드 확인

$ docker logs jenkins
Running from: /usr/share/jenkins/jenkins.war
webroot: /var/jenkins_home/war
2025-02-10 07:11:56.539+0000 [id=1]     INFO    winstone.Logger#logInternal: Beginning extraction from war file
2025-02-10 07:11:57.809+0000 [id=1]     WARNING o.e.j.ee9.nested.ContextHandler#setContextPath: Empty contextPath
2025-02-10 07:11:57.900+0000 [id=1]     INFO    org.eclipse.jetty.server.Server#doStart: jetty-12.0.16; built: 2024-12-09T21:02:54.535Z; git: c3f88bafb4e393f23204dc14dc57b042e84debc7; jvm 17.0.14+7
2025-02-10 07:11:58.483+0000 [id=1]     INFO    o.e.j.e.w.StandardDescriptorProcessor#visitServlet: NO JSP Support for /, did not find org.eclipse.jetty.ee9.jsp.JettyJspServlet
2025-02-10 07:11:58.549+0000 [id=1]     INFO    o.e.j.s.DefaultSessionIdManager#doStart: Session workerName=node0
2025-02-10 07:11:58.978+0000 [id=1]     INFO    hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
2025-02-10 07:11:59.130+0000 [id=1]     INFO    o.e.j.s.handler.ContextHandler#doStart: Started oeje9n.ContextHandler$CoreContextHandler@2776015d{Jenkins v2.496,/,b=file:///var/jenkins_home/war/,a=AVAILABLE,h=oeje9n.ContextHandler$CoreContextHandler$CoreToNestedHandler@b174a73{STARTED}}
2025-02-10 07:11:59.147+0000 [id=1]     INFO    o.e.j.server.AbstractConnector#doStart: Started ServerConnector@719d35e8{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
2025-02-10 07:11:59.162+0000 [id=1]     INFO    org.eclipse.jetty.server.Server#doStart: Started oejs.Server@340da44c{STARTING}[12.0.16,sto=0] @3515ms
2025-02-10 07:11:59.163+0000 [id=26]    INFO    winstone.Logger#logInternal: Winstone Servlet Engine running: controlPort=disabled
2025-02-10 07:11:59.345+0000 [id=25]    INFO    jenkins.model.Jenkins#<init>: Starting version 2.496
2025-02-10 07:11:59.431+0000 [id=34]    INFO    jenkins.InitReactorRunner$1#onAttained: Started initialization
2025-02-10 07:11:59.446+0000 [id=43]    INFO    jenkins.InitReactorRunner$1#onAttained: Listed all plugins
2025-02-10 07:12:00.347+0000 [id=37]    INFO    jenkins.InitReactorRunner$1#onAttained: Prepared all plugins
2025-02-10 07:12:00.353+0000 [id=32]    INFO    jenkins.InitReactorRunner$1#onAttained: Started all plugins
2025-02-10 07:12:00.354+0000 [id=32]    INFO    jenkins.InitReactorRunner$1#onAttained: Augmented all extensions
2025-02-10 07:12:00.542+0000 [id=33]    INFO    jenkins.InitReactorRunner$1#onAttained: System config loaded
2025-02-10 07:12:00.543+0000 [id=45]    INFO    jenkins.InitReactorRunner$1#onAttained: System config adapted
2025-02-10 07:12:00.544+0000 [id=46]    INFO    jenkins.InitReactorRunner$1#onAttained: Loaded all jobs
2025-02-10 07:12:00.546+0000 [id=36]    INFO    jenkins.InitReactorRunner$1#onAttained: Configuration for all jobs updated
2025-02-10 07:12:00.565+0000 [id=60]    INFO    hudson.util.Retrier#start: Attempt #1 to do the action check updates server
2025-02-10 07:12:01.007+0000 [id=40]    INFO    jenkins.install.SetupWizard#init:

*************************************************************
*************************************************************
*************************************************************

Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:

패스워드

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

*************************************************************
*************************************************************
*************************************************************

2025-02-10 07:12:06.843+0000 [id=40]    INFO    jenkins.InitReactorRunner$1#onAttained: Completed initialization
2025-02-10 07:12:06.859+0000 [id=25]    INFO    hudson.lifecycle.Lifecycle#onReady: Jenkins is fully up and running
2025-02-10 07:12:08.438+0000 [id=60]    INFO    h.m.DownloadService$Downloadable#load: Obtained the updated data file for hudson.tasks.Maven.MavenInstaller
2025-02-10 07:12:08.439+0000 [id=60]    INFO    hudson.util.Retrier#start: Performed the action check updates server successfully at the attempt #1

 

 

 

3. 웹브라우저를 열고 Jenkins 접속

  • http://dockerIP:8888
  • log에서 확인한 패스워드를 입력하여 잠금 해제

 

 

 

4. Customize Jenkins

  • Install suggeted plugins 선택하여 초기 플러그인 모두 설치

 

 

 

 

5. 관리자 계정 생성

 

 

 

6. 설치 마무리

  • 접속 주소 확인 후 Save and Finish 클릭

 

  • Start using Jenkins 클릭

 

 

 

7. Jenkins 접속 확인

 

 

저작자표시 비영리 변경금지 (새창열림)
'Docker' 카테고리의 다른 글
  • 쿠버네티스(k8s) 클러스터 pod 생성 테스트 (deployment와 run 비교)
  • 쿠버네티스(k8s) 클러스터 만들기
  • NTP 서버 구성 (도커 컨테이너, Chrony)
  • Docker 컨테이너 이전 (데이터 포함)
기억보다는 기록을...
기억보다는 기록을...
내가 보려고 정리하는 글..
  • 기억보다는 기록을...
    메모장
    기억보다는 기록을...
    • 분류 전체보기
      • 클라우드(Azure, AWS, Alibaba)
      • 모니터링(Zabbix,Grafana)
      • 가상화(VMWare, Hyper-V)
      • Docker
      • Ansible
      • Linux
      • Windows
      • 이것저것
      • SQL
      • -------------------------
      • 재테크
  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.2
기억보다는 기록을...
Jenkins 설치 (도커 컨테이너)
상단으로

티스토리툴바