클라우드
[GCP]Ubuntu VM 생성 후 Docker로 Nginx 배포
봉의일상
2025. 2. 15. 01:02
1️⃣ GCP에서 Ubuntu VM 생성하기
GCP(Google Cloud Platform)에서 Ubuntu VM을 생성하고, Docker를 설치한 후 Nginx를 배포하는 과정을 소개합니다. 클라우드 환경에서 손쉽게 웹 서버를 운영해보고 싶다면 따라 해보세요!
🖼️ 이미지 1: GCP Console에서 Compute Engine VM 인스턴스 생성 화면
✅ 1.1 GCP에서 VM 인스턴스 만들기
- Google Cloud Console에 로그인합니다.
- 왼쪽 메뉴에서 Compute Engine → VM 인스턴스로 이동합니다.
- 인스턴스 만들기 버튼을 클릭한 후 아래 설정을 적용합니다.
- 이름: ubuntu-docker-vm
- 머신 유형: e2-medium (2 vCPU, 4GB RAM)
- 부팅 디스크: Ubuntu 22.04 LTS 선택
- 방화벽 설정: HTTP 및 HTTPS 트래픽 허용 체크
- 만들기 버튼을 눌러 인스턴스를 생성합니다.
🖼️ 이미지 2: VM 생성 완료 후 리스트에서 확인하는 화면
✅ 1.2 VM에 SSH 접속하기
VM이 생성되면 SSH 버튼을 클릭하여 접속합니다.
혹은 로컬 환경에서 gcloud 명령어를 사용해 접속할 수도 있습니다.

2️⃣ Ubuntu에 Docker 설치하기
✅ 2.1 패키지 업데이트 및 Docker 설치
1)sudo apt update
2)sudo apt upgrade -y
3)sudo apt install -y docker.io
✅ 2.2 Docker 서비스 활성화 및 실행 확인
sudo systemctl enable docker
sudo systemctl start docker
docker --version # Docker 버전 확인

🖼️ 이미지 3: 터미널에서 docker --version 실행 후 출력 결과
✅ 2.3 현재 사용자를 Docker 그룹에 추가 (선택 사항)
sudo usermod -aG docker $USER newgrp docker # 변경 적용 docker ps # Docker 실행 확인
3️⃣ Docker로 Nginx 실행하기
✅ 3.1 Nginx 컨테이너 실행
docker pull nginx
docker run -d --name nginx-container -p 80:80 nginx

✅ 3.2 컨테이너 실행 확인
docker ps

🖼️ 이미지 4: docker ps 실행 후 Nginx 컨테이너가 정상적으로 실행된 화면
4️⃣ GCP 방화벽 설정하여 외부 접근 허용하기
GCP에서는 기본적으로 외부에서 VM의 80번 포트로 접근할 수 없습니다. 따라서 방화벽 규칙을 추가해야 합니다.
✅ 4.1 방화벽 규칙 추가
- VPC 네트워크 → 방화벽 규칙으로 이동합니다.
- 방화벽 규칙 만들기 버튼을 클릭하고 아래 내용을 입력합니다.
- 이름: allow-nginx
- 트래픽 방향: Ingress
- 소스 IP 범위: 0.0.0.0/0
- 대상 태그: http-server
- 허용할 포트: 80
- 만들기 버튼을 클릭하여 방화벽 규칙을 적용합니다.
🖼️ 이미지 5: GCP 방화벽 규칙
- VM 인스턴스 설정으로 이동하여 http-server 태그를 추가합니다.
5️⃣ Nginx 웹 페이지 테스트하기
✅ 5.1 VM의 외부 IP 확인
curl ifconfig.me
✅ 5.2 브라우저에서 접속
- <VM_EXTERNAL_IP> 로 접속합니다.
- 아래와 같은 Nginx 기본 페이지가 나타나면 성공적으로 배포된 것입니다.
🖼️ 이미지 6: 브라우저에서 Nginx 기본 페이지가 열리는 화면
6️⃣ 추가 설정 (선택)
✅ 6.1 컨테이너 자동 재시작 설정
VM이 재부팅되더라도 컨테이너가 자동으로 실행되도록 설정할 수 있습니다.
docker update --restart always nginx-container
✅ 6.2 커스텀 Nginx 설정 적용
기본 Nginx 페이지가 아닌, 커스텀 HTML 페이지를 적용할 수도 있습니다.
mkdir ~/nginx-custom echo "<h1>Welcome to GCP Nginx</h1>" > ~/nginx-custom/index.html docker run -d --name nginx-custom -p 80:80 -v ~/nginx-custom:/usr/share/nginx/html nginx