CentOS 7에서 Docker와 Docker Compose 설치 스크립트

CentOS 7에서 Docker와 Docker Compose를 설치하는 레거시 스크립트입니다. 지원 종료 주의사항, 설치 전 백업, Compose v2/v1 선택, 검증과 삭제 절차를 정리했습니다.

CentOS 7에서 Docker와 Docker Compose를 설치하던 스크립트를 정리한 것입니다. 다만 CentOS 7은 이미 일반적인 유지보수 관점에서 오래된 OS이고, Docker 공식 문서의 현재 CentOS 지원 대상도 CentOS Stream 계열 중심으로 바뀌었습니다. 따라서 신규 서버라면 Rocky Linux, AlmaLinux, RHEL, CentOS Stream 9/10 같은 유지보수되는 배포판을 우선 검토하고, CentOS 7은 레거시 서버 유지보수 목적으로만 접근하는 것이 좋습니다.

CentOS 7에서 주의할 점

  • CentOS 7은 신규 구축 대상이 아니라 기존 서버 유지보수 대상으로 봐야 합니다.
  • 구식 docker-compose v1 바이너리는 더 이상 권장 흐름이 아닙니다. 가능하면 Compose plugin의 docker compose를 사용합니다.
  • Docker 저장소의 지원 OS/버전 정책은 바뀔 수 있으므로 공식 문서를 먼저 확인합니다.
  • 운영 서버에서 기존 Docker 패키지를 제거하기 전 컨테이너, 볼륨, compose 파일, 이미지 목록을 백업합니다.

설치 전 백업과 확인

cat /etc/centos-release
uname -r
systemctl status docker --no-pager 2>/dev/null || true
docker ps -a 2>/dev/null || true
docker volume ls 2>/dev/null || true
rpm -qa | egrep 'docker|containerd|runc' || true

기존 컨테이너가 있다면 /var/lib/docker 삭제는 곧 데이터 삭제가 될 수 있습니다. 설치 스크립트에 삭제 명령을 넣을 때는 이 점을 분명히 알고 실행해야 합니다.

CentOS 7 레거시 설치 스크립트

#!/usr/bin/env bash
set -euo pipefail

DOCKER_USER="${SUDO_USER:-$(whoami)}"

echo "## OS"
cat /etc/centos-release

echo "## Remove old conflicting packages"
sudo yum remove -y \
 docker \
 docker-client \
 docker-client-latest \
 docker-common \
 docker-latest \
 docker-latest-logrotate \
 docker-logrotate \
 docker-engine \
 docker-selinux \
 docker-engine-selinux \
 container-selinux || true

echo "## Install repository utilities"
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

echo "## Add Docker CE repository"
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

echo "## Install Docker Engine"
sudo yum install -y docker-ce docker-ce-cli containerd.io

echo "## Enable Docker"
sudo systemctl enable --now docker

echo "## Add user to docker group"
sudo usermod -aG docker "$DOCKER_USER"

echo "## Verify"
sudo docker version
sudo docker run --rm hello-world

Docker Compose 설치 방향

가능하면 compose v2 plugin을 사용하는 편이 좋습니다. 패키지가 제공되는 환경이면 아래처럼 설치합니다.

sudo yum install -y docker-compose-plugin
docker compose version

CentOS 7 환경에서 plugin 패키지가 맞지 않거나 저장소 제공이 끊긴 경우, 절차처럼 standalone docker-compose 바이너리를 설치할 수는 있습니다. 단, 이 방식은 자동 업데이트가 되지 않으므로 버전 관리가 필요합니다.

COMPOSE_VERSION="1.29.2"
sudo curl -L "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
 -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version

실행 방법

vi install-docker-centos7.sh
chmod 750 install-docker-centos7.sh
./install-docker-centos7.sh

docker 그룹 권한은 재로그인 후 반영됩니다. 바로 테스트하려면 새 그룹 세션을 열어 확인합니다.

newgrp docker
docker ps
docker run --rm hello-world

문제 해결

증상 확인할 것 조치
저장소 404 CentOS release 값과 Docker repo 지원 여부 CentOS 7 지원 종료 영향을 확인하고 유지보수 OS로 이전을 검토합니다.
GPG key 확인 요청 Docker 공식 GPG fingerprint 공식 문서의 fingerprint와 일치할 때만 승인합니다.
Docker socket 권한 오류 사용자 docker 그룹 포함 여부 id, groups 확인 후 재로그인합니다.
daemon 기동 실패 systemd journal journalctl -u docker -xe --no-pager로 원인을 확인합니다.

삭제

sudo systemctl disable --now docker
sudo yum remove -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo rm -f /usr/local/bin/docker-compose

Docker 데이터까지 삭제하려면 별도 백업 후 진행합니다.

sudo rm -rf /var/lib/docker /var/lib/containerd

문서 링크: Docker Engine CentOS 설치 문서

BGM EVER