Ubuntu 24.04에서 Docker 설치 및 설정 가이드
Docker는 컨테이너 기반 가상화 기술로, 개발 환경을 효율적으로 관리할 수 있는 도구입니다. 이 가이드에서는 Ubuntu 24.04 LTS에서 Docker 설치부터 고급 설정까지 모든 과정을 상세히 설명합니다.
📦 Docker 설치
1. 시스템 패키지 업데이트
sudo apt update && sudo apt upgrade -y
2. 필수 패키지 설치
sudo apt install -y \
ca-certificates \
curl \
gnupg \
lsb-release
3. Docker 공식 GPG 키 추가 (강화된 보안 설정)
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --batch --yes --dearmor -o /etc/apt/keyrings/docker.gpg
4. APT 저장소 등록
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
5. Docker 엔진 설치
sudo apt update
sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
6. 설치 확인 및 버전 체크
docker --version && docker compose version
결과예시)
Docker version 27.5.1, build 9f9e405
Docker Compose version v2.32.4
7. 사용자 권한 설정 (보안 주의)
sudo usermod -aG docker $USER
echo "⚠️ 반드시 로그아웃 후 재접속하거나 'newgrp docker' 명령어 실행 필요"
🔧 Docker 고급 설정
데이터 저장 경로 변경 (기존 데이터 마이그레이션)
- 서비스 정지 및 데이터 백업
sudo systemctl stop docker sudo rsync -avx /var/lib/docker/ /mnt/docker-data - 디렉토리 권한 설정
sudo chmod -R 700 /mnt/docker-data sudo chown -R root:root /mnt/docker-data # Docker 데몬 권한에 맞춤 - 데몬 설정 파일 수정
방법1. /etc/docker/daemon.json 파일 수정 (권장)
{
"data-root": "/mnt/docker-data",
"storage-driver": "overlay2"
}
방법2. /lib/systemd/system/docker.service 파일 수정 ( 구 버전에서 사용하던 방법)
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root=/path/to/new/data-root
- 서비스 재시작 및 확인
sudo systemctl daemon-reload sudo systemctl start docker docker info | grep "Docker Root Dir"
🚀 Docker Compose 심화 사용법
버전 호환성 확인
docker compose version
# Plugin 방식 (현재 가이드) vs Standalone docker-compose 차이점 설명
샘플 Compose 파일 (Nginx + MySQL)
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: example
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
Compose 명령어 요약
| 명령어 | 설명 |
|——–|——|
| docker compose up -d | 백그라운드 실행 |
| docker compose logs -f | 실시간 로그 확인 |
| docker compose config | 설정 파일 검증 |
| docker compose pull | 최신 이미지 다운로드 |
🔒 보안 강화 설정
- Rootless 모드 설치 (선택사항)
sudo apt install -y uidmap dockerd-rootless-setuptool.sh install - 컨테이너 보안 프로필 적용 예시
{ "userns-remap": "default", "no-new-privileges": true }
🚨 문제 해결 가이드
일반적인 이슈 대처법
- 권한 오류 발생 시
sudo chmod 666 /var/run/docker.sock # 임시 해결 (보안 주의) - 데몬 로그 확인
journalctl -u docker.service --since "10 minutes ago" - 저장소 초기화
sudo rm -rf /var/lib/docker sudo systemctl restart docker
Storage Driver 선택 및 daemon.json 상세 설정
Storage Driver 선택 기준
Ubuntu 24.04에서는 overlay2가 기본이며 권장 드라이버입니다.
| Driver | 커널 요건 | 특징 | 권장 환경 |
|---|---|---|---|
| overlay2 | 4.0+ (ext4/xfs 필요) | 빠름, 효율적인 레이어 공유 | 기본값, 대부분의 환경 |
devicemapper |
- | 블록 장치 기반 | 구형 RHEL/CentOS (지금은 미권장) |
btrfs |
btrfs 파일시스템 | 스냅샷 지원 | btrfs 환경 |
zfs |
ZFS 파일시스템 | 고급 기능 | ZFS 환경 |
# 현재 스토리지 드라이버 확인
docker info | grep "Storage Driver"
daemon.json 주요 옵션
{
"data-root": "/data/docker",
"storage-driver": "overlay2",
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "5",
"compress": "true"
},
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 65536,
"Soft": 65536
}
},
"live-restore": true,
"dns": ["8.8.8.8", "8.8.4.4"],
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5
}
| 옵션 | 설명 |
|---|---|
data-root |
Docker 데이터 저장 경로 |
log-driver |
컨테이너 로그 드라이버 (json-file, syslog, fluentd 등) |
log-opts.max-size |
로그 파일 최대 크기 (초과 시 순환) |
log-opts.max-file |
보관할 최대 로그 파일 수 |
live-restore |
Docker 데몬 재시작 시 컨테이너 계속 실행 |
default-ulimits |
모든 컨테이너의 기본 ulimit 설정 |
로그 드라이버 설정 및 로테이션
# 특정 컨테이너에 로그 설정 적용
docker run \
--log-driver json-file \
--log-opt max-size=50m \
--log-opt max-file=3 \
my-app
# 기존 컨테이너 로그 초기화 (root 권한)
truncate -s 0 $(docker inspect --format='' <container_id>)
GPU 지원 — NVIDIA Container Toolkit
딥러닝, AI 추론 등 GPU가 필요한 컨테이너 실행 시 NVIDIA Container Toolkit을 설치합니다.
# 1. NVIDIA Container Toolkit 저장소 추가
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# 2. Docker 런타임에 NVIDIA 등록
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# 3. GPU 접근 테스트
docker run --rm --gpus all nvidia/cuda:12.0.0-base-ubuntu22.04 nvidia-smi
Docker 완전 삭제 (Uninstall)
# 1. Docker 서비스 중지
sudo systemctl stop docker docker.socket containerd
# 2. Docker 패키지 삭제
sudo apt-get purge -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
# 3. Docker 데이터 삭제 (이미지, 컨테이너, 볼륨 모두 삭제 — 복구 불가)
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
sudo rm -rf /etc/docker
# 4. 저장소 설정 삭제
sudo rm -f /etc/apt/sources.list.d/docker.list
sudo rm -f /etc/apt/keyrings/docker.asc
sudo apt-get update
추천 학습 자료
- Docker 공식 문서
- Docker Ubuntu 설치 공식 가이드
- Docker Storage Drivers
- Linux Capabilities 이해하기
- Best Practices for Container Security
- Docker Compose 샘플 모음
댓글남기기