Skip to Content
문서개발도커/팟맨

Docker / Podman

이 문서에서는 Ubuntu 26.04에 Docker 및 Podman 컨테이너 기술을 설치하고 사용하는 방법을 다룹니다.

Docker CE 설치

이전 버전 제거

sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null

Docker CE 설치

# Install dependencies sudo apt update sudo apt install ca-certificates curl gnupg -y # Add Docker official GPG key sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # Add Docker repository echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Install Docker sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

sudo 없이 Docker 사용

# Add current user to the docker group sudo usermod -aG docker $USER # Apply group changes (or log out and back in) newgrp docker

설치 확인

docker --version docker compose version docker run hello-world

Docker 미러 구성(중국)

/etc/docker/daemon.json 편집:

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me" ] } EOF # Restart Docker sudo systemctl daemon-reload sudo systemctl restart docker

Docker 기본 사항

이미지 작업

# Pull an image docker pull ubuntu:26.04 docker pull nginx:latest # List local images docker images # Remove an image docker rmi nginx:latest # Build an image docker build -t myapp:latest . # Clean up unused images docker image prune -a

컨테이너 운영

# Run a container docker run -d --name mynginx -p 8080:80 nginx # List running containers docker ps # List all containers docker ps -a # Enter a container docker exec -it mynginx bash # View container logs docker logs -f mynginx # Stop and remove a container docker stop mynginx docker rm mynginx # Clean up all stopped containers docker container prune

볼륨

# Create a volume docker volume create mydata # Mount a volume docker run -d -v mydata:/data --name mycontainer ubuntu # Mount a host directory docker run -d -v /home/user/data:/data --name mycontainer ubuntu # List volumes docker volume ls docker volume inspect mydata

Docker 작성

Docker Compose는 다중 컨테이너 애플리케이션을 정의하고 실행하는 데 사용됩니다.

예: 웹앱 + 데이터베이스

compose.yaml 생성:

services: web: image: nginx:latest ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html depends_on: - db db: image: postgres:18 environment: POSTGRES_DB: mydb POSTGRES_USER: admin POSTGRES_PASSWORD: secret volumes: - pgdata:/var/lib/postgresql/data ports: - "5432:5432" redis: image: redis:7-alpine ports: - "6379:6379" volumes: pgdata:

일반적인 작성 명령

# Start all services docker compose up -d # Check service status docker compose ps # View logs docker compose logs -f web # Stop all services docker compose down # Stop and remove volumes docker compose down -v # Rebuild and start docker compose up -d --build

Docker파일 쓰기

일반적인 다단계 빌드 예:

# Build stage FROM node:22-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Runtime stage FROM node:22-alpine WORKDIR /app COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules ./node_modules EXPOSE 3000 CMD ["node", "dist/index.js"]

Podman: Docker의 대안

Podman은 Docker CLI와 호환되는 데몬 없는 컨테이너 엔진입니다.

Podman 설치

sudo apt install podman -y

설치를 확인합니다.

podman --version podman info

Podman 기본 사항

Podman 명령은 Docker과 거의 동일합니다.

# Pull and run a container podman pull docker.io/library/nginx podman run -d --name mynginx -p 8080:80 nginx # List containers podman ps # Stop and remove podman stop mynginx podman rm mynginx

Podman과 Docker의 차이점

  • 데몬 없음: Podman에는 백그라운드 데몬 프로세스가 필요하지 않습니다.
  • 루트리스: Podman은 기본적으로 일반 사용자로 컨테이너를 실행하여 더 나은 보안을 제공합니다.
  • Pod 지원: Podman은 기본적으로 Pod 개념을 지원합니다(Kubernetes Pod와 유사).
  • 호환성: Docker 명령의 대부분은 Podman로 직접 대체될 수 있습니다.

Docker 호환성 별칭 설정

echo 'alias docker=podman' >> ~/.bashrc source ~/.bashrc

Podman 작성

# Install podman-compose (prefer apt or pipx to avoid the PEP 668 restriction) sudo apt install -y podman-compose # Or: sudo apt install -y pipx && pipx install podman-compose # Usage is the same as docker compose podman-compose up -d podman-compose down

Docker 시스템 유지 관리

# Check disk usage docker system df # Full cleanup (use with caution) docker system prune -a --volumes # Check Docker service status sudo systemctl status docker

Docker과 Podman은 각각 장점이 있습니다. Docker는 더 성숙한 생태계를 가지고 있는 반면, Podman은 더 나은 보안을 제공하고 데몬이 필요하지 않습니다. 필요에 따라 선택하세요.

FAQ

Docker 또는 Podman을 선택해야 합니까?

초보자이거나 팀과 협력해야 하는 경우 더 성숙한 생태계, 풍부한 문서 및 광범위한 커뮤니티 지원을 제공하는 Docker을 권장합니다. 보안을 우선시하거나 루트 권한이 없는 환경에서 작업하는 경우 데몬이 필요하지 않고 기본적으로 루트가 아닌 사용자로 실행되므로 Podman이 더 나은 선택입니다.

Docker의 Snap 버전을 사용할 수 있나요?

Ubuntu 저장소의 docker.io 패키지와 Docker의 Snap 버전을 사용할 수 있지만 일반적으로 공식 Docker CE 버전보다 뒤떨어지고 호환성 문제가 있을 수 있습니다. 최신 버전과 최상의 호환성을 위해 이 문서에 설명된 대로 공식 Docker 저장소에서 Docker CE를 설치하는 것이 좋습니다.

Docker을 사용하려면 sudo가 필요합니까?

기본적으로 Docker 명령을 실행하려면 sudo 권한이 필요합니다. docker 그룹에 사용자를 추가한 후 sudo 없이 Docker을 사용할 수 있습니다(sudo usermod -aG docker $USER을 실행한 다음 로그아웃했다가 다시 로그인). docker 그룹에 속한다는 것은 루트 권한을 갖는 것과 동일하므로 다중 사용자 환경에서는 주의해야 합니다.

관련 기사