Docker 설치 · 7 min read · Oct 05, 2025

Debian 12에 Docker 설치 및 사용 방법

Docker는 애플리케이션을 개발, 배포 및 실행하기 위한 OS 수준 가상화를 제공하는 오픈 플랫폼 세트입니다. Docker에서는 애플리케이션이 컨테이너라는 표준화된 단위의 패키지로 제공됩니다. 각 컨테이너는 라이브러리 및 구성 파일을 포함하여 서로 격리되어 있지만, 각 컨테이너는 잘 정의된 네트워크 채널을 통해 통신할 수 있습니다.

현재 Docker는 소프트웨어 개발 및 DevOps의 표준이 되었습니다. 수백만 명의 개발자가 매일 작업 중 애플리케이션을 구축, 공유 및 실행하는 데 사용합니다. 이는 개발 자체부터 테스트 및 프로덕션에 이르기까지 애플리케이션 개발 생명 주기에서 사용됩니다. Docker를 사용하면 애플리케이션이 더 유연하고 이식 가능해집니다. 애플리케이션은 다양한 운영 체제에서 쉽게 실행할 수 있지만, 애플리케이션 자체는 라이브러리에서 구성 파일까지 동일하게 유지됩니다.

이 가이드에서는 최신 Debian 12에 Docker Engine을 설치하는 방법을 보여드리겠습니다. 또한 systemctl을 통해 Docker 서비스를 관리하는 방법과 이미지, 컨테이너 및 볼륨 관리를 위한 Docker의 기본 사용법을 배웁니다.

전제 조건

이 가이드를 진행하기 전에 다음 요구 사항을 충족해야 합니다:

Debian 12 머신 - Debian 데스크탑 또는 서버를 사용할 수 있습니다.
sudo 관리자 권한이 있는 비루트 사용자.

Docker Engine 설치

최신 버전의 Docker Engine을 얻으려면 공식 Docker 저장소를 통해 설치해야 합니다. 먼저 Docker 저장소와 GPG 키를 추가한 다음 Docker Engine을 설치해야 합니다.

먼저, 최신 패키지 정보를 얻기 위해 Debian 저장소를 업데이트하고 새로 고칩니다. 그런 다음 Debian 시스템에 기본 패키지 ca-certificates, curl, 및 gnupg를 설치합니다. 프롬프트가 표시되면 y를 입력하고 ENTER를 눌러 확인합니다.

sudo apt update  
sudo apt install ca-certificates curl gnupg

install curl gnupg

이제 다음 명령을 실행하여 Docker 저장소의 GPG 키를 설정합니다. 이 키는 /etc/apt/keyrings/ 디렉토리에 저장됩니다.

sudo install -m 0755 -d /etc/apt/keyrings  
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg  
sudo chmod a+r /etc/apt/keyrings/docker.gpg

그 후, 아래 명령을 실행하여 Debian 시스템에 Docker 저장소를 추가합니다. 이 글을 작성하는 시점에서 Docker는 Debian 11 및 12 모두에 대한 저장소를 제공합니다.

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

adding docker gpg key and repository

다음으로, Debian 저장소를 다시 새로 고치고 아래 apt 명령을 통해 Docker Engine을 설치합니다. 이 명령은 기본 컨테이너 엔진인 containerd, BuildKit 기능을 갖춘 기본 빌드 플러그인인 Docker buildx 플러그인 및 플러그인으로서의 Docker compose도 설치합니다.

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

프롬프트가 표시되면 y를 입력하고 ENTER를 누릅니다.

install docker

Docker를 설치한 후, 다음 명령을 실행하여 버전을 확인합니다. 이 글을 작성하는 시점에서 Debian 12에 Docker v24.0.4가 설치되어 있습니다.

docker version

docker version

Docker 서비스 관리

Docker Engine은 기본 컨테이너 엔진으로 사용되는 containerd가 필요합니다. containerddocker는 Docker 호스트에서 실행되어야 합니다. 이제 systemd 유틸리티 systemctl을 통해 Docker 및 containerd 서비스를 관리하는 방법을 배웁니다.

Debian에서는 docker 및 containerd 서비스가 자동으로 활성화됩니다. 다음 명령을 실행하여 docker 및 containerd 서비스가 모두 활성화되어 있는지 확인합니다.

sudo systemctl is-enabled docker  
sudo systemctl is-enabled containerd

활성화되어 있다면 터미널에 enabled라는 출력이 표시됩니다.

이제 아래 명령을 실행하여 docker 및 containerd의 서비스 상태를 확인합니다.

sudo systemctl status docker  
sudo systemctl status containerd

서비스가 실행 중이라면 터미널에 active (running) 메시지가 표시됩니다.

checking docker service

다음으로, 아래 명령을 실행하여 docker 및 containerd 서비스를 시작할 수 있습니다.

sudo systemctl start docker  
sudo systemctl start containerd

Docker를 중지해야 하는 경우, 다음 명령을 실행하여 Docker 및 containerd 서비스를 중지합니다.

sudo systemctl stop docker  
sudo systemctl stop containerd

마지막으로 Docker 구성에 변경 사항을 적용하려면 다음 명령을 사용하여 다시 시작합니다.

sudo systemctl restart docker  
sudo systemctl restart containerd

비루트 사용자를 위한 Docker 구성

기본적으로 Docker Engine으로 컨테이너를 실행할 수 있는 것은 루트 사용자만 가능합니다. 비루트 사용자가 사용할 수 있도록 하려면 사용자를 docker 그룹에 추가해야 합니다. 사용자를 docker 그룹에 추가하려면 이 섹션을 완료한 후 hello-world 컨테이너를 실행합니다.

아래 usermod 명령을 실행하여 사용자를 docker 그룹에 추가하고 su를 통해 사용자로 로그인합니다.

sudo usermod -aG docker username  
su - username

이제 다음 명령을 입력하여 사용자로 hello-world 컨테이너를 실행합니다.

docker run hello-world

모든 것이 잘 진행되면 Docker 컨테이너에서 Hello World 메시지가 표시됩니다:

docker for non-root

마지막으로 아래 docker 명령을 실행하여 컨테이너 목록을 확인할 수 있습니다.

docker ps -a

상태가 Exited인 하나의 컨테이너가 표시됩니다. hello-world 컨테이너의 이름은 기본적으로 무작위이며, 이 경우 이름은 optimistic_edison입니다.

Docker로 컨테이너 실행 및 관리

이 시점에서 Docker Engine이 실행 중이며 docker 명령줄을 통해 컨테이너를 생성할 수 있습니다. 다음 섹션에서는 Docker의 기본 사용법을 배웁니다:

  • Docker 이미지 관리
  • 컨테이너 생성 및 관리
  • 컨테이너 로그 확인
  • Docker 볼륨 생성 및 관리

Docker 이미지 관리

Docker 이미지는 애플리케이션이 단일 이미지로 패키징되어 이미지 레지스트리를 통해 쉽게 배포되는 것입니다. Docker의 기본 이미지 레지스트리는 https://hub.docker.com/입니다.

다음 섹션에서는 Docker 이미지를 다운로드하고, 다운로드한 이미지를 확인하고, 이미지를 삭제하는 방법을 배웁니다.

Docker 레지스트리에서 Docker 이미지를 다운로드하려면 아래 docker pull 명령을 실행합니다. 다음 명령은 기본 태그 latestnginx 이미지를 다운로드합니다.

docker pull nginx

docker pull

이미지 버전을 지정하려면 대상 이미지 뒤에 이미지 버전을 추가합니다.

docker pull nginx:alpine

download specific image version

이제 아래 명령을 통해 Docker 호스트에서 사용 가능한 이미지를 확인합니다.

docker images

다운로드한 Docker 이미지가 이미지 태그 및 크기와 같은 자세한 정보와 함께 표시되어야 합니다.

list images

마지막으로 rmi 매개변수를 사용하여 머신에서 Docker 이미지를 제거합니다.

docker rmi imagename

컨테이너 관리

컨테이너는 애플리케이션이 실행되는 곳이며, Docker 이미지를 기반으로 합니다. 컨테이너는 지속적인 데이터를 위해 특정 디렉토리 또는 볼륨을 마운트하고 애플리케이션을 위해 Docker 호스트에서 특정 포트를 노출할 수 있습니다.

이 섹션에서는 컨테이너를 생성하고 실행하는 방법, 컨테이너를 확인하는 방법, docker 명령줄을 통해 컨테이너를 시작하고 중지하는 방법을 배웁니다.

컨테이너를 실행하려면 docker 명령 내에서 run 매개변수를 사용합니다.

docker run -it -d -p 8080:80 --name web nginx:alpine

다음 명령은 nginx:alpine 이미지를 사용하여 web이라는 컨테이너를 실행합니다. 또한, 컨테이너 web은 컨테이너 내에서 포트 80을 노출하고 Docker 호스트 머신 내에서 포트 8080을 노출합니다. 게다가 -it 매개변수는 컨테이너에서 분리되도록 하고, -d 매개변수는 컨테이너 web을 백그라운드에서 실행합니다.

이제 아래 docker ps 명령을 실행하여 Docker 머신에서 컨테이너 목록을 확인합니다.

docker ps  
docker ps -a

모든 것이 잘 진행되면 컨테이너 web이 실행 중이며 호스트 머신에서 포트 8080이 노출되어 있어야 합니다.

docker run 명령은 컨테이너를 생성하고 시작하지만, docker 명령을 통해 컨테이너를 시작하고 중지할 수도 있습니다.

아래 docker stop 명령을 실행하여 컨테이너 web을 중지합니다.

docker container stop web  
docker ps -a

stop container

컨테이너 web을 다시 시작하려면 다음 docker start 명령을 사용합니다.

docker container start web  
docker ps

마지막으로 아래 docker rm 명령을 실행하여 컨테이너를 삭제합니다. -f 매개변수는 대상 컨테이너가 실행 중일 때에도 강제로 컨테이너를 삭제하는 데 사용됩니다.

docker container rm optimistic_edison  
docker container rm optimistic_edison -f

컨테이너 로그 확인

Docker에서 로그를 확인하는 것은 매우 중요합니다. 이는 항상 컨테이너화된 애플리케이션을 디버깅하는 데 필요합니다. 이제 Docker에서 컨테이너 로그를 확인하는 방법을 배웁니다.

컨테이너의 로그를 확인하려면 docker 명령에서 logs 매개변수를 사용합니다. 이는 컨테이너가 생성된 이후의 로그를 표시합니다.

docker logs web

check toantiner log

이제 –tail N 옵션을 추가하여 최신 로그만 가져올 수 있습니다. 이 경우, 옵션 –tail 15는 마지막 15줄의 로그만 표시합니다.

docker logs --tail 15 web

check last log container

Docker 볼륨 관리

Docker 볼륨은 애플리케이션이 지속적인 저장소를 사용할 수 있는 곳입니다. 컨테이너를 변경하더라도 애플리케이션에 대해 동일한 볼륨이나 데이터를 계속 사용할 수 있습니다. 다음 섹션에서는 볼륨 생성부터 확인 및 컨테이너 내에서 볼륨 사용에 이르기까지 Docker 볼륨의 기본 사용법을 보여줍니다.

새 볼륨을 생성하려면 아래 docker volume 명령을 실행합니다. 이 데모에서는 새로운 Docker 볼륨 myvol을 생성합니다.

docker volume create myvol

ls 옵션을 사용하여 Docker 호스트에서 사용 가능한 볼륨을 확인합니다. myvol 볼륨이 생성된 것을 볼 수 있어야 합니다.

docker volume ls

create check volume docker

기본적으로 Docker는 로컬 디렉터리를 데이터 저장소로 사용하는 로컬 드라이버로 볼륨을 생성합니다. 기본 데이터 저장소 디렉터리는 /var/lib/docker/volume 디렉터리에 위치합니다. 아래 inspect 옵션을 실행하여 myvol 볼륨의 세부 정보를 확인합니다.

docker volume inspect myvol

myvol 볼륨이 기본 드라이버 로컬과 함께 표시되고 데이터 저장소가 /var/lib/docker/volumes/myvol/_data 디렉터리에 위치해야 합니다. Mountpoint 섹션은 로컬 데이터 저장소 디렉터리입니다.

detailed volume

다음으로, -v 옵션을 통해 컨테이너에서 Docker 볼륨을 사용할 수 있습니다. 이 옵션은 모든 옵션을 하나의 필드에 결합하고, –mount 옵션은 더 명시적이고 자세하며 구분된 구문입니다.

아래 docker run 명령을 실행하여 –mount 옵션을 통해 볼륨 myvol을 사용하여 새로운 컨테이너 web2를 생성합니다. 그런 다음 docker inspect 명령을 통해 컨테이너 web을 검사합니다.

docker run -d \  
  -p 8081:80 \  
  --name web2 \  
  --mount source=myvol,target=/app \  
  nginx:alpine
docker inspect web

Mounts 섹션 내에서 컨테이너 web이 컨테이너 내부의 대상 디렉터리 /app에 볼륨 myvol을 사용하고 있는 것을 확인할 수 있어야 합니다.

checking mount

v 옵션을 사용하려면 docker run 명령은 다음과 같아야 합니다. -v 옵션은 myvol2 볼륨을 대상 디렉터리 /app에 마운트하는 단일 필드를 사용합니다.

docker run -d \  
  -p 8082:80 \  
  --name web3 \  
  -v myvol2:/app \  
  nginx:alpine

마지막으로 아래 docker volume 명령을 실행하여 rm 매개변수로 Docker 볼륨을 제거합니다.

docker rm web2 -f  
docker volume rm myvol

결론

멋진 작업입니다! Debian 12 서버에 Docker Engine 설치를 완료했습니다. 또한 systemctl 명령 유틸리티를 통해 Docker 서비스를 관리하는 방법과 docker 클라이언트를 통해 Docker 이미지, 컨테이너 및 Docker 볼륨을 관리하는 방법을 배웠습니다.

추가 탐색을 통해 Dockerfile을 통해 애플리케이션을 위한 Docker 이미지를 구축할 수 있습니다.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.