Docker 설치 방법
이 글에서는 Linux에서 Docker Engine을 설치하는 방법을 안내합니다.
Docker Engine은 서버와 클라우드 환경에서 컨테이너 실행을 위한 엔진으로, Docker CE(Docker Community Edition)로도 불립니다.
여기서는 Linux 배포판 중, Ubuntu 24.04 LTS 버전을 기준으로 설치 방법을 소개합니다.
Docker Desktop
Docker Desktop은 개발 환경에서 Docker Engine을 포함한 다양한 Docker 기능을 Linux
, Windows
와 MacOS
에서도 사용할 수 있게 해줍니다.
Docker Desktop 설치 방법에 대한 자세한 내용은 아래 공식 문서를 참고하세요.
시스템 요구사항 및 주의사항
설치하기에 앞서, Docker Engine을 사용하기 위한 시스템 요구 사항과 주의 사항을 확인하세요.
지원 플랫폼
바이너리를 사용하여 Docker를 설치하면 모든 플랫폼에서 설치가 가능하지만, 자동 보안 업데이트가 지원되지 않습니다. 따라서 프로덕션 환경에서는 바이너리 설치가 권장되지 않으며, 이 글 역시 바이너리 설치 방법을 다루지 않습니다.
설치가 가능한 Linux 플랫폼은 다음과 같습니다.
Ubuntu 의 경우, 모든 플랫폼에서 설치가 가능합니다.
Platform | x86_64 / amd64 | arm64 / aarch64 | arm (32-bit) | ppc64le | s390x |
---|---|---|---|---|---|
CentOS | ✅ | ✅ | ✅ | ||
Debian | ✅ | ✅ | ✅ | ✅ | |
Fedora | ✅ | ✅ | ✅ | ||
Raspberry Pi OS | ✅ | ||||
RHEL | ✅ | ✅ | ✅ | ||
SLES | ✅ | ||||
Ubuntu | ✅ | ✅ | ✅ | ✅ | ✅ |
Binaries | ✅ | ✅ | ✅ |
방화벽 관련 주의 사항
Docker 컨테이너의 포트가 ufw 또는 firewalld 규칙을 우회할 수 있다는 점을 유의하세요. 또한, Docker 는 iptables-nft 및 iptables-legacy 와만 호환되므로, nft 규칙을 사용할 수 없으며 iptables 규칙 체인에 추가해야 합니다. 자세한 내용은 Docker 의 방화벽 문서를 참조하세요.
Linux 시스템 권한
Docker를 설치하려면 root
또는 sudo
권한이 필요합니다.
릴리즈 버전
Docker Engine에는 stable
, test
라는 두 가지 릴리즈 버전이 있습니다.
- stable: 안정적인 버전으로, 프로덕션 환경에서 사용하기에 적합합니다.
- test: 테스트 버전으로, 출시되기 전에 테스트할 수 있는 사전 출시 버전을 제공합니다.
클린 설치를 위한 준비
Docker Engine을 설치하기 위해서는 사전에 충돌하는 모든 패키지를 제거해야 합니다.
클린 설치를 위해 이전 버전의 Docker Engine, Docker CLI, containerd 및 Docker Compose 패키지를 제거하세요.
비공식 Docker 패키지 제거
APT 에서는 비공식 Docker 패키지를 배포합니다. Docker Engine 의 공식 버전을 설치하기 위해서는 이러한 패키지를 먼저 제거해야 합니다.
제거해야 할 비공식 패키지는 다음과 같습니다.
- docker.io
- docker-compose
- docker-compose-v2
- docker-doc
- podman-docker
추가로, Docker Engine은 containerd
와 runc
에 의존합니다.
Docker Engine은 이러한 종속성을 하나의 번들로 묶어 containerd.io
로 제공합니다.
만약 containerd나 runc를 이미 설치한 경우, Docker Engine에 포함된 버전과의 충돌을 방지하기 위해 이를 제거하시기 바랍니다.
다음 명령어를 사용하여 모든 충돌하는 패키지를 제거할 수 있습니다
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
apt-get
에서는 위의 패키지들이 설치되지 않았다고 나올 수 있습니다.
패키지 제거
Docker Engine, CLI, containerd 및 Docker Compose 패키지를 제거합니다.
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
사용자 지정 구성 파일 제거
호스트의 이미지, 컨테이너, 볼륨 또는 사용자 지정 구성 파일은 자동으로 제거되지 않습니다. 깨끗한 상태에서 새로 설치하려면 기존 데이터를 정리하는 것이 좋습니다. 모든 이미지, 컨테이너 및 볼륨을 삭제하려면 다음 명령어를 실행하세요.
제거 전, 파일이 해당 위치에 있는지 확인하세요.
명확한 이유가 없다면, 아래 명령어를 실행하지 마시기 바랍니다.
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
apt 저장소를 사용한 설치
이제 Docker Engine을 apt
저장소를 통해 설치하는 방법을 알아보겠습니다.
먼저 호스트 기기에 Docker Engine 을 설치하기 전에 Docker 의 공식 저장소를 설정해야 합니다.
Docker 는 무분별한 패키지 설치 및 변조를 방지하기 위해 공식 저장소 사용을 권장합니다.
공식 저장소를 사용하려면 GPG
키를 발급받아야 합니다.
GPG는 GNU Privacy Guard의 약자로, 암호화와 디지턀 서명을 지원합니다.
GPG 키 추가
먼저, Docker 저장소를 추가할 수 있도록 GPG 키를 설치합니다.
sudo apt-get update
sudo apt-get install ca-certificates curl
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
Docker 레지스트리 추가
다음으로 Docker 의 공식 저장소를 추가합니다.
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-get update
Linux Mint와 같은 Ubuntu 기반 배포판을 사용하는 경우, VERSION_CODENAME
대신 UBUNTU_CODENAME
을 사용해야 할 수도 있습니다.
Docker Engine 설치
이제 Docker Engine 을 설치할 준비가 되었습니다. 가장 최신 버전의 Docker Engine 을 설치하려면 다음 명령어를 실행하세요.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
빠른 설치 스크립트
Docker 의 빠른 설치 스크립트는 Docker Engine 과 관련 도구를 Linux 운영체제에 간편하게 설치할 수 있습니다. 이 스크립트는 자동으로 Docker 엔진 및 의존성을 설치하지만, 프로덕션 환경에서는 사용을 신중히 고려해야 합니다. 자세한 스크립트 내용은 GitHub 공식 리포지토리에서 확인할 수 있습니다.
설치 확인
설치가 완료되었는지 확인하려면 다음 명령어를 실행해 보세요.
hello-world
이미지를 실행하여 Docker Engine 이 정상적으로 설치되었는지 확인할 수 있습니다.
sudo docker run hello-world
이 명령은 Docker Hub 에서 hello-world
이미지를 받아 “Hello from Docker!” 메시지를 출력한 뒤, 자동으로 컨테이너를 종료합니다.