0. AWS 회원가입 및 로그인
카드 정보와 집 주소 등 다양한 개인 정보를 입력해주고...~ 회원가입 완료해주자.
이제 로그인
1. AWS EC2 인스턴스 생성하기
- OS: Ubuntu 20.04 LTS (추천)
- 인스턴스 유형: g4dn.xlarge 또는 p3.2xlarge (GPU 필요)
- 🔹 AWS GPU 인스턴스 선택✅ 인스턴스를 새로 생성할 때 g4dn.xlarge 또는 p3.2xlarge를 선택하세요.
- 1️⃣ g4dn.xlarge (저렴한 T4 GPU)
- 2️⃣ p3.2xlarge (V100 GPU)
- 3️⃣ p4d.24xlarge (A100 GPU, 매우 비쌈)
- 보안 그룹에서 포트 22 (SSH), 8000 (웹 서버용) 허용
- 키페어( .ppk 파일) 다운로드
- 스토리지 볼륨 크기 (GiB) 적어도 50 이상
+ ) GPU를 지원하는 모델은 vCPU가 2개 이상 필요하다.
AWS는 초반에 vCPU 제한을 1로 걸어두기 때문에 이를 확장하는 요청(request)를 해주어야 한다.
https://ap-northeast-2.console.aws.amazon.com/servicequotas/home/services/ec2/quotas/L-CAE24619
write /var/lib/docker/tmp/GetImageBlob2571486647: no space left on device
FastAPI는 기본적으로 8000번 포트에서 실행되니까, EC2에 외부에서 접근하려면 이 포트를 열어줘야 해요.
- AWS 콘솔 → EC2 → 인스턴스 → 보안 탭 → 보안 그룹 클릭
- 인바운드 규칙 편집 클릭
- 새 규칙 추가:
- 유형: Custom TCP
- 포트 범위: 8000
- 소스: 0.0.0.0/0 (공개 테스트용)
👉 나중엔 IP 제한하는 게 좋아요.
- 저장
2. EC2 인스턴스 접속하기
다운 받았던 .ppk 키로 private key를 생성하자.
생성한 private key를 넣어주고
'ubuntu@퍼블릭ip주소' 입력 후
Open! (Open 누르기 전에 Saved Sessions 해놓으면, 내용이 저장된다. 그럼 다시 접속할 때, 처음처럼 key나 Host Name을 다시 입력해주지 않아도 된다! 저장해놓은 이름 누르고 Open하면 된다!)
이 메시지는 PuTTY가 처음으로 해당 EC2 서버에 연결할 때 표시되는 보안 경고입니다.
💡 해결 방법:
- **"Accept"**를 클릭하면 해당 서버의 SSH 키가 PuTTY에 저장되고, 이후 연결할 때 더 이상 경고가 나타나지 않습니다.
- **"Connect Once"**를 클릭하면 한 번만 연결되지만, 다음에 접속할 때 다시 경고가 뜹니다.
- **"Cancel"**을 클릭하면 연결이 취소됩니다.
배포는 이 글 따라가서 간단하게 진행하자!!!
[AWS EC2 배포] Docker Hub의 이미지 pull하고 컨테이너 run
[AWS EC2 배포] Docker Hub의 이미지 pull하고 컨테이너 run
0. Ubuntu에 Docker 설치* Docker가 설치되어 있다면, 필요없는 과정# 1. 기존 패키지 업데이트sudo apt update# 2. Docker 설치sudo apt install -y docker.io# 3. Docker 자동 실행 설정sudo systemctl enable dockersudo systemctl star
doraemin.tistory.com
아래 글은... 그냥 지우기 아까워서 남겨놓는 정도,,,
3. 배포 위한 설치
git clone [프로젝트 깃 주소]
sudo apt update # Ubuntu에서 패키지를 다운로드 받을 때 사용하는 apt를 업데이트 해주자.
sudo apt-get upgrade # 설치 진행? Y 입력해주기
sudo apt-get install npm
cd YOUR_REPOSITORY # 클론받은 디렉터리로 이동
sudo git checkout YOUR_BRANCH # Git에서 다른 브랜치를 사용하려면 Clone받은 Repository 디렉터리 안으로 이동해서, 체크아웃 해주자.
sudo git pull # 깃허브 레포지토리에 변경사항이 있으면 git pull 명령어를 수행
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
# Docker 및 NVIDIA 도구 설치
# GPU가 있는 EC2 인스턴스를 사용한다면, NVIDIA Container Toolkit도 설치해야 합니다.
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt update
sudo apt install -y nvidia-container-toolkit
sudo systemctl restart docker
# 최신 NVIDIA 드라이버 설치
sudo apt update
sudo apt install -y nvidia-driver-535
# 설치가 완료되면 EC2를 재부팅해야 합니다.
sudo reboot
# 재부팅 후 다시 SSH로 접속한 다음, nvidia-smi 실행해서 GPU 확인:
nvidia-smi
핑크색 화면이 나오면, 그냥 Enter 누르면 된다.
4. AWS EC2에 Docker Image 배포
지금 로컬에서 pull 받은 이미지를 EC2에서도 실행하려면, Docker Hub 또는 AWS ECR을 이용해서 이미지 업로드해야 합니다.
Docker Hub에 Push (간편)
1) Docker Hub 로그인
docker login
2) Docker Hub의 공식 이미지를 → EC2(로컬환경)로 pull 하여 가져오자.
sudo docker pull kwakrhkr59/artchemy-app:first
+ ) EC2 인스턴스의 디스크 공간 부족으로 인해 Docker 이미지가 정상적으로 다운로드되지 않는다면, '접은글' 참조.
1) AWS 콘솔에서 EBS 볼륨 크기 늘리기
1️⃣ AWS 콘솔 → EC2 → 인스턴스 → 스토리지 탭으로 이동
2️⃣ EBS 볼륨 클릭 → "볼륨 크기 수정" 선택
3️⃣ 크기를 50GB~100GB로 증가
4️⃣ 저장 후 몇 분(5분 정도?) 기다리면, '볼륨 상태'가 '사용 중'으로 변경 완료



🔹 2) EC2 내부에서 디스크 크기 확장
sudo growpart /dev/xvda 1 # disk 경로는 명령어 'lsblk'를 통해 확인 가능
sudo resize2fs /dev/xvda1
"""
ubuntu@ip-172-31-13-96:~/Back-End$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 26.3M 1 loop /snap/amazon-ssm-agent/9881
loop1 7:1 0 73.9M 1 loop /snap/core22/1722
loop2 7:2 0 44.4M 1 loop /snap/snapd/23545
loop3 7:3 0 73.9M 1 loop /snap/core22/1748
xvda 202:0 0 30G 0 disk
├─xvda1 202:1 0 7G 0 part /
├─xvda14 202:14 0 4M 0 part
├─xvda15 202:15 0 106M 0 part /boot/efi
└─xvda16 259:0 0 913M 0 part /boot
"""
# 디스크 크기 확장 명령어 실행 후
"""
ubuntu@ip-172-31-13-96:~/Back-End$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 26.3M 1 loop /snap/amazon-ssm-agent/9881
loop1 7:1 0 73.9M 1 loop /snap/core22/1722
loop2 7:2 0 44.4M 1 loop /snap/snapd/23545
loop3 7:3 0 73.9M 1 loop /snap/core22/1748
xvda 202:0 0 30G 0 disk
├─xvda1 202:1 0 29G 0 part /
├─xvda14 202:14 0 4M 0 part
├─xvda15 202:15 0 106M 0 part /boot/efi
└─xvda16 259:0 0 913M 0 part /boot
"""
🚀 이제 다시 디스크 용량 확인 (df -h)
🚀 공간이 확보되었으면 다시 docker pull 실행
3) 이미지 태그 변경( 가져온 이미지를 내 레포지토리 이름으로 바꾸는 과정 )
후 푸시 ( 내 Docker Hub 레포로 이미지 업로드 )
docker tag kwakrhkr59/artchemy-app:first your-dockerhub-username/artchemy-app:first
docker push your-dockerhub-username/artchemy-app:first
# sudo docker tag kwakrhkr59/artchemy-app:first doraemin/artchemy-app:first
sudo docker images
# sudo docker push doraemin/artchemy-app:first
4) 이제 내 레포에서 EC2로 다시 pull
# EC2에서 SSH로 접속 후 Docker 설치
sudo apt update
sudo apt install -y docker.io
sudo systemctl start docker
sudo systemctl enable docker
# Docker Hub에서 Pull
docker pull your-dockerhub-username/artchemy-app:first
# docker pull doraemin/artchemy-app:first
5) EC2에서 컨테이너 실행
docker run -it --ipc=host --gpus=all -d --name artchemy-container -p 8000:80 your-dockerhub-username/artchemy-app:first
# docker run -it --ipc=host --gpus=all -d --name artchemy-container -p 8000:80 doraemin/artchemy-app:first
# 만약 GPU 없이 컨테이너를 실행해보고 싶다면, --gpus all 옵션을 빼고 실행하면 됨.
docker run -it --ipc=host -d --name artchemy-container -p 8000:80 your-dockerhub-username/artchemy-app:first
5. 필요한 추가 파일 (Docker Compose & .env)
로컬 개발 환경에서 여러 컨테이너를 사용한다면, Docker Compose 파일을 준비하는 것이 좋습니다.
이렇게 하면 더 쉽게 컨테이너를 관리할 수 있습니다.
docker-compose up -d
6. EC2 포트 허용 및 실행 확인
AWS EC2의 보안 그룹에서 8000번 포트 허용이 되어 있는지 확인하세요.
컨테이너가 정상 실행 중인지 확인:
웹 서비스가 정상적으로 실행되는지 확인:
< 참고 >
[AWS] 프리티어 EC2 인스턴스 만드는 방법
1) AWS 계정 생성 개인정보와 결제 카드 등을 등록해서 가입하면 됩니다. 인당 1계정 제한이 없으니 프리티어 기간이 끝났다면 다른 이메일로 가입하면 됩니다. 2) 인스턴스 시작 메인 화면에서 EC2
velog.io
+) AWS 중지 및 삭제
https://doraemin.tistory.com/153
[AWS] EC2 중지 및 계정 삭제
AWS EC2를 사용하기 위해 테스트삼아 몇가지 인스턴스를 만들었었다. (관련 글 : https://doraemin.tistory.com/149 ) 요금이 조금씩 부과되고 있길래,, 모두 삭제해보자. STEP 1. EC2의 인스턴스, 탄력적 IP
doraemin.tistory.com
'dev-setup' 카테고리의 다른 글
[Docker Pro] 결제 취소하기 (0) | 2025.02.28 |
---|---|
[Azure] 요금 안 나오게 중지 및 해지 (0) | 2025.02.28 |
[vllm] 설치하기 (Linux 환경을 위해, WSL 2 환경에서 설치) (0) | 2025.02.24 |
[PyTorch] Anaconda, PyTorch 설치 및 실행 (1) | 2025.01.17 |
[Scanpy] 설치 및 실행 (1) | 2024.12.14 |