티스토리 뷰
반응형
1. 환경 준비
- Linux 환경에서 실습할 경우 : Virtual Box + CentOS 7(또는 다른 배포판)
- Linux 환경에서 부팅 후 다음의 docs guide에 따라 Docker를 설치
- docker(CentOS) : https://docs.docker.com/engine/install/centos/
- docker(Ubuntu) : https://docs.docker.com/engine/install/ubuntu/
- docker-compose : https://docs.docker.com/compose/install/
- 또는 다음의 명령어를 통해 간단하게 설치할 수 있음(위 docs.docker.com 링크에 포함된 내용)
- 위에서 docker와 docker-compose를 설치했다면, 아래를 실행할 필요 없음!
//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
- Windows 환경에서 실습할 경우 : Docker Desktop 설치
- docker-compose는 Docker Desktop에 기본적으로 포함된다고 함.
- https://docs.docker.com/docker-for-windows/install/
- 환경 준비 후, 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]
- 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 과정에서 자동으로 업그레이드 됨!
- 만약 jenkins를 사용했다면 :
- 이 때, 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
링크
TAG
- postgresql
- terraform
- etc
- jQuery
- JPA
- JEST
- Linux
- Docker
- Vault
- shell
- IntelliJ
- 코딩테스트
- AWS
- Node.js
- react
- mysql
- Database
- Spring Cloud Config
- spring boot
- Puppeteer
- dev
- hashicorp
- pgloader
- AWS IoT
- Gradle
- Git
- Java
- javascript
- kotlin
- eureka
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함