본 글은 Docker를 기반으로 Jenkins의 기본적인 사용방법을 공부하고 추후 작업 시 중복되는 작업비용을 줄이기 위한 참고 및 정리 글이라서, 몇몇 배경 내용이 빠져있을 수 있는 점 참고 부탁드립니다. 🙋♂️ (피드백은 언제든지 환영합니다. 🤩)
스크립트 설정
- jenkins에서 아래와 같은 스크립트가 실행될 수 있게 설정하여야 한다.
- war파일을 SSH를 이용해서 서버 2에 복사
- 서버 2에서 Dockerfile과 war파일을 합쳐서 Docker Image를 빌드
- Docker Image로 컨테이너 생성
- 그전에 타 서버(VM)에 복사해주기 위해 jenkins에 SSH플러그인을 설치해준다.
~ > docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker-server:m1 /usr/sbin/init
Unable to find image 'edowon0623/docker-server:m1' locally
m1: Pulling from edowon0623/docker-server
...
~ > docker images 00:14:39
REPOSITORY TAG IMAGE ID CREATED SIZE
... latest e800a8da9469 8 weeks ago 111MB
edowon0623/docker-server m1 7a5b41421a7c 2 months ago 1.24GB
...
~ > docker ps 00:14:46
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0aa0db42f570 edowon0623/docker-server:m1 "/sbin/init systemct…" 7 minutes ago Up 7 minutes 0.0.0.0:10022->22/tcp, 0.0.0.0:8081->8080/tcp docker-server
3bec5363e25f jenkins/jenkins:lts-jdk11 "/usr/bin/tini -- /u…" 2 days ago Up 2 hours 0.0.0.0:8080->8080/tcp, 0.0.0.0:50000->50000/tcp jenkins-server
- 배포할 VM(컨테이너)를 만들어주고, 정상적으로 만들어졌는지 확인한다.
~ > ssh root@localhost -p 10022 00:17:11
...
root@localhost's password:
Last failed login: Tue Sep 27 15:18:21 UTC 2022 from 172.17.0.1 on ssh:notty
There was 1 failed login attempt since the last successful login.
[root@0aa0db42f570 ~]#
- 만들어진 ssh 서버(가상서버 VM)에 포트를 지정하여 접속을 해본다.
- ifconfig 명령어로 본인 PC의 ip를 확인하여 jenkins 관리 항목의 SSH Servers에서 hostname 란에 적어준다.
- port는 위에서 VM서버를 만들어줄 때 10022로 지정해줬으니 10022로 바꿔준다. 그 후, 아래로 내려 Test Configuration을 진행해본다.
~ > ssh root@localhost -p 10022 00:34:49
root@localhost's password:
Last login: Tue Sep 27 15:18:38 2022 from 172.17.0.1
[root@0aa0db42f570 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: <https://docs.docker.com>
[root@0aa0db42f570 ~]# systemctl start docker
[root@0aa0db42f570 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2022-09-27 15:35:25 UTC; 1s ago
Docs: <https://docs.docker.com>
Main PID: 185 (dockerd)
Tasks: 9
Memory: 101.4M
CGroup: /docker/0aa0db42f570b6c88b8de6a4be1f416d6c92d49bc09bc4a4ba7e3ed0e4110930/system.slice/docker.service
└─185 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
- VM안에서 Docker가 정상적으로 실행할 수 있는지 체크해본다.
'Dev > Infra | Cloud' 카테고리의 다른 글
Docker | Image에 대해 알아보기 (0) | 2022.10.30 |
---|---|
Docker | 기본 개념 정리 (0) | 2022.10.30 |
Jenkins | CI/CD Pipeline 구축 - 06. PollSCM(지속적인 파일 업데이트) (0) | 2022.09.28 |
Jenkins | CI/CD Pipeline 구축 - 05. Tomcat Plugin 세팅 (0) | 2022.09.27 |
Jenkins | CI/CD Pipeline 구축 - 04. Git에서 코드 가져와서 빌드하기 (0) | 2022.09.27 |