Docker Ubuntu 설치 스크립트
Ubuntu 서버에 Docker Engine을 설치하는 스크립트와 검증 절차입니다. Docker 공식 apt 저장소, keyring, docker.sources, Compose plugin, 권한과 롤백까지 정리했습니다.
Ubuntu 서버에 Docker Engine을 설치하는 스크립트를 절차입니다. 스크립트는 Docker 공식 저장소를 등록하고 docker-ce를 설치하는 흐름은 맞지만, 최신 Ubuntu 설치 방식에서는 /etc/apt/keyrings/docker.asc와 docker.sources를 사용하는 구성이 더 명확합니다. 아래 절차는 Docker 공식 Ubuntu 설치 문서를 기준으로 운영 서버에서 다시 실행해도 추적이 쉽도록 정리한 버전입니다.
설치되는 구성
docker-ce: Docker Engine 본체docker-ce-cli: Docker CLIcontainerd.io: 컨테이너 런타임docker-buildx-plugin: Buildx 플러그인docker-compose-plugin:docker compose명령 플러그인
설치 전 확인
lsb_release -a
uname -m
systemctl status docker --no-pager 2>/dev/null || true
dpkg -l | egrep 'docker|containerd|runc' || true배포판 패키지나 과거 설치 패키지가 섞여 있으면 충돌이 날 수 있습니다. 운영 서버에서는 삭제 전 영향 범위를 확인하고, 테스트 서버나 신규 서버에서는 아래처럼 충돌 가능성이 있는 구 패키지를 정리합니다.
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
sudo apt-get remove -y "$pkg" 2>/dev/null || true
doneinstall-docker.sh
#!/usr/bin/env bash
set -euo pipefail
DOCKER_USER="${SUDO_USER:-$(whoami)}"
sudo apt-get update
sudo apt-get install -y 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
UBUNTU_CODENAME="$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")"
ARCH="$(dpkg --print-architecture)"
printf '%s\n' \
'Types: deb' \
'URIs: https://download.docker.com/linux/ubuntu' \
"Suites: ${UBUNTU_CODENAME}" \
'Components: stable' \
"Architectures: ${ARCH}" \
'Signed-By: /etc/apt/keyrings/docker.asc' \
| sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
if ! getent group docker >/dev/null; then
sudo groupadd docker
fi
sudo usermod -aG docker "$DOCKER_USER"
docker --version
docker compose version
sudo docker run --rm hello-world실행 방법
chmod +x install-docker.sh
./install-docker.sh스크립트 실행 후 현재 로그인 세션에는 docker 그룹 권한이 바로 반영되지 않을 수 있습니다. 다시 로그인하거나 아래 명령으로 새 그룹 세션을 열어 확인합니다.
newgrp docker
docker run --rm hello-world설치 검증
systemctl status docker --no-pager
docker info
docker version
docker compose version
docker run --rm hello-worlddocker info에서 Server 정보가 출력되면 Docker daemon과 CLI 통신이 정상입니다. 권한 오류가 나오면 사용자가 docker 그룹에 들어갔는지, 재로그인했는지 확인합니다.
id
getent group docker
groupsdocker 그룹 주의사항
docker 그룹에 들어간 사용자는 Docker daemon을 통해 호스트의 root 권한에 준하는 작업을 할 수 있습니다. 개인 실습 서버에서는 편하지만, 운영 서버에서는 docker 그룹 부여 대상을 제한해야 합니다. 자동화 계정이나 일반 사용자에게 무분별하게 부여하지 않는 것이 좋습니다.
자주 나는 오류
| 증상 | 확인할 것 | 조치 |
|---|---|---|
Unable to locate package docker-ce |
Docker apt repository 등록 여부 | /etc/apt/sources.list.d/docker.sources와 apt-get update 결과를 확인합니다. |
| GPG key 오류 | /etc/apt/keyrings/docker.asc 권한과 경로 |
sudo chmod a+r /etc/apt/keyrings/docker.asc를 확인합니다. |
permission denied on Docker socket |
사용자 docker 그룹 포함 여부 | sudo usermod -aG docker $USER 후 재로그인합니다. |
| daemon이 뜨지 않음 | systemd 상태와 journal | journalctl -u docker -xe --no-pager로 원인을 확인합니다. |
삭제와 롤백
sudo systemctl disable --now docker
sudo apt-get remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo rm -f /etc/apt/sources.list.d/docker.sources
sudo rm -f /etc/apt/keyrings/docker.asc
sudo apt-get update컨테이너 이미지, 볼륨, 네트워크 데이터까지 삭제하려면 /var/lib/docker와 /var/lib/containerd를 지워야 하지만, 이 작업은 실행 중인 서비스 데이터를 잃을 수 있으므로 반드시 백업과 영향 범위를 확인한 뒤 진행합니다.
# 데이터까지 제거해야 하는 경우에만 실행
sudo rm -rf /var/lib/docker /var/lib/containerd문서 링크: Docker Engine Ubuntu 설치 문서, Docker Linux post-installation 문서