명령어 모음
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으로 삭제 가능)