이 게시물은, 여러 게시물들과 유튜브를 참고하여 전체 과정을 정리한 글입니다.
출처 링크는 맨 아래에 첨부하였습니다.
EC2 인스턴스 생성 → EC2 인스턴스에 docker 설치 → docker를 활용하여 Jenkins 설치 과정을 담았습니다.
저는 Mac m2 를 사용하고 있습니다.
IAM 계정만 만들어두면(권한 부여 필요 - ec2FullAccess 등), 아래 모든 과정을 순서대로 진행하기만 하면 됩니다.
start!
EC2 인스턴스 생성 및 연결
1. aws 접속 후 ec2 들어가기
2. 인스턴스 시작(생성)
3. 인스턴스 이름 적기
4. 우분투 선택 (필요에 따라 다른 옵션 선택 가능)
5. 목적에 맞게 원하는 인스턴스 유형 선택
6. 키페어 생성 (기존 키페어 사용을 원한다면 기존 키페어를 선택해도 됨) → 다운로드 받은 키페어 파일을 원하는 곳에 위치시킨다. (추후 서버 실행 시 필요함)
7. 원하는 스토리지 구성 선택 후 인스턴스 시작 누르기
※ 여기서 사진엔 없지만 빨간 네모 위를 보면, 'SSH 트래픽 허용'을 포함한 3개의 체크박스 모두 체크해줘야 한다.
8. 인스턴스 생성 완료 → 인스턴스로 들어가면 생성된 것을 확인할 수 있다.
9. 인스턴스에 연결하기위해 ssh 명령어 복사해두기
10. iterm 열기 → 아까 다운받은 키페어 파일이 있는 경로로 들어가기 → ssh 키파일 권한 수정 ( chmod 600 MyKeyPair.pem ) → 방금 복사해둔 명령어 입력 (만약 중간에 yes 입력하라고 나오면 yes 입력하면 된다.)
EC2 인스턴스에 도커 설치
11. 패키지 업데이트
sudo apt update
12. https 관련 패키지 설치
sudo apt install apt-transport-https ca-certificates curl software-properties-common
13. docker repository 접근을 위한 GPG 키 설정 및 repository 등록
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
14. 다시 패키지 업데이트
sudo apt update
15. 도커 최신 버전 설치
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
16. 도커 설치 확인 (아래 사진처럼 뜨면 설치 완료)
docker --version
17. 현재 사용자를 docker group에 포함
루트 사용자 가 아닌 일반 사용자 가 docker 명령어를 사용하려고 하면, Permission Denied 에러가 발생한다.
따라서 sudo 없이 docker 명령어를 수행하기 위해 Docker group 에 현재 사용자 이름 을 등록한다.
sudo usermod -aG docker ${USER}
18. 터미널 재시작(필수) 후 결과 확인(끝에 도커가 있는지 확인한다.)
id -nG
19. 다시 패키지 업데이트
sudo apt update
도커를 활용하여 젠킨스 설치
20. 인스턴스 연결 후 도커 실행 (이미 인스턴스 연결 및 도커 실행 중인 경우 제외)
sudo systemctl start docker
21. 젠킨스 이미지 다운로드
docker pull jenkins/jenkins:lts
22. 젠킨스 컨테이너 띄우기
sudo docker run -d -p 9090:8080 -v /jenkins:/var/jenkins_home --name jenkins -u root jenkins/jenkins:lts
-d : detached mode 이다. 백그라운드 로 실행할 수 있게 해준다.
-p : host(앞)와 container(뒤)의 포트를 연결해준다.(port forwarding) → 로컬Port: 컨테이너Port
-v : host(앞)와 container(뒤)의 디렉토리를 연결해준다.(mount) → 로컬Directory:컨테이너Directory
-U : 실행할 사용자 이름을 지정한다.
--name : 실행될 컨테이너의 이름을 지정한다.
+) /home/ubuntu/.ssh 디렉토리와 /var/run/docker.sock 파일을 컨테이너 내부에 마운트하여 컨테이너 내부에서 호스트의 SSH 키와 Docker 데몬에 접근할 수 있도록 설정
sudo docker run -d -p 9090:8080 -p 50000:50000 -v /jenkins:/var/jenkins_home -v /home/ubuntu/.ssh:/root/.ssh -v /var/run/docker.sock:/var/run/docker.sock --name jenkins -u root jenkins/jenkins:lts
23. 현재 실행중인 컨테이너 확인
docker ps
↳ 여기에 -a 옵션을 주면, 실행되고 있지 않는 컨테이너를 포함한 모든 컨테이너를 출력한다.
24. 9090 포트로 들어오는 요청 허용하기
25. 젠킨스 접속 ( 퍼블릭 ip 주소 + :9090 ) ⇒ 접속이 성공하면 아래 Jenkins 화면이 뜰 것이다.
26. 아래 코드를 터미널에 붙여넣기하여 패스워드 알아내고, 출력된 패스워드를 아래 화면에 붙여넣기 한다. 이후 사진과 같이 선택한다.
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
27. 아래와 같은 화면이 뜨면 성공!
cf. 도커 컨테이너 시작/중지/삭제
# 시작
docker start [컨테이너ID or 컨테이너Name]
# 중지
docker stop [컨테이너ID or 컨테이너Name]
# 삭제
docker rm [컨테이너ID or 컨테이너Name]
인스턴스 중지했다가 다시 시작할 때,
인스턴스 연결 → docker start jenkins → ip주소:9090 으로 연결 하면 된다.
> 참고 링크
https://velog.io/@softwarerbfl/AWS-EC2-인스턴스-생성하기
https://adjh54.tistory.com/350
https://everydayyy.tistory.com/121
https://hudi.blog/install-jenkins-with-docker-on-ec2/
https://gre-eny.tistory.com/345
https://youtu.be/29bnOjIOeec?si=z46XtvRqL4w4Z70m
! 도움이 되셨다면 공감 눌러주세요 !
'[백엔드] 여러가지 정리' 카테고리의 다른 글
git commit 내역 삭제 (최초 커밋 / 최근 커밋) (0) | 2024.05.21 |
---|---|
[CI/CD] ec2, jenkins, github webhook, docker hub, slack (0) | 2024.05.11 |
ec2 인스턴스에 Docker 를 통해 Nginx 설치하기 (0) | 2024.05.08 |
스프링 프로젝트 생성하기 (0) | 2023.11.05 |