인스턴스 시작 버튼을 누룹니다.
인스턴스 이름을 작성하고, AMI를 선택합니다.
AMI란
새 키 페어 생성 버튼을 누릅니다.
키 페어란?
네트워크 설정
스토리지 구성
인스턴스 ID를 클릭합니다.
오른쪽 상단의 연결 버튼을 누릅니다.
EC2 Instance Connect을 사용하여 연결을 눌러 shell에 접속합니다.
sudo apt update
Docker 다운로드
다음 명령어를 통해 Docker를 설치합니다.
sudo apt install docker.io
sudo apt install docker-compose
git --version
FROM openjdk:17
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
명령어 | 설명 |
---|---|
From | 생성할 이미지의 베이스가 될 이미지 |
CMD | 컨테이너가 시작될 때마다 실행할 명령어 설정 |
MAINTAINER | 이미지를 생성한 개발자 정보 |
ARG | 빌드한 jar 파일의 위치를 변수로 설정 |
COPY, ADD | - copy는 로컬 디렉터리에서 읽어들인 컨텍스트로부터 이미지에 파일을 복사하는 역할 - add는 외부 url 및 tar 파일에서도 파일을 추가할 수 있다.(권장x) |
ENTRYPOINT | 컨테이너가 실행될 때 기본적으로 실행될 명령어를 설정, 이 경우에는 Java 애플리케이션을 실행하는 명령어 |
EXPOSE | Dockerfile의 빌드로 생성된 이미지에서 노출할 포트를 설정 |
RUN | 이미지를 만들기 위해 컨테이너 내부에서 명령어를 실행 |
WORKDIR | 명령어를 실행할 디렉터리를 나타냄. 컨테이너 내부에서 작동 |
# 컨테이너 이미지 생성
docker build -f Dockerfile -t school-docker .
도커 로그인 하기
docker login -u [username]
Docker 이미지 생성
docker build -f Dockerfile -t [사용자 이름]/[school-docker] .
The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested standard_init_linux.go:228: exec user process caused: exec format error
docker build --platform linux/amd64 - Dockerfile -t seosonghyeon/school .
docker images
Docker Hub에 올리기
docker push [dockerHub ID]/[image 파일명]
제대로 푸시가 됐는지 확인 합니다.
docker images
# 컨테이너 생성 및 실행
docker run -d --name <컨테이너 이름> -p 8080:8080 <실행할 이미지>
EC2에서 Docker Hub에 올린 이미지를 다운로드 받아서 실행 시킵니다.
Docker Image 컨테이너화
docker run -d -p 8080:8080 [DockerHub Id]/[이미지명]
컨테이너 실행 확인
// 실행중인 컨테이너 확인
docker ps
// 정지된 컨테이너 확인(실행중인 것도 같이 출력됨)
docker ps -a
📚 참고 자료