티스토리 뷰

반응형

1. 환경 준비

 

CentOS Mirrors List

 

isoredirect.centos.org

 

Oracle VM VirtualBox

Welcome to VirtualBox.org! News Flash New July 14th, 2020, 2020VirtualBox 6.1.12 released! Oracle today released a 6.1 maintenance release which improves stability and fixes regressions. See the Changelog for details. New July 14th, 2020, 2020VirtualBox 6.

www.virtualbox.org

//docker 설치
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
$ sudo usermod -aG docker your-user

//docker-compose 설치
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose

 

 

Install Docker Desktop on Windows

Docker Desktop for Windows is the Community version of Docker for Microsoft Windows. You can download Docker Desktop for Windows from Docker Hub. This page contains information on installing Docker...

docs.docker.com

    • 환경 준비 후, VM을 사용하는 경우에는 다음의 명령어를 통해 자신의 IP 주소를 확인해둘 것
      • Linux(또는 MAC) : ifconfig
      • Windows : Win+R > cmd > ipconfig
    • 또한, 자신이 jenkins에 사용할 디렉토리를 별도로 생성해두도록 하자.
$ mkdir jenkins_home

 

 

 

2. Docker Container 기반 Jenkins 설치

1). Jenkins image 준비

      • docker pull jenkins/jenkins : jenkins 오피셜 이미지를 local에 pulling
        • 버전 정보를 입력하지 않으므로, 기본적으로 latest tag가 적용되어 최신 버전을 내려받게 됨.
        • 내려받는 docker image는 링크에서 확인이 가능하다.
      • docker images : local에 내려받은 docker image 확인
$ docker pull jenkins/jenkins
Using default tag: latest
latest: Pulling from jenkins/jenkins
3192219afd04: Pull complete
17c160265e75: Pull complete
cc4fe40d0e61: Pull complete
9d647f502a07: Pull complete
d108b8c498aa: Pull complete
1bfe918b8aa5: Pull complete
dafa1a7c0751: Pull complete
deeccd4766ea: Pull complete
bcc1367b0efa: Pull complete
09b54878bbd9: Pull complete
2c79a1dcd446: Pull complete
67fba34677e3: Pull complete
e1c54eb24584: Pull complete
380a5b6306e1: Pull complete
a04cd9c2cc4c: Pull complete
27d929be6185: Pull complete
49dacf731171: Pull complete
d7ef4f41c96a: Pull complete
a724cac8c5e1: Pull complete
Digest: sha256:79f9f1a50c324e40b6ae6c5a4e12ee4b21a87bfb1b64515d8cea6e63b137d366
Status: Downloaded newer image for jenkins/jenkins:latest
docker.io/jenkins/jenkins:latest


$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jenkins/jenkins     latest              f8452248512b        4 days ago          678MB

2). docker로 jenkins 실행

$ docker run -d --restart always --name jenkins \
-p 8080:8080 -v $PWD/jenkins_home:/var/jenkins_home jenkins/jenkins
09705e3fa2007a263b9154b211a04fff933686621ac723375c11b85dfc52fd18



$  docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
09705e3fa200        jenkins             "/bin/tini -- /usr/l…"   2 seconds ago       Up 1 second         0.0.0.0:8080->8080/tcp, 50000/tcp   jenkins
  • -d : docker container를 detach mode(백그라운드)로부터 실행
  • --restart always : docker container가 종료된 경우 항상 재시작
  • --name jenkins : docker container의 이름을 jenkins로 설정
  • -p 8080:8080 : docker host(= 자신의 데스크탑)와 docker container 내부의 포트를 매핑
    • 기본 문법 : -p [DOCKER_HOST_PORT]:[DOCKER_CONTAINER_PORT]
    • 이 경우 데스크탑의 8080 포트와 jenkins container 내부의 8080 포트를 매핑
    • 이후, 자신의 데스크탑으로 들어오는 8080 포트에 대한 요청은 모두 jenkins container로 forwarding된다.
      • docker host port(: 기호의 앞 부분)는 당연히 8080 이외의 자신이 원하는 포트를 써도 무방.
      • 예시 > -p xxxxx:8080
      • : 기호의 뒷 부분은 docker container 내부에서 사용되기로 지정된 포트이므로, 변경하지 말아야 한다.
  • -v $PWD/jenkins_home:/var/jenkins_home : docker host와 docker container 내부의 디렉토리를 매핑
    • 기본 문법 : -v [DOCKER_HOST_DIR]:[DOCKER_CONTAINER_DIR]
    • -p 옵션과 유사하게, 데스크탑의 특정 디렉토리(이 경우, $PWD/jenkins_home)와 container 내부의 디렉토리를 매핑
    • -v 옵션을 사용하지 않는다면 container의 특성 상 내부에서 사용한 정보가 유지되지 않음.
      • 예를 들어, jenkins 내부에서 작업한 정보는 container가 한 번이라도 재실행된다면 사라지게 될 것임!
      • 이를 방지하기 위해 -v 옵션을 필수적으로 사용해준다.
      • -p 옵션과 마찬가지로, : 기호 앞 부분은 자신이 원하는 디렉토리를 지정해줄 수 있다.
  • jenkins : docker run 명령어에 사용할 docker image를 명시

 

3). 또는 docker-compose로 실행

  • 2-2).의 docker로 jenkins를 실행했다면 이하의 작업을 건너뛰도록 한다!
  • docker-compose.yml을 다음과 같이 작성한다.
$ vi docker-compose.yml
version: '3.1'
services:
  jenkins:
    restart: always
    container_name: jenkins
    image: jenkins/jenkins
    ports:
      - "8080:8080"
    volumes:
      - "$PWD/jenkins_home:/var/jenkins_home"
  • 위의 docker-compose.yml은 2-2).의 docker run 명령어와 같은 역할을 한다.
    • docker-compose의 경우 docker run 명령어에 사용될 옵션들을 파일 형태로서 간단하게 관리할 수 있다는 장점이 있음!
  • docker-compose up -d 명령어를 통해 컨테이너를 실행한다.
$ docker-compose up -d
Creating jenkins ... done



$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
b09467a29554        jenkins/jenkins     "/sbin/tini -- /usr/…"   19 seconds ago      Up 18 seconds       0.0.0.0:8080->8080/tcp, 50000/tcp   jenkins

4). Administrator password 확인

  • 다음의 명령어를 입력하여 jenkins container의 로그를 확인하자

$ docker logs -f jenkins
// 중략
*************************************************************
*************************************************************
*************************************************************

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

[YOUR_ADMINISTRATOR_PASSWORD]

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

*************************************************************
*************************************************************
*************************************************************
// 후략
// log 확인을 종료하고 싶을 경우 Ctrl+C
  • Log 중간에서, 위 코드 블록의 [YOUR_ADMINISTRATOR_PASSWORD]에 16진수로 이루어진 문자열을 확인할 수 있다.
  • 해당 값을 별도로 저장해두도록 하자!

 

 

 

3. Jenkins 접속 및 초기 설정

  • VM을 사용한 경우 : http://[YOUR_IP_ADDR]:8080/
    • 그 외의 경우에는 다음의 링크를 사용해도 좋다 :
      http://localhost:8080/ 또는 http://127.0.0.1:8080/
  • 접속시 다음과 같은 UI를 확인할 수 있다.

  • Administrator password에 2-4).의 값을 복사 / 붙여넣기한 후 Continue를 눌러 다음으로 넘어간다.
    • Administrator Password를 확인하지 못했다면 다음의 명령어를 통해 확인할 수 있다 : 
      $ docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
      [YOUR_ADMINISTRATOR_PASSWORD]
  • Customize Jenkins 화면에서, Install suggensted plugins를 눌러 다음으로 넘어간다.
    • Plugin 설치가 전혀 되지 않는다면, jenkins의 버전 문제일 가능성이 높다.
    • docker pull / docker run / docker-compose.yml의 image 명에 jenkins/jenkins가 아닌 jenkins를 사용한 것은 아닌가 확인!
      • 만약 jenkins를 사용했다면 : 
        - docker stop jenkins // jenkins container 중지
        - docker rm jenkins // jenkins container 제거
        - docker rmi jenkins // 사용하지 않을 jenkins image 삭제(rmi = ReMove Image)
        - docker pull jenkins/jenkins // 사용할 jenkins/jenkins image를 다시 pulling
        를 순서대로 실행한 후, 2-2). 부터 다시 시작한다. 굳이 디렉토리까지 삭제할 필요는 없으며, container running 과정에서 자동으로 업그레이드 됨!
  • 이 때, ID / PW는 자유롭게 작성해도 좋다.
    Plugin 설치가 완료되면 이후 Jenkins에서 사용할 User의 정보를 입력한 후, Save and Continue를 눌러다음으로 넘어간다.

  • Instance Configuration은 http://localhost:8080/으로 둔 채 Save and Finish를 눌러 완료한다
  • Jenkins is ready! 메시지가 보이면, Start using Jenkins를 눌러 대시보드를 확인하자!

'Dev. > devops' 카테고리의 다른 글

[Jenkins] Build periodically  (0) 2020.11.10
[Jenkins] 2. Build - Execute Shell 간단 활용  (0) 2020.08.10
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함