Docker Snap의 정체

Ubuntu Server OS (Minimal) 설치 중 “Featured Server Snaps”에서 docker만 선택하면, Snap 패키지 방식으로 Docker가 설치됩니다. 이는 Docker Inc.가 제공하는 공식 .deb 기반 설치(Docker CE)와는 구분됩니다. Snap 설치는 테스트/개인용에는 충분하지만, 표준화, 자동화, DevOps 연동을 고려한다면 Docker CE 설치가 권장됩니다.

항목 내용
설치 경로 /snap/docker/current/...
실행 방식 Snap sandbox 환경 내에서 실행
포함 기능 docker, buildx, compose
containerd 경로 Snap 내 포함, 표준 경로(/usr/bin/containerd)와 다름
장점 빠른 설치, 자동 업데이트
단점 비표준 구조, systemd 통합 문제, 외부 DevOps 도구와 호환성 낮음

Docker Snap 패키지 제거

shell
# Docker Snap 패키지 확인
snap list docker

# Snap 제거
sudo snap remove docker

Docker CE 설치 방법 (표준 - 자동 스크립트)

자동 설치

shell
# Docker 공식 설치 스크립트 실행
curl -fsSL https://get.docker.com | sh

# 사용자 권한 부여
sudo usermod -aG docker $USER  # docker 그룹 추가
newgrp docker                  # 그룹 변경 즉시 적용
  • curl: 파일 다운로드 명령
  • f: 실패 시 에러 반환
  • s: 진행상황 생략
  • S: 에러는 출력
  • L: 리다이렉션 따라감
  • | sh: 받은 스크립트를 셸로 바로 실행

소스 확인 후 수동 실행

shell
curl -fsSL https://get.docker.com -o install-docker.sh
cat install-docker.sh          # 내용 확인
bash install-docker.sh           # 수동 실행

직접 작성한 설치 스크립트 사용 (예: install_docker.sh)

shell
nano install_docker.sh
shell
#!/bin/bash

echo "Docker 공식 설치 스크립트를 실행합니다..."

# 1. 공식 스크립트 다운로드 및 실행
curl -fsSL https://get.docker.com | sh

# 2. docker 그룹 권한 부여
sudo usermod -aG docker $USER

# 3. 그룹 적용 (재로그인 대체)
newgrp docker
shell
chmod +x install_docker.sh   # 실행권한 부여
./install_docker.sh          # 실행

Docker CE 설치 방법 (표준 - 고급 수동 설치)

shell

# 저장소 등록 및 GPG 키 설정
sudo apt update
sudo apt install -y ca-certificates curl gnupg

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

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker 설치
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io \
                    docker-buildx-plugin docker-compose-plugin

# 사용자 권한 부여
sudo usermod -aG docker $USER
newgrp docker
패키지 설명
docker-ce Docker Community Edition
docker-ce-cli Docker CLI 도구
containerd.io 컨테이너 런타임
docker-buildx-plugin 확장 빌더 기능 지원
docker-compose-plugin docker compose 명령어 지원 (v2)

설치 확인 및 테스트

shell
docker --version        # 버전 확인
docker info             # 시스템 상태 확인
docker run hello-world  # 설치 테스트

hello-world는 자동으로 이미지 pull → container 실행 → 종료하며, 정상 설치 여부를 출력 메시지로 알려줍니다.

shell
docker ps -a            # hello-world 컨테이너 확인
docker rm hello-world   # 테스트 컨테이너 삭제