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
이제 다음 명령을 실행하여 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
다음으로, 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를 누릅니다.

Docker를 설치한 후, 다음 명령을 실행하여 버전을 확인합니다. 이 글을 작성하는 시점에서 Debian 12에 Docker v24.0.4가 설치되어 있습니다.
docker version
Docker 서비스 관리
Docker Engine은 기본 컨테이너 엔진으로 사용되는 containerd가 필요합니다. containerd와 docker는 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) 메시지가 표시됩니다.

다음으로, 아래 명령을 실행하여 docker 및 containerd 서비스를 시작할 수 있습니다.
sudo systemctl start docker
sudo systemctl start containerdDocker를 중지해야 하는 경우, 다음 명령을 실행하여 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 명령을 실행하여 컨테이너 목록을 확인할 수 있습니다.
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 명령을 실행합니다. 다음 명령은 기본 태그 latest로 nginx 이미지를 다운로드합니다.
docker pull nginx
이미지 버전을 지정하려면 대상 이미지 뒤에 이미지 버전을 추가합니다.
docker pull nginx:alpine
이제 아래 명령을 통해 Docker 호스트에서 사용 가능한 이미지를 확인합니다.
docker images다운로드한 Docker 이미지가 이미지 태그 및 크기와 같은 자세한 정보와 함께 표시되어야 합니다.

마지막으로 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
컨테이너 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
이제 –tail N 옵션을 추가하여 최신 로그만 가져올 수 있습니다. 이 경우, 옵션 –tail 15는 마지막 15줄의 로그만 표시합니다.
docker logs --tail 15 web
Docker 볼륨 관리
Docker 볼륨은 애플리케이션이 지속적인 저장소를 사용할 수 있는 곳입니다. 컨테이너를 변경하더라도 애플리케이션에 대해 동일한 볼륨이나 데이터를 계속 사용할 수 있습니다. 다음 섹션에서는 볼륨 생성부터 확인 및 컨테이너 내에서 볼륨 사용에 이르기까지 Docker 볼륨의 기본 사용법을 보여줍니다.
새 볼륨을 생성하려면 아래 docker volume 명령을 실행합니다. 이 데모에서는 새로운 Docker 볼륨 myvol을 생성합니다.
docker volume create myvolls 옵션을 사용하여 Docker 호스트에서 사용 가능한 볼륨을 확인합니다. myvol 볼륨이 생성된 것을 볼 수 있어야 합니다.
docker volume ls
기본적으로 Docker는 로컬 디렉터리를 데이터 저장소로 사용하는 로컬 드라이버로 볼륨을 생성합니다. 기본 데이터 저장소 디렉터리는 /var/lib/docker/volume 디렉터리에 위치합니다. 아래 inspect 옵션을 실행하여 myvol 볼륨의 세부 정보를 확인합니다.
docker volume inspect myvolmyvol 볼륨이 기본 드라이버 로컬과 함께 표시되고 데이터 저장소가 /var/lib/docker/volumes/myvol/_data 디렉터리에 위치해야 합니다. Mountpoint 섹션은 로컬 데이터 저장소 디렉터리입니다.

다음으로, -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:alpinedocker inspect webMounts 섹션 내에서 컨테이너 web이 컨테이너 내부의 대상 디렉터리 /app에 볼륨 myvol을 사용하고 있는 것을 확인할 수 있어야 합니다.

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 이미지를 구축할 수 있습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.