소개
Docker 는 가벼우면서도 휴대 가능한 컨테이너화 솔루션을 제공하여 소프트웨어 배포 방식을 혁신했습니다. Docker 컨테이너 목록을 보고 관리하는 방법을 이해하는 것은 개발자와 시스템 관리자에게 매우 중요합니다. 이 튜토리얼에서는 다양한 시나리오에서 Docker 컨테이너를 효과적으로 목록화, 검사 및 추적하는 방법을 안내합니다.
Docker 컨테이너 개요
Docker 컨테이너란 무엇인가요?
Docker 컨테이너는 소프트웨어 실행에 필요한 모든 것을 포함하는 가볍고 독립적인 실행 패키지입니다. 코드, 런타임 환경, 시스템 도구, 라이브러리 및 설정 등이 포함됩니다. 컨테이너는 다양한 컴퓨팅 플랫폼에서 애플리케이션을 일관되고 재현 가능한 환경에서 실행할 수 있도록 지원합니다.
Docker 컨테이너의 주요 특징
격리
컨테이너는 애플리케이션을 호스트 시스템과 다른 컨테이너로부터 격리하여 각 애플리케이션이 다른 애플리케이션과 간섭하지 않고 고유한 환경에서 실행되도록 보장합니다.
graph TD
A[호스트 운영 체제] --> B[컨테이너 1]
A --> C[컨테이너 2]
A --> D[컨테이너 3]
이식성
컨테이너는 개발 환경부터 프로덕션 환경까지 다양한 환경에서 일관되게 실행될 수 있으므로 "내 컴퓨터에서는 작동하는데"와 같은 문제를 줄여줍니다.
효율성
컨테이너는 기존 가상 머신에 비해 호스트 시스템의 커널을 공유하고 오버헤드가 적기 때문에 자원을 더 효율적으로 사용합니다.
컨테이너 대 가상 머신
| 특징 | Docker 컨테이너 | 가상 머신 |
|---|---|---|
| 자원 사용량 | 가볍게 사용 | 무겁게 사용 |
| 시작 시간 | 몇 초 | 몇 분 |
| 격리 수준 | 프로세스 수준 | 전체 시스템 |
| 성능 | 높음 | 낮음 |
일반적인 사용 사례
- 마이크로서비스 아키텍처
- 지속적 통합/지속적 배포 (CI/CD)
- 클라우드 네이티브 애플리케이션 개발
- 개발 및 테스트 환경
기본 Docker 컨테이너 워크플로우
graph LR
A[Docker 이미지] --> B[컨테이너 생성]
B --> C[컨테이너 시작]
C --> D[애플리케이션 실행]
D --> E[컨테이너 중지]
E --> F[컨테이너 제거]
LabEx 시작하기
Docker 컨테이너에 대한 실습 경험을 얻으려면 LabEx 는 컨테이너 기술을 숙달하는 데 도움이 되는 대화형 환경과 포괄적인 튜토리얼을 제공합니다.
컨테이너 목록 확인
기본 Docker 컨테이너 목록 명령어
실행 중인 컨테이너 목록
현재 실행 중인 컨테이너를 보려면 docker ps 명령어를 사용합니다.
docker ps
모든 컨테이너 목록 (중지된 컨테이너 포함)
중지된 컨테이너를 포함한 모든 컨테이너를 보려면:
docker ps -a
고급 컨테이너 목록 기술
컨테이너 필터링
Docker 는 특정 컨테이너를 보기 위한 강력한 필터링 옵션을 제공합니다.
## 상태 필터링
docker ps -f "status=running"
## 이미지 필터링
docker ps -f "ancestor=ubuntu:latest"
사용자 지정 출력 형식
특정 열로 컨테이너 목록을 사용자 지정합니다.
docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Status}}"
컨테이너 목록 시각화
graph TD
A[Docker 명령어] --> B{목록 유형}
B --> |실행 중인 컨테이너| C[docker ps]
B --> |모든 컨테이너| D[docker ps -a]
B --> |필터링된 컨테이너| E[docker ps -f]
자세한 컨테이너 정보
특정 컨테이너 검사
특정 컨테이너에 대한 자세한 정보를 얻으려면:
docker inspect [CONTAINER_ID]
컨테이너 목록 속성
| 속성 | 설명 | 예시 |
|---|---|---|
| CONTAINER ID | 고유 컨테이너 식별자 | a1b2c3d4e5f6 |
| IMAGE | 기본 이미지 | ubuntu:latest |
| COMMAND | 실행 중인 명령어 | /bin/bash |
| CREATED | 컨테이너 생성 시간 | 2 시간 전 |
| STATUS | 현재 컨테이너 상태 | 45 분 전 실행 중 |
| PORTS | 노출된 포트 | 80/tcp |
| NAMES | 컨테이너 이름 | friendly_newton |
LabEx Pro 팁
Docker 컨테이너 목록을 다룰 때, LabEx 는 숙련도와 이해도를 높이기 위해 제어된 환경에서 이러한 명령어를 연습할 것을 권장합니다.
실제 시나리오
- 컨테이너 수명주기 모니터링
- 컨테이너 배포 문제 해결
- 여러 컨테이너 환경 관리
- 컨테이너 자원 감사
컨테이너 관리 기법
컨테이너 수명주기 관리
컨테이너 시작
docker start 명령어를 사용하여 컨테이너를 시작합니다.
docker start [CONTAINER_ID]
컨테이너 중지
실행 중인 컨테이너를 정상적으로 중지합니다.
docker stop [CONTAINER_ID]
컨테이너 재시작
단일 명령어로 컨테이너를 재시작합니다.
docker restart [CONTAINER_ID]
컨테이너 수명주기 워크플로우
graph TD
A[컨테이너 생성] --> B[컨테이너 시작]
B --> C{컨테이너 상태}
C --> |실행 중| D[명령어 실행]
C --> |중지됨| E[재시작/삭제]
D --> F[컨테이너 중지]
F --> G[컨테이너 삭제]
고급 컨테이너 관리
대화형 컨테이너 실행
컨테이너 내부에서 대화형 쉘을 시작합니다.
docker run -it ubuntu:latest /bin/bash
실행 중인 컨테이너에서 명령어 실행
활성 컨테이너에서 명령어를 실행합니다.
docker exec [CONTAINER_ID] command
컨테이너 리소스 관리
컨테이너 리소스 제한
CPU 및 메모리 사용량을 제어합니다.
docker run --cpus=2 --memory=1g ubuntu:latest
리소스 사용량 모니터링
컨테이너 성능을 추적합니다.
docker stats [CONTAINER_ID]
컨테이너 관리 기법
| 기법 | 명령어 | 설명 |
|---|---|---|
| 생성 | docker create | 컨테이너를 시작하지 않고 준비 |
| 실행 | docker run | 컨테이너를 생성하고 시작 |
| 중지 | docker stop | 컨테이너를 정상적으로 중지 |
| 삭제 | docker rm | 컨테이너를 삭제 |
| 일시 정지 | docker pause | 컨테이너를 일시적으로 멈춤 |
컨테이너 네트워킹
포트 매핑
컨테이너 포트를 호스트에 노출합니다.
docker run -p 8080:80 nginx:latest
사용자 지정 네트워크 생성
격리된 컨테이너 네트워크를 생성합니다.
docker network create mynetwork
docker run --network=mynetwork nginx:latest
컨테이너 백업 및 마이그레이션
컨테이너 스냅샷 생성
실행 중인 컨테이너에서 이미지를 생성합니다.
docker commit [CONTAINER_ID] myimage:backup
컨테이너 내보내기
마이그레이션을 위해 컨테이너 상태를 저장합니다.
docker export [CONTAINER_ID] > container.tar
LabEx 권장 사항
포괄적인 Docker 컨테이너 관리를 위해 LabEx 는 실제 기술을 습득하기 위해 제어된 시뮬레이션 환경에서 이러한 기법을 연습할 것을 권장합니다.
권장 사항
- 항상 리소스 제한을 사용합니다.
- 적절한 컨테이너 모니터링을 구현합니다.
- 정기적으로 사용하지 않는 컨테이너를 정리합니다.
- 컨테이너 구성에 버전 관리를 사용합니다.
- 보안 스캐닝을 구현합니다.
요약
Docker 컨테이너 목록 관리를 마스터하는 것은 강력하고 효율적인 컨테이너화된 환경을 유지하는 데 필수적입니다. Docker CLI 명령어와 고급 필터링 기법을 활용하여 실행 중인 컨테이너와 중지된 컨테이너에 대한 포괄적인 정보를 얻을 수 있으며, 이는 리소스 관리 및 시스템 모니터링을 개선하는 데 도움이 됩니다.



