[Docker] 설치 및 실행

Yumya's record·2025년 4월 1일

SKALA

목록 보기
14/25
post-thumbnail

🐋 Docker 설치 및 실행 정리 🐋

Install

Docker 홈페이지에 접속해서 OS에 맞게 Docker Desktop을 설치한다.

Windows로 진행했기 때문에 AMD64를 설치한 뒤, installer를 실행했다.

이때, Use WSL2 instead of Hyper-V가 권장된다고 되어있었고 적용해 Docker를 설치하니 오류가 발생했다.
원인은 Windows의 OS Version이었다.

Windows Version

Windows에는 Home, Enterprise, Pro 버전이 있는데, Hyper-V의 경우 Pro 버전만 지원해 Home 버전에서는 우회적으로 설치해야 한다. 단, WSL2는 Hyper-V를 활성화하지 않아도 동작한다.

나는 Windows11 pro를 사용하고 있기 때문에 Hyper-V를 사용했어야 했다.
그래서 삭제 후 다시 설치하면서 WSL2 사용 옵션을 체크하지 않았고, 정상 설치할 수 있었다!

WSL, Hyper-V

WSL(Windows Subsystem for Linux)

Windows에서 리눅스 환경을 실행할 수 있도록 해주는 기능
Ubuntu, Debian, Kali Linux 등의 리눅스를 설치하고 Windows 환경에서 터미널을 통해 실행할 수 있다.

Hyper-V

Windows에서 제공하는 가상화 기술
VMware나 VirtualBox와 비슷하게 가상 머신을 생성하고 운영할 수 있도록 해준다.


Windows는 직접 Linux 작업을 지원하지 않고, WSL를 사용해 Linux 운영체제를 사용할 수 있다.
Windows pro 버전의 경우 Hyper-V를 사용해 가상화를 수행하면서 Linux kernel에 접근할 수 있고, Home 버전의 경우 WSL를 사용해야 한다.

Docker Desktop은 Windows의 WSL2나 Hyper-V를 사용해 Linux 작업을 수행할 수 있게 하기 때문에 Docker Desktop을 설치해야 한다.


참고-WSL, Hyper-V
참고-Windows11에서 WSL2 사용

Write Dockerfile

Docker file을 프로젝트 최상단에 생성한다.
확장자는 없고 Dockerfile이라고만 하면 된다.

인텔리제이에서 Docker plugin을 설치하면 정상적으로 Dockerfile로 인식되면서 사용할 수 있게 된다.

FROM openjdk:21-jdk-slim

WORKDIR /app

# 사용자 정보
LABEL maintainer="<docker email>"

# JAR 파일 복사
COPY build/libs/<jar file name>.jar <copy jar file name>.jar

# 포트 노출 (기본 Spring Boot 포트)
EXPOSE 8080

# 환경 변수 설정 (선택 사항)
# ENV SPRING_PROFILES_ACTIVE=prod

# 컨테이너 실행 시 실행될 명령어
ENTRYPOINT ["java", "-jar", "/app/<copy jar file name>.jar"]

생성한 Dockerfile에 다음과 같은 내용을 적고, 저장한다.
이때 jar file은 /build/libs 안에 존재하며, jar 파일 복사 시 경로를 정확히 설정해야 한다.

Build

docker build --build-arg JAR_FILE=<jar file> -t <image name> .

생성한 Docker file을 build하면 Image가 생성된다.

Image

docker image ls

Console에서 해당 명령어를 입력하면 생성된 이미지를 확인할 수 있다.

또, Docker Desktop에서도 Image가 정상적으로 만들어진 것을 확인할 수 있다.

Run

docker run <image name>

ex) docker run -d -p 8080:80 --name <container name> <image>

Image를 실행하면 컨테이너가 생성된다.
이때 호스트의 8080 포트를 80으로 매핑하고, 컨테이너의 이름을 지정할 수 있다.

docker ps

실행 후 컨테이너 목록을 확인할 수 있다.

docker stop <container name>

컨테이너 실행을 중지시키고 싶다면 stop을 하면 된다.

docker rm <container name>

만약 컨테이너를 삭제하고 싶다면 rm을 사용하면 된다.

profile
🍀 ٩(ˊᗜˋ*)و 🍀

0개의 댓글