Docker Container란? 컨테이너 생성부터 실행·중지·삭제까지 완벽 정리

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로 배포한다고 가정해 보겠습니다.

운영자는 다음과 같은 절차를 수행합니다.

  1. docker pull nginx로 이미지 다운로드
  2. docker run -d --name webserver -p 80:80 nginx 실행
  3. docker ps로 실행 여부 확인
  4. docker logs webserver로 오류 확인
  5. 설정 변경 후 docker restart webserver 실행
  6. 장애 발생 시 docker exec -it webserver bash로 내부 점검
  7. 서비스 종료 시 docker stopdocker rm으로 컨테이너 제거

이처럼 Docker Container는 생성부터 운영, 모니터링, 삭제까지 서버 운영의 핵심 단위로 사용됩니다.

자주 묻는 질문

Docker Image와 Container의 가장 큰 차이는 무엇인가요?

Image는 읽기 전용 템플릿이며, Container는 해당 이미지를 기반으로 실행되는 실제 프로세스입니다.

docker rundocker 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 등을 학습하면서 보다 복잡한 컨테이너 환경을 구축할 수 있습니다.

댓글 남기기