https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository
apt저장소를 설정# Add Docker's official GPG key:
sudo apt update
sudo apt install ca-certificates curl -y
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose -y
sudo docker run hello-world
sudo docker --version
Docker version 28.0.4, build b8034c0
sudo curl -SL https://github.com/docker/compose/releases/download/v2.34.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker compose version
Docker Compose version v2.34.0
https://hub.docker.com/search?badges=official
- Docker 베이스 이미지란?
- 공통 환경(예: JDK 21, Node.js 20 등)을 기반으로 여러 서비스의 Dockerfile에서 재사용할 수 있는 기초 이미지
- 목적: 중복 방지, 이미지 빌드 속도 개선, 표준화된 환경 제공
frontend-base.Dockerfile (Node 20 + Nginx)
# Node.js 20 이미지 사용
FROM node:20 AS base
# nginx 설치를 위해 alpine 이미지 사용
RUN apt-get update && apt-get install -y nginx \
&& rm -rf /var/lib/apt/lists/*
# nginx 기본 설정 파일 제거
RUN rm /etc/nginx/sites-enabled/default
# 앱 디렉토리 생성
WORKDIR /app
backend-base.Dockerfile (JDK 21 + 기본 설정)
FROM openjdk:21-jdk-slim
WORKDIR /app
# apt 패키지 관리자 사용하여 필수 패키지 설치
RUN apt-get update && apt-get install -y curl unzip && apt-get clean
ENTRYPOINT ["java", "-version"]
# 프론트 베이스 이미지
sudo docker build -t frontend-base:node20 -f frontend-base.Dockerfile .
# 백엔드 베이스 이미지
sudo docker build -t backend-base:jdk21 -f backend-base.Dockerfile .
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
backend-base jdk21 e44414a70410 6 seconds ago 466MB
frontend-base node20 62f46877f86a 22 minutes ago 1.11GB
hello-world latest 74cc54e27dc4 2 months ago 10.1kB