Search
🛺

인프라 EC2 초기 세팅하기(Docker & Jenkins)

날짜
2025/08/25
태그
공부
프로젝트
개인공간
개인프로젝트
공개여부

EC2 배포 환경 설정

1. 타임존 변경

$ sudo timedatectl set-timezone Asia/Seoul # 서울로 설정 $ timedatectl # 확인
Bash
복사

2. Docker 설치

$ sudo apt update $ sudo apt install -y ca-certificates curl gnupg lsb-release
Bash
복사
ec2 인스턴스가 설치할 수 있는 소프트웨어 업데이트 + Docker를 안전하게 설치하기 위한 기본도구 설치
$ sudo install -m 0755 -d /etc/apt/keyrings $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Bash
복사
docker의 공식 gpg(보안) 키를 다운로드하여 시스템이 신뢰하는 키 목록에 추가
$ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Bash
복사
apt 가 Docker 패키지를 다운로드할 공식 Docker 서버 주소를 시스템에 등록
$ sudo apt update $ sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Bash
복사
위에서 등록한 서버 주소로부터 설치가능한 패키지를 가져옴
그 다음 도커 설치(docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin)
$ sudo usermod -aG docker $USER
Bash
복사
현재 사용자에게 Docker 명령어 권한을 부여.

3. 루트 권한 없이 Docker 실행

// 재로그인 후 실행 $ newgrp docker
Bash
복사

4. Docker 서비스 시작 및 부팅 시 자동 시작 설정

직접 타이핑해야
$ sudo systemctl start docker # Docker 서비스 즉시 시작 $ sudo systemctl enable docker # 서버 부팅 시 Docker가 자동으로 실행되어 컨테이너가 자동으로 구동되도록 설정 $ sudo systemctl status docker # 도커 상태 확인
Bash
복사

5. 방화벽 설정

cd /home/ubuntu && mkdir jenkins-data sudo ufw allow 22/tcp sudo ufw allow 8080/tcp sudo ufw enable sudo ufw status
Bash
복사
22/tcp ssh(원격접속을 위해 포트열기)

6. 젠킨스 도커 이미지 생성 + 젠킨스 실행용 도커 컴포즈 파일 생성

Dockerfile
FROM jenkins/jenkins:lts USER root RUN apt-get update && apt-get install -y curl RUN curl -fsSL https://download.docker.com/linux/static/stable/x86_64/docker-26.1.4.tgz | tar --strip-components=1 -xz -C /usr/local/bin docker/docker RUN mkdir -p /usr/local/lib/docker/cli-plugins RUN curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose RUN chmod +x /usr/local/lib/docker/cli-plugins/docker-compose USER jenkins
Bash
복사
도커 공식 이미지로부터 젠킨스를 실행시켜도 되지만, 젠킨스안에서 도커 명령어를 실행시키기 위해서 도커 이미지를 커스터마이징 하여 만들어둔다.
docker-compose.yml
version: '3.8' services: jenkins: build: . container_name: jenkins-server restart: always ports: - "9090:8080" - "50000:50000" volumes: - jenkins_data:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock environment: - TZ=Asia/Seoul volumes: jenkins_data:
Bash
복사
사전에 만든 젠킨스 도커 이미지를 컨테이너에 띄우고 볼륨을 연결하는 도커 컴포즈 파일 생성
docker compose up docker logs jenkins
Bash
복사
젠킨스를 도커로 실행시킨다. 그 다음 젠킨스 로그를 확인하여 임시 비밀번호를 확인한다.

6.1 젠킨스 도커 공식 이미지 다운받고 컨테이너 실행는 방법(비선호)

7. 젠킨스 설정 & 접속

7-1. 플러그인 설치 속도향상을 위한 설정

docker stop jenkins docker ps -a
Bash
복사
설정을 위해 도커 컨테이너 잠시 중지하기
cd /home/ubuntu/jenkins-data/ mkdir update-center-rootCAs wget https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/rootCA/update-center.crt -O ./update-center-rootCAs/update-center.crt
Bash
복사
젠킨스 플러그인을 설치하기 위한 사이트를 접속할 때 가까운 미러 사이트로 변경하여 설치하면 속도가 빠릅니다. CA 인증서를 다운로드합니다.
sudo sed -i 's#https://updates.jenkins.io/update-center.json#https://raw.githubusercontent.com/lework/jenkins-update-center/master/updates/tencent/update-center.json#g' /home/ubuntu/jenkins-data/hudson.model.UpdateCenter.xml sudo docker restart jenkins
Bash
복사
그리고 업데이트 센터의 주소를 변경합니다.(중국의 텐센트 클라우드를 사용한 미러사이트입니다)
변경 후 도커 재시작을 해주어 변경사항을 적용해줍니다.
hudson.model.UpdateCenter.xml
ec2의 젠킨스 웹으로 접속하기 앞서 9090포트를 인바운드 규칙에서 오픈해줘야 접속이 가능합니다.
젠킨스 로그에서 비밀번호를 확인하고 사용합니다.
제안해주는 플러그인으로 일단 설치를 진행합니다.

7-2. 보안 설정

/home/ubuntu/jenkins-datat/config.xml 파일에 직접 회원가입하는 부분을 비활성화 합니다.(disableSignuptrue 로 하여 직접 회원가입 비활성화)
젠킨스 웹에 접속한 후 우측 톱니바퀴>security 를 눌러 젠킨스 보안 관리 페이지로 들어옵니다. 아래 설정을 진행합니다. 임의로 계정생성이 불가해지며 항상 접속 시 로그인을 하도록 합니다.
security realm : Jenkins’ own user database
authorization : Logged-in user can do anything
Allow anonymous read access : OFF