컨테이너 가상화 기술의 대명사인 도커(Docker)는 개발 환경 구축과 애플리케이션 배포 과정을 획기적으로 단순화해 주는 필수 도구입니다. 도커를 제대로 활용하기 위해서는 그래픽 사용자 인터페이스(GUI) 환경뿐만 아니라, 터미널 명령 줄 인터페이스(CLI)에서 사용하는 기초 명령어들을 정확히 이해하고 숙지해야 합니다.
도커의 동작 원리는 이미지를 기반으로 독립된 컨테이너를 생성하고 관리하는 방식입니다. 명령어를 능숙하게 사용할 수 있다면 수많은 컨테이너 환경을 효율적으로 컨트롤할 수 있으며, 시스템 자원의 낭비 없이 쾌적한 개발 환경을 유지할 수 있습니다.
본 글에서는 도커 환경을 운영할 때 가장 기본이 되는 이미지 다루기부터 컨테이너의 생성, 실행, 정지, 삭제까지 핵심 명령어들을 단계별로 상세히 알아보겠습니다.
1. 도커 이미지 검색 및 다운로드 명령어
도커 컨테이너를 실행하기 위해서는 실행에 필요한 모든 파일과 설정이 담겨 있는 도커 이미지(Docker Image)가 선행적으로 필요합니다.
[이미지: 터미널 창에서 docker pull 명령어로 우분투 이미지를 다운로드하는 화면]
이미지 관리를 위한 대표적인 기초 명령어는 다음과 같습니다.
- 도커 이미지 검색 (docker search)
- 도커 중앙 저장소인 도커 허브(Docker Hub)에서 사용할 수 있는 공식 및 사용자 공개 이미지를 검색합니다.
- 사용 예시: docker search ubuntu (우분투 관련 이미지를 검색합니다.)
- 도커 이미지 다운로드 (docker pull)
- 필요한 이미지를 중앙 저장소에서 로컬 컴퓨터로 다운로드합니다.
- 사용 예시: docker pull ubuntu:latest (최신 버전의 우분투 이미지를 받습니다.)
- 보유 이미지 목록 확인 (docker images)
- 현재 내 컴퓨터에 다운로드되어 있는 이미지들의 이름, 태그, 이미지 ID, 용량 등을 확인합니다.
- 사용 예시: docker images
- 도커 이미지 삭제 (docker rmi)
- 더 이상 사용하지 않는 저장된 이미지를 삭제하여 용량을 확보합니다.
- 사용 예시: docker rmi ubuntu:latest 또는 docker rmi [이미지ID]
2. 컨테이너 생성 및 실행 관리 명령어
다운로드한 이미지를 기반으로 실제 격리된 가상 공간인 컨테이너(Container)를 생성하고 실행하는 과정입니다.
컨테이너 실행 (docker run)
docker run은 이미지를 다운로드하는 과정과 컨테이너 생성 및 시작을 한 번에 수행하는 가장 핵심적인 명령어입니다. 다양한 옵션을 조합하여 사용합니다.
- -d 옵션 (백그라운드 실행): 컨테이너를 백그라운드 데몬 형태로 실행합니다. (예: 백엔드 서버나 DB 구동 시 필수)
- -p 옵션 (포트 바인딩): 호스트 컴퓨터의 포트와 컨테이너 내부 포트를 연결합니다. (예: -p 8080:80은 호스트의 8080 포트 접속을 컨테이너 80 포트로 전달합니다.)
- --name 옵션 (이름 지정): 무작위로 생성되는 컨테이너 ID 대신 사용자가 구별하기 쉬운 이름을 부여합니다.
- -it 옵션 (상호작용 터미널): 컨테이너 내부 터미널로 직접 진입할 때 함께 사용하는 옵션입니다.
- 실전 조합 예시: docker run -d -p 80:80 --name my-web-server nginx (Nginx 웹 서버 컨테이너를 백그라운드에서 80 포트로 실행합니다.)
실행 중인 컨테이너 상태 확인 (docker ps)
현재 컴퓨터에서 동작 중인 컨테이너 목록과 정보를 조회합니다.
[이미지: docker ps 명령어를 통해 현재 실행 중인 컨테이너의 포트 번호와 이름을 확인하는 화면]
- docker ps: 현재 '실행 중인' 컨테이너 목록만 출력합니다.
- docker ps -a: 정지된 컨테이너를 포함하여 존재하는 모든 컨테이너 목록을 출력합니다.
3. 컨테이너 정지, 재시작 및 삭제 명령어
사용이 끝났거나 정리가 필요한 컨테이너는 시스템 자원 관리를 위해 정지시키거나 안전하게 삭제해야 합니다.
- 컨테이너 정지 (docker stop)
- 실행 중인 컨테이너에 정지 신호를 보내 안전하게 종료합니다.
- 사용 예시: docker stop my-web-server 또는 docker stop [컨테이너ID]
- 컨테이너 시작 및 재시작 (docker start / docker restart)
- 정지되어 있는 기존 컨테이너를 다시 실행하거나, 동작 중인 컨테이너를 재부팅합니다.
- 사용 예시: docker start my-web-server
- 컨테이너 삭제 (docker rm)
- 정지 상태의 컨테이너를 완전히 삭제합니다. (실행 중인 컨테이너는 정지 후 삭제하거나 -f 강제 삭제 옵션을 써야 합니다.)
- 사용 예시: docker rm my-web-server
- 사용하지 않는 미사용 자원 일괄 정리 (docker system prune)
- 정지된 모든 컨테이너, 사용되지 않는 네트워크, 이름 없는 임시 이미지(Dangling Images)를 한 번에 삭제하여 Disk 용량을 한꺼번에 정리해 줍니다.
- 사용 예시: docker system prune -a
자주 묻는 질문 (FAQ)
Q1. docker stop과 docker kill 명령어의 차이점은 무엇인가요?
A1. docker stop은 컨테이너 내부 프로세스에게 정상 종료 신호(SIGTERM)를 보내 진행 중인 작업을 정리할 시간을 준 뒤 종료합니다. 반면 docker kill은 강제 종료 신호(SIGKILL)를 보내 즉시 중단시키므로, 데이터 손실 위험이 있어 특별한 응답 없음 상태가 아니라면 docker stop을 사용하는 것이 안전합니다.
Q2. 이미지를 삭제하려는데 object is being used by running container 오류가 발생합니다.
A2. 해당 이미지를 바탕으로 만들어진 컨테이너가 정지 또는 실행 상태로 남아있기 때문에 발생하는 오류입니다. docker ps -a 명령어로 해당 이미지를 참조하는 컨테이너를 먼저 삭제(docker rm)한 후, 이미지 삭제(docker rmi)를 재시도해야 합니다.
Q3. 실행 중인 컨테이너 내부에 직접 들어가서 파일이나 명령어를 수정하고 싶을 때는 어떻게 하나요?
A3. docker exec 명령어를 활용하시면 됩니다. 예를 들어 docker exec -it my-web-server bash 명령어를 입력하면 해당 컨테이너 내부의 Bash shell 터미널로 접속하여 직접 내부 파일 및 설정을 제어할 수 있습니다.
결론
도커를 자유자재로 다루기 위한 첫걸음은 가장 기본적인 생성, 조회, 정지, 삭제 명령어를 숙달하는 것입니다.
오늘 알아본 docker pull, docker run, docker ps, docker stop, docker rm 명령어만 정확히 이해하고 있어도 대부분의 일상적인 컨테이너 구동 작업을 문제없이 수행할 수 있습니다.
본 가이드의 명령어들을 직접 터미널에 입력해 보면서 자신만의 컨테이너 관리 실습을 완성해 보시기 바랍니다.
'가상화 및 서브 PC 활용' 카테고리의 다른 글
| Docker Desktop 윈도우 설치 가이드: WSL2 연동 및 초보자 필수 설정 (0) | 2026.10.24 |
|---|---|
| VirtualBox 설치 및 초기 설정 방법: 윈도우 PC에 리눅스 가상환경 만들기 (0) | 2026.10.24 |
| 남는 중고 노트북/서버 활용법: 홈랩(Home Lab) 구축을 위한 가상화 입문 가이드 (0) | 2026.10.23 |
| 초보자를 위한 가상화 개념 정리: 가상머신(VM)과 도커(Docker)의 차이점 비교 (0) | 2026.10.23 |