도커는 컨테이너 기술을 통해 애플리케이션을 보다 편리하게 배포 할 수 있는 기술이다. 애플리케이션을 이미지(컨테이너 실행에 필요한 명세)화하여 어느 환경에나 동일하게 실행할 수 있다.
Docker Desktop은 로컬 환경에서 도커의 이미지나 애플리케이션, 컨테이너 등을 편리하게 관리할 수 있도록 도와주는 프로그램이다.
Docker 홈페이지에서 Docker Desktop을 다운받아 실행해준다.
# Base 이미지 설정
FROM maven:3.8.4-openjdk-17-slim AS build
# 애플리케이션을 빌드할 디렉토리 생성
WORKDIR /[WORK_DIR]
# 소스 코드 복사
COPY . .
# 애플리케이션 빌드
RUN mvn package -DskipTests
CMD ["java", "-jar", "/[PROJECT_NAME]/target/ROOT.jar"]
스프링부트 프로젝트에 Dockerfile을 생성한다.
Maven > Lifecycle > Clean 후 Package
> docker build -t [IMAGE_NAME]
Powershell에서 Docker 파일이 작성된 경로로 이동하고, 해당 명령어를 실행한다.
> docker images
> docker save -o [TAR_NAME].tar [IMAGE_NAME]
도커에 있는 이미지를 tar 파일로 가공하고 싶으면 위 명령어를 실행한다.
> docker stop [CONTAINER_NAME]
현재 실행중인 컨테이너를 중지시킨다.
> docker rmi [IMAGE_NAME]
현재 저장된 도커 이미지를 삭제한다.
> docker load -i [TAR_NAME].tar
로컬에 있는 tar 파일을 도커에 불러와서 이미지를 저장한다.
> docker run -d -p [HOST_PORT]:[CONTAINER_PORT] -e LANG=ko_KR.UTF-8 -e TZ=Asia/Seoul
-v /var/C:/[MOUNT_DIR]/C --rm --name [CONTAINER_NAME] [IMAGE_NAME]:latest
저장된 도커 이미지를 실행한다.
실행할 때 다음과 같은 옵션을 설정할 수 있다.
-d
는 컨테이너가 백그라운드에서 실행되도록 해준다. -p
를 사용하여 포트를 지정해준다.-e
를 사용하여 환경변수를 설정해준다.-v
는 호스트와 컨테이너간에 볼륨을 마운트한다.--name
을 사용하여 컨테이너 이름을 지정해준다.> docker ps
컨테이너 실행 후 도커에 실행중인 컨테이너 목록을 확인한다.