Dev/Infra | Cloud

Jenkins | CI/CD Pipeline 구축 - 07. SSH + Docker(in VM) 환경세팅

vanss 2022. 9. 28. 01:34
본 글은 Docker를 기반으로 Jenkins의 기본적인 사용방법을 공부하고 추후 작업 시 중복되는 작업비용을 줄이기 위한 참고 및 정리 글이라서, 몇몇 배경 내용이 빠져있을 수 있는 점 참고 부탁드립니다. 🙋‍♂️ (피드백은 언제든지 환영합니다. 🤩)

 

 

스크립트 설정

  • jenkins에서 아래와 같은 스크립트가 실행될 수 있게 설정하여야 한다.
    1. war파일을 SSH를 이용해서 서버 2에 복사
    2. 서버 2에서 Dockerfile과 war파일을 합쳐서 Docker Image를 빌드
    3. 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가 정상적으로 실행할 수 있는지 체크해본다.