[우분투 24.04 LTS] 도커(Docker) 및 도커 컴포즈(Docker Compose) 설치 완벽 가이드

과거의 서버 관리는 애플리케이션마다 요구하는 언어 버전과 라이브러리가 달라 패키지 의존성 충돌이 빈번하게 발생했다. 그러나 현대 IT 인프라 환경에서는 운영체제 수준의 가상화 기술인 컨테이너(Container)를 활용하여 각 서비스를 완전히 독립된 환경에서 구동하는 도커(Docker) 기술이 산업 표준으로 자리 잡았다.

특히 개인용 홈 서버 환경에서 도커를 도입하면 넥스트클라우드(Nextcloud), 워드프레스(WordPress) 등 복잡한 서비스를 명령어 단 한 줄로 배포하고 삭제할 수 있어 유지보수 효율성이 극대화된다. 본 문서는 우분투(Ubuntu) 24.04 LTS 환경에서 최신 Docker Engine과 다중 컨테이너 제어 도구인 Docker Compose를 공식 저장소를 통해 안전하게 설치하고 초기 환경을 최적화하는 실무 프로세스를 기술한다.

1. 기존 충돌 패키지 제거 및 필수 의존성 환경 구축

시스템에 기본적으로 내장된 구버전 도커 패키지(docker.io, docker-compose 등)가 존재할 경우, 공식 최신 버전과의 충돌을 방지하기 위해 완전히 삭제하는 사전 정지 작업이 필수적이다.

Bash

sudo apt update
sudo apt remove docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc

이후 도커 공식 저장소와 안전한 HTTPS 통신을 수행하기 위한 시스템 필수 의존성 패키지들을 일괄 설치한다.

Bash

sudo apt install -y ca-certificates curl gnupg

2. Docker 공식 GPG 보안 키 및 전용 저장소 등록

우분투 기본 저장소가 아닌 Docker 유한회사가 직접 배포하는 공식 저장소(Official Repository)에서 최신 패키지를 수신하기 위해, 시스템에 Docker의 공식 GPG 암호화 키를 등록하고 패키지 경로를 매핑한다.

시스템 권한 통제하에 GPG 키를 저장할 디렉터리를 생성하고 서명 키를 다운로드하여 변환(dearmor) 후 저장한다.

Bash

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
sudo chmod a+r /etc/apt/keyrings/docker.gpg

보안 키 등록이 완료되면, 현재 구동 중인 시스템의 CPU 아키텍처(amd64 등)와 우분투 OS 코드네임을 동적으로 파악하여 호환되는 Docker 공식 저장소 주소를 시스템의 APT 소스 리스트에 추가한다.

Bash

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

3. Docker Engine 및 Docker Compose 최신 버전 설치

새롭게 추가된 공식 저장소의 패키지 인덱스를 시스템에 갱신한 후, Docker의 핵심 엔진(Engine)과 컨테이너 런타임(Containerd), 그리고 컨테이너 오케스트레이션 플러그인인 Docker Compose를 동시에 설치한다.

Bash

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

과거에는 docker-compose라는 파이썬 기반 독립 바이너리를 별도로 설치해야 했으나, 최신 클라우드 네이티브 아키텍처에서는 Docker CLI의 공식 플러그인(docker-compose-plugin) 형태로 통합되어 패키지 관리가 일원화되었다.

4. 보안 및 편의성 확보를 위한 그룹(Group) 권한 위임

Docker 데몬은 시스템 최고 권한(Root)을 기반으로 백그라운드에서 구동되므로, 일반 사용자가 컨테이너를 제어하기 위해서는 매번 명령어 앞에 sudo 접두어를 붙여야 하는 권한 제약이 발생한다.

서버 관리 전담용으로 사용하는 현재의 일반 사용자 계정 환경 변수($USER)를 docker 시스템 그룹에 편입시켜, Root 권한 상승 없이도 안전하고 독립적으로 Docker 명령어를 실행할 수 있도록 권한을 위임한다.

Bash

sudo usermod -aG docker $USER

해당 그룹 권한 위임 정책은 현재 연결된 쉘 세션이 완전히 종료된 후 재시작될 때 운영체제 메모리에 반영된다. SSH 터미널을 완전히 종료(exit)하고 서버에 재접속하거나, 아래 명령어를 통해 그룹 변경 사항을 현재 세션에 즉시 덮어씌워 활성화한다.

Bash

newgrp docker

5. 시스템 자동 실행(Enable) 체계 적용 및 서비스 구동 검증

운영체제 재부팅이나 예기치 않은 시스템 전원 차단 이후 서버가 복구될 때, Docker 서비스 데몬과 내부의 컨테이너들이 사람의 개입 없이 자동으로 구동될 수 있도록 시스템 데몬(Systemd) 자동 활성화 설정을 적용한다.

Bash

sudo systemctl enable docker
sudo systemctl enable containerd

최종적으로 시스템에 격리 구축된 Docker Core 모듈 및 Compose 플러그인이 정상적인 아키텍처로 설치되었는지 버전 정보를 출력하여 검증한다.

Bash

docker --version
docker compose version

출력 결과에 Docker version 27.x.xDocker Compose version v2.x.x 형태로 정상적인 빌드 넘버가 반환된다면, 컨테이너 호스팅을 위한 백엔드 인프라가 완벽하게 구동 중인 상태이다.

마무리

시스템 의존성 충돌의 늪에서 벗어나, 논리적으로 완전히 격리된 컨테이너 가상화 인프라를 우분투 서버에 성공적으로 구축하였다. 이로써 단 몇 줄의 설정 코드(YAML)만으로 복잡한 데이터베이스, 웹 서버, 애플리케이션을 순식간에 찍어내듯 배포할 수 있는 현대적이고 유연한 서버 환경이 완성되었다.

컨테이너 호스팅을 위한 최적의 인프라 준비가 완료되었으므로, 다음 포스팅에서는 구글 드라이브를 완벽히 대체할 수 있는 강력한 프라이빗 스토리지 시스템인 [도커 컨테이너를 활용한 개인용 클라우드(Nextcloud) NAS 구축하기] 프로세스를 실무 관점에서 상세히 다루겠다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다