Docker를 공부하다 보면 가장 많이 사용하는 명령어가 바로 docker run입니다.
이 명령을 실행하면 Docker Image가 실제 실행 가능한 형태로 변환되는데, 이 실행 단위를 Docker Container라고 합니다.
많은 초보자가 Image와 Container를 같은 개념으로 생각하지만, Image는 실행을 위한 템플릿이고 Container는 실제 동작하는 프로세스입니다.
이번 글에서는 Docker Container의 개념부터 생성, 실행, 중지, 삭제, 재시작, 상태 확인까지 실무에서 가장 많이 사용하는 기능을 자세히 알아보겠습니다.
Docker Container란?
Docker Container는 Docker Image를 기반으로 생성되어 실제 실행되는 독립적인 프로세스입니다.
구조는 다음과 같습니다.
Docker Image
↓
docker run
↓
Docker Container
↓
Application Running
Image 하나로 여러 개의 Container를 동시에 생성할 수 있습니다.
Image와 Container의 관계
하나의 Image는 여러 개의 Container를 만들 수 있습니다.
Ubuntu Image
├── Container A
├── Container B
├── Container C
Container마다 파일 시스템과 프로세스는 독립적으로 동작합니다.
Container의 특징
Docker Container는 다음과 같은 특징을 가집니다.
- 독립적인 실행 환경
- 빠른 시작 속도
- 프로세스 단위 격리
- 가벼운 자원 사용
- 필요 시 삭제 가능
- 동일한 Image에서 여러 개 생성 가능
Container 생성 및 실행
가장 많이 사용하는 명령입니다.
docker run nginx
동작 과정
Image 확인
↓
없으면 다운로드
↓
Container 생성
↓
Container 실행
docker run은 생성과 실행을 동시에 수행합니다.
백그라운드 실행
웹 서버는 일반적으로 백그라운드에서 실행합니다.
docker run -d nginx
-d
↓
Detached Mode
↓
백그라운드 실행
서비스 운영에서는 대부분 이 방식을 사용합니다.
Container 이름 지정
기본적으로 Docker는 임의의 이름을 생성합니다.
직접 지정하려면
docker run --name webserver nginx
이후에는 이름으로 관리할 수 있습니다.
포트 연결
웹 서비스를 외부에서 접속하려면 포트를 연결해야 합니다.
docker run -d -p 8080:80 nginx
의미
Host Port 8080
↓
Container Port 80
브라우저에서
http://서버IP:8080
으로 접속할 수 있습니다.
실행 중인 Container 확인
현재 실행 중인 컨테이너
docker ps
예시
CONTAINER ID
IMAGE
STATUS
PORTS
NAMES
실무에서 가장 많이 사용하는 명령 중 하나입니다.
모든 Container 확인
중지된 Container까지 확인합니다.
docker ps -a
현재 시스템에 존재하는 모든 Container가 표시됩니다.
Container 중지
Container를 중지합니다.
docker stop webserver
또는
docker stop 컨테이너ID
프로세스가 정상적으로 종료됩니다.
Container 시작
중지된 Container를 다시 실행합니다.
docker start webserver
새로운 Container를 만드는 것이 아니라 기존 Container를 다시 실행합니다.
Container 재시작
한 번에 재시작합니다.
docker restart webserver
웹 서버 설정 변경 후 자주 사용하는 명령입니다.
Container 삭제
먼저 중지한 후 삭제합니다.
docker rm webserver
실행 중이라면
docker stop webserver
docker rm webserver
순서로 삭제합니다.
실행 중인 Container 강제 삭제
실행 중인 컨테이너를 강제로 삭제하려면
docker rm -f webserver
를 사용합니다.
운영 환경에서는 신중하게 사용해야 합니다.
Container 로그 확인
애플리케이션 로그를 확인합니다.
docker logs webserver
실시간 로그
docker logs -f webserver
장애 분석 시 매우 자주 사용하는 명령입니다.
Container 내부 접속
실행 중인 컨테이너에 접속합니다.
docker exec -it webserver bash
Ubuntu 기반 이미지에서는 Bash를 사용할 수 있습니다.
일부 경량 이미지에서는
docker exec -it webserver sh
를 사용해야 합니다.
Container 상세 정보 확인
docker inspect webserver
확인 가능한 내용
- IP 주소
- Volume
- Network
- Mount
- 환경 변수
- Image 정보
JSON 형식으로 출력됩니다.
실행 중인 프로세스 확인
컨테이너 내부 프로세스를 확인합니다.
docker top webserver
Container 내부에서 실행 중인 프로세스를 확인할 수 있습니다.
Container 리소스 확인
CPU와 메모리 사용량을 확인합니다.
docker stats
출력 예시
CPU %
MEM USAGE
NET I/O
BLOCK I/O
운영 환경에서 성능 모니터링에 자주 사용됩니다.
Container 자동 삭제
테스트용 컨테이너는 종료와 동시에 삭제할 수 있습니다.
docker run --rm ubuntu
Container 종료
↓
자동 삭제
임시 테스트에 유용합니다.
Container Lifecycle
Container의 생명주기는 다음과 같습니다.
Image
↓
Create
↓
Running
↓
Stopped
↓
Start
↓
Running
↓
Remove
Container는 실행과 중지를 반복할 수 있으며 삭제되면 다시 사용할 수 없습니다.
실무에서 자주 사용하는 명령어
Container 생성
docker run nginx
백그라운드 실행
docker run -d nginx
포트 연결
docker run -d -p 8080:80 nginx
실행 중인 Container 확인
docker ps
전체 Container 확인
docker ps -a
Container 중지
docker stop webserver
Container 시작
docker start webserver
Container 재시작
docker restart webserver
Container 삭제
docker rm webserver
로그 확인
docker logs -f webserver
컨테이너 접속
docker exec -it webserver bash
리소스 확인
docker stats
실무 사례
예를 들어 Ubuntu 서버에 Nginx 웹 서버를 Docker로 배포한다고 가정해 보겠습니다.
운영자는 다음과 같은 절차를 수행합니다.
docker pull nginx로 이미지 다운로드docker run -d --name webserver -p 80:80 nginx실행docker ps로 실행 여부 확인docker logs webserver로 오류 확인- 설정 변경 후
docker restart webserver실행 - 장애 발생 시
docker exec -it webserver bash로 내부 점검 - 서비스 종료 시
docker stop과docker rm으로 컨테이너 제거
이처럼 Docker Container는 생성부터 운영, 모니터링, 삭제까지 서버 운영의 핵심 단위로 사용됩니다.
자주 묻는 질문
Docker Image와 Container의 가장 큰 차이는 무엇인가요?
Image는 읽기 전용 템플릿이며, Container는 해당 이미지를 기반으로 실행되는 실제 프로세스입니다.
docker run과 docker start는 어떤 차이가 있나요?
docker run은 새로운 Container를 생성하고 실행합니다. docker start는 이미 생성되어 중지된 Container를 다시 실행하는 명령입니다.
Container를 삭제하면 Image도 함께 삭제되나요?
아닙니다. Container를 삭제해도 Image는 그대로 남아 있습니다. Image를 삭제하려면 docker rmi 또는 docker image rm 명령을 별도로 실행해야 합니다.
마무리
Docker Container는 Docker Image를 실행한 실제 인스턴스로, 컨테이너 기술의 핵심입니다. 생성(docker run), 실행(docker start), 중지(docker stop), 삭제(docker rm)와 같은 기본 명령을 익히면 Docker 기반 애플리케이션을 효과적으로 운영할 수 있습니다. 이후에는 Docker Registry, Dockerfile, Docker Compose 등을 학습하면서 보다 복잡한 컨테이너 환경을 구축할 수 있습니다.