AWS EC2 ubuntu에 이미 도커를 설치했다는 전제로 아래 과정을 실행한다.
이번 포스트는 Jenkins를 설치하고 서버 구축까지 완료하는 방법까지만 작성했다.
도커 허브에 저장되어있는 jenkins/jenkins 이미지를 pull한다.
$ docker pull jenkins/jenkins
jenkins 컨테이너를 관리자(root)권한으로 생성한다.
$ docker run --name jenkins -d -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock -v jenkins_home:/var/jenkins_home -u root jenkins/jenkins
※ 8080이 jenkins 기본 포트
-v /var/run/docker.sock:/var/run/docker.sock
: 호스트의 Docker 소켓을 컨테이너 내부의 Docker 소켓과 공유하는 옵션. Docker 컨테이너 내부에서 다른 컨테이너를 실행하거나 다룰 수 있도록 함.-v jenkins_home:/var/jenkins_home
: 호스트의 디렉토리 jenkins_home을 컨테이너 내부의 /var/jenkins_home 디렉토리와 공유하는 옵션. 해당 디렉토리는 Jenkins 설정 및 데이터를 저장하는 데 사용.{EC2 IP주소}:8080
으로 접속한다.
$docker logs [jenkins 컨테이너ID]
입력하면 아래와 같이 나오는데 화살표 부분을 입력하면 된다.Install suggested plugins 클릭하여 Plugin 설치(자동)
Jenkins 컨테이너에 Docker를 설치하는 방법
테스트로 Jenkins웹에서 '새 작업'을 누르고 docker pull & docker run을 통해 빌드 작업을 해보면 아래와 같은 docker not found
에러가 뜬다. 이는 jenkins에 아직 도커가 설치되어있지 않았다는 뜻이다.
※ 이미지 출처 : 동빈나 유튜브
따라서 Jenkins 컨테이너에 Docker를 설치해야한다.
jenkins 컨테이너 실행
$ docker exec -it --user root jenkins /bin/bash
docker 설치
docker-compose 설치 (필자는 docker-compose를 통해 빌드할 것이기 때문)
$ curl https://get.docker.com/ > dockerinstall && chmod 777 dockerinstall && ./dockerinstall
$ apt install docker-compose
▲ jenkins 컨테이너에 성공적으로 도커가 설치된 것을 확인할 수 있다.
docker.sock 파일의 권한을 666으로 변경하여 그룹 내 다른 사용자도 접근 가능하게 변경
$ exit // 컨테이너 접속해제 후 진행
$ sudo chmod 666 /var/run/docker.sock
다음 포스트에서는 본격적으로 Pipeline script을 작성하여 Jenkins CI/CD 파이프라인을 구축해보겠다.
※ 참고
[Jenkins 로 도커 이미지 Build & Push 자동화하기]
[동빈나 유튜브]도커(Docker) 활용 및 배포 자동화 실전 초급 ⑩ Jenkins를 이용해 Docker 프로젝트 빌드해보기