명령어 모음

Docker 명령어

sendjin 2025. 12. 3. 14:30

1) 컨테이너 상태 확인 및 로그 (디버깅의 시작)

서버가 안 될 때

명령어  설명  예시 
docker ps 현재 실행 중인 컨테이너 목록(ID, 포트 등)을 확인합니다. docker ps
docker ps -a 중지된(꺼진) 컨테이너를 포함해 모든 목록을 확인합니다. docker ps -a
docker logs [컨테이너] 특정 컨테이너의 에러 로그를 확인합니다. (가장 중요 ⭐) docker logs docker-mattermost-1
docker logs -f [컨테이너] 로그를 실시간으로 계속 추적(Follow)하며 봅니다. (Ctrl+C로 종료) docker logs -f nginx_mattermost
docker stats 실행 중인 컨테이너들의 CPU, 메모리 사용량을 실시간으로 보여줍니다. docker stats
docker inspect [컨테이너] IP 주소, 볼륨 경로, 환경변수 등 상세 설정 정보를 봅니다. docker inspect docker-postgres-1

 

2) 컨테이너 실행 및 제어 (Lifecycle)

컨테이너를 켜고 끄거나 재부팅할 때

명령어 설명 예시 
docker start [컨테이너] 중지된(Stopped) 컨테이너를 다시 시작합니다. docker start my-app
docker stop [컨테이너] 실행 중인 컨테이너를 안전하게 종료합니다. docker stop my-app
docker restart [컨테이너] 컨테이너를 재시작합니다. (메모리 초기화, 단순 오류 해결용) docker restart docker-mattermost-1
docker rm [컨테이너] 중지된 컨테이너를 완전히 삭제합니다. docker rm my-app
docker rm -f [컨테이너] 실행 중인 컨테이너를 강제로 종료하고 삭제합니다. docker rm -f my-app

 

3) Docker Compose 명령어 (통합 관리)

여러 컨테이너(yml 파일)로 구성된 서비스를 한 번에 관리

명령어  설명  예시 
docker compose up -d 설정 파일(yml)에 따라 컨테이너를 생성하고 백그라운드 실행합니다. docker compose up -d
docker compose down 실행된 컨테이너, 네트워크를 모두 정지하고 삭제합니다. docker compose down
docker compose stop 컨테이너를 삭제하지 않고 잠시 중지만 합니다. docker compose stop
docker compose restart [서비스명] 특정 서비스(예: nginx)만 콕 집어서 재시작합니다. docker compose restart nginx
docker compose logs -f 연동된 모든 서비스의 로그를 한 화면에서 실시간으로 봅니다. docker compose logs -f

 

4) 컨테이너 내부 접속 및 DB 관리 (Advanced)

컨테이너 안으로 직접 들어가서 명령어를 치거나 DB를 조회할 때

명령어  설명 예시
docker exec -it [컨테이너] bash 실행 중인 컨테이너의 내부 쉘(Shell)로 접속합니다. docker exec -it docker-mattermost-1 bash
docker exec -it [컨테이너] sh bash가 없는 경량 컨테이너(Alpine 등)에 접속할 때 씁니다. docker exec -it nginx_mattermost sh
docker exec -it [DB컨테이너] psql -U [유저] [DB명] PostgreSQL DB에 바로 접속하여 SQL 쿼리를 날립니다. docker exec -it docker-postgres-1 psql -U mmuser mattermost
docker exec -it [DB컨테이너] mysql -u [유저] -p (MySQL/MariaDB 사용 시) DB에 접속합니다. docker exec -it docker-mysql-1 mysql -u root -p

 

5) 디스크 정리 및 캐시 삭제 (Clean Up)

Docker를 오래 쓰면 쌓이는 불필요한 파일들을 정리하여 용량을 확보합니다.

명령어  설명  예시
docker system prune 사용하지 않는(중지된) 컨테이너, 네트워크, 댕글링 이미지를 모두 삭제합니다. docker system prune
docker system prune -a 위 기능에 더해, 현재 컨테이너가 쓰지 않는 모든 이미지까지 싹 지웁니다. (강력함) docker system prune -a
docker image prune 이름이 없는(dangling) 불필요한 이미지만 골라서 삭제합니다. docker image prune
docker volume prune 주의: 어떤 컨테이너와도 연결되지 않은 데이터 볼륨을 영구 삭제합니다. (DB 데이터 날라감 주의 ⚠️) docker volume prune

 

 

 

6) 캐시 관리 및 빌드 제어 (Build & Cache)

이미지 빌드 속도를 위해 저장된 캐시를 관리하거나, 컨테이너를 초기화하고 싶을 때

명령어  설명  예시 
docker builder prune Docker 빌드 과정에서 생성된 모든 빌드 캐시를 삭제하여 용량을 확보합니다. docker builder prune
docker compose build --no-cache 캐시를 사용하지 않고 이미지를 처음부터 완전히 새로 빌드합니다. (코드 변경이 반영 안 될 때 유용) docker compose build --no-cache
docker compose build --no-cache [서비스] 특정 서비스만 콕 집어서 캐시 없이 재빌드합니다. docker compose build --no-cache mattermost
docker rmi [이미지ID] 특정 이미지를 삭제합니다. (해당 이미지를 쓰는 컨테이너가 없어야 삭제 가능) docker rmi a1b2c3d4
docker image prune -a 현재 실행 중인 컨테이너가 사용하지 않는 모든 이미지를 일괄 삭제합니다. docker image prune -a
docker system df 현재 Docker가 사용 중인 디스크 용량(이미지, 컨테이너, 볼륨, 캐시)을 보여줍니다. docker system df

 

 

6-1) Docker 디스크 사용량 분석 (docker system df)

더보기

1. TYPE (종류)

Docker가 관리하는 리소스의 4가지 유형입니다.

  • Images: 다운로드(pull)받거나 생성(build)한 도커 이미지 파일들입니다.
  • Containers: 이미지를 기반으로 현재 생성되어 있는 컨테이너들입니다. (실행 중 + 정지됨 모두 포함)
  • Local Volumes: 컨테이너의 데이터를 영구 저장하기 위해 생성된 볼륨(데이터 저장소)입니다. (DB 데이터, 설정 파일 등)
  • Build Cache: 이미지를 빌드할 때 속도를 높이기 위해 저장해 둔 임시 캐시 파일입니다.

 

2. TOTAL (총 개수)

해당 리소스가 내 컴퓨터에 총 몇 개가 있는지를 나타냅니다.

  • 예: Images가 10개라면, 내 PC에 도커 이미지가 10개 저장되어 있다는 뜻입니다.

 

3. ACTIVE (사용 중)

총 개수(TOTAL) 중에서 현재 실제로 실행 중인 컨테이너가 사용하고 있는 개수입니다.

  • Images: 현재 켜져 있는 컨테이너가 쓰고 있는 이미지 개수.
  • Local Volumes: 현재 컨테이너와 연결(Mount)되어 있는 볼륨 개수.
  • Containers: 현재 실행 중인(Up) 컨테이너 개수.

 

4. SIZE (사용 용량)

해당 리소스들이 차지하고 있는 실제 디스크 용량입니다.

  • Images: 모든 이미지 파일 크기의 합계.
  • Containers: 컨테이너가 실행되면서 추가로 생성한 파일(로그, 임시 파일 등)의 크기입니다. (이미지 크기는 제외됨)
    • 주의: 컨테이너 내부에서 파일을 많이 쓰면 이 수치가 커집니다.

 

5. RECLAIMABLE (회수 가능 용량 ⭐)

  • 이걸 지우면 이만큼 용량을 확보할 수 있다 는 뜻입니다. 가장 중요한 지표입니다.
  • 계산법: (전체 용량) - (현재 사용 중인 용량)
  • 즉, 지금 당장 docker system prune 명령어를 쳤을 때 지워질 수 있는 쓰레기 파일들의 총량입니다.
  • 옆에 있는 퍼센트(%)는 전체 대비 낭비되고 있는 비율을 보여줍니다.

예시 해석

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          5         2         1.5GB     800MB (53%)

  • 해석:
    • 내 PC에 이미지가 총 5개 있음.
    • 그중 2개는 지금 컨테이너가 쓰고 있음.
    • 전체 용량은 1.5GB임.
    • 쓰지 않는 나머지 3개를 지우면 800MB를 확보할 수 있음! (docker image prune으로 삭제 가능)