본문 바로가기
개발&프로그래밍

[Docker] Docker 기본 명령어 정리

by 재아군 2024. 12. 5.

[Docker] Docker 기본 명령어 정리

Docker를 사용하면서 가장 자주 사용하는 명령어들을 실전 예제와 함께 알아보자.

기본적인 명령어부터 실무에서 자주 사용하는 고급 명령어까지 정리했다.

 

기본 명령어

이미지 관련 명령어

# 이미지 검색
docker search nginx

# 이미지 다운로드
docker pull nginx:latest

# 이미지 목록 확인
docker images

# 이미지 삭제
docker rmi nginx:latest

# 사용하지 않는 이미지 모두 삭제
docker image prune -a

컨테이너 관련 명령어

# 컨테이너 생성 및 실행
docker run -d -p 80:80 --name my-nginx nginx

# 실행 중인 컨테이너 목록
docker ps

# 모든 컨테이너 목록 (중지된 컨테이너 포함)
docker ps -a

# 컨테이너 중지
docker stop my-nginx

# 컨테이너 시작
docker start my-nginx

# 컨테이너 재시작
docker restart my-nginx

# 컨테이너 삭제
docker rm my-nginx

# 실행 중인 컨테이너 강제 삭제
docker rm -f my-nginx

 

컨테이너 상세 관리

컨테이너 로그 확인

# 기본 로그 확인
docker logs my-nginx

# 실시간 로그 확인
docker logs -f my-nginx

# 최근 100줄만 확인
docker logs --tail 100 my-nginx

# 타임스탬프 표시
docker logs -t my-nginx

 

컨테이너 리소스 관리

# 컨테이너 리소스 사용량 확인
docker stats

# 메모리 제한 설정
docker run -d --memory="512m" nginx

# CPU 제한 설정
docker run -d --cpus="1.5" nginx

# 상세 시스템 정보 확인
docker system df

 

네트워크 관리

네트워크 기본 명령어

# 네트워크 목록 확인
docker network ls

# 네트워크 생성
docker network create my-network

# 네트워크 상세 정보
docker network inspect my-network

# 컨테이너를 네트워크에 연결
docker network connect my-network my-container

# 네트워크에서 컨테이너 연결 해제
docker network disconnect my-network my-container

 

볼륨 관리

# 볼륨 생성
docker volume create my-volume

# 볼륨 목록 확인
docker volume ls

# 볼륨 상세 정보
docker volume inspect my-volume

# 볼륨 삭제
docker volume rm my-volume

# 사용하지 않는 볼륨 모두 삭제
docker volume prune

 

실전 활용 예제

웹 서버 실행

# Nginx 웹 서버 실행 (백그라운드)
docker run -d \
  --name my-nginx \
  -p 80:80 \
  -v /my/content:/usr/share/nginx/html \
  nginx:latest

# 환경변수 설정과 함께 MySQL 실행
docker run -d \
  --name my-mysql \
  -e MYSQL_ROOT_PASSWORD=mysecretpassword \
  -e MYSQL_DATABASE=myapp \
  -v mysql-data:/var/lib/mysql \
  mysql:5.7

 

개발 환경 설정

# MongoDB 실행
docker run -d \
  --name my-mongo \
  -p 27017:27017 \
  -v mongodb-data:/data/db \
  mongo:latest

# Redis 캐시 서버 실행
docker run -d \
  --name my-redis \
  -p 6379:6379 \
  redis:latest

 

Docker Compose 기본 명령어

# 서비스 시작
docker-compose up -d

# 서비스 중지
docker-compose down

# 서비스 로그 확인
docker-compose logs

# 서비스 상태 확인
docker-compose ps

# 특정 서비스만 재시작
docker-compose restart web-server

 

고급 활용

컨테이너 프로세스 관리

# 컨테이너 내부 쉘 접속
docker exec -it my-container /bin/bash

# 컨테이너 내부 프로세스 확인
docker top my-container

# 컨테이너 변경사항 확인
docker diff my-container

 

이미지 관리

# 이미지 히스토리 확인
docker history nginx:latest

# 이미지를 tar 파일로 저장
docker save -o nginx.tar nginx:latest

# tar 파일로부터 이미지 로드
docker load -i nginx.tar

# 컨테이너로부터 새 이미지 생성
docker commit my-container my-new-image:latest

 

문제 해결과 디버깅

컨테이너 문제 해결

# 컨테이너 상세 정보 확인
docker inspect my-container

# 컨테이너 리소스 사용량 실시간 모니터링
docker stats my-container

# 특정 프로세스 실행
docker exec my-container ps aux

# 네트워크 연결 확인
docker exec my-container ping google.com

시스템 관리

# Docker 시스템 정보 확인
docker system info

# 디스크 사용량 확인
docker system df

# 사용하지 않는 리소스 정리
docker system prune -a

# 이벤트 모니터링
docker events

 

 

실무 팁

컨테이너 자동 재시작 설정

docker run -d --restart=always nginx

 

헬스체크 설정

docker run -d \
  --health-cmd="curl -f http://localhost/ || exit 1" \
  --health-interval=5s \
  --health-retries=3 \
  nginx

 

로그 관리

# 로그 드라이버 설정
docker run -d \
  --log-driver=json-file \
  --log-opt max-size=10m \
  --log-opt max-file=3 \
  nginx

 

리소스 제한 설정

docker run -d \
  --memory="1g" \
  --memory-swap="2g" \
  --cpus="2" \
  --pids-limit=100 \
  nginx

댓글