자주 쓰는 Docker 명령어 정리
Docker 환경에서 컨테이너 생성 및 실행, 이미지 관리, 네트워크/볼륨 처리, 시스템 자원 정리 및 Docker Compose 사용 시 자주 사용하는 핵심 명령어 모음입니다. 1. 컨테이너 생성 및 실행 (Container Lifecycle) 컨테이너 생성 및 실행 (docker run) # 기본 실행 (데몬 방식 백그라운드 -d) docker run -d --name my-nginx -p 80:80 nginx # 대화형 인터랙티브 터미널 접속 실행 (-it) docker run -it --name ubuntu-test ubuntu:22.04 /bin/bash # 컨테이너 종료 시 자동 삭제 (--rm) docker run --rm -it python:3.10 python -c "print('Hello Docker')" # 환경 변수 전달 (-e) 및 볼륨 마운트 (-v) docker run -d --name my-db \ -e MYSQL_ROOT_PASSWORD=secret \ -v /host/data:/var/lib/mysql \ -p 3306:3306 mysql:8.0 컨테이너 상태 조회 (docker ps) docker ps # 현재 실행 중인 컨테이너 목록 docker ps -a # 종료된 컨테이너를 포함한 모든 컨테이너 목록 docker ps -q # 컨테이너 ID만 출력 컨테이너 제어 (시작 / 중지 / 재시작 / 삭제) docker start my-nginx # 정지된 컨테이너 시작 docker stop my-nginx # 실행 중인 컨테이너 안전 종료 (SIGTERM) docker kill my-nginx # 강제 종료 (SIGKILL) docker restart my-nginx # 컨테이너 재시작 docker rm my-nginx # 중지된 컨테이너 삭제 docker rm -f my-nginx # 실행 중인 컨테이너 강제 삭제 docker rm $(docker ps -aq) # 모든 중지된 컨테이너 일괄 삭제 2. 컨테이너 접속 및 내부 상태 확인 실행 중인 컨테이너 명령 실행 및 접속 # 실행 중인 컨테이너의 bash/sh 터미널 접속 docker exec -it my-nginx /bin/bash # 접속하지 않고 컨테이너 내부 명령 단발성 실행 docker exec my-nginx ls -la /usr/share/nginx/html 로그 확인 (docker logs) docker logs my-nginx # 전체 로그 출력 docker logs -f my-nginx # 실시간 로그 스트리밍 (Tail -f 개념) docker logs --tail 100 -f my-nginx # 최근 100줄 출력 후 실시간 스트리밍 docker logs --timestamps my-nginx # 타임스탬프와 함께 로그 출력 상태 모니터링 & 세부 정보 조회 docker stats # 모든 실행 중인 컨테이너 CPU/RAM/네트워크 실시간 모니터링 docker stats my-nginx # 특정 컨테이너 리소스 모니터링 docker top my-nginx # 컨테이너 내부 실행 중인 프로세스 목록 docker inspect my-nginx # 컨테이너의 상세 메타데이터(IP, 바인드 마운트, 환경변수 등) JSON 출력 3. 도커 이미지 관리 (Image Management) 이미지 조회 및 검색 docker images # 다운로드된 이미지 목록 출력 docker search nginx # Docker Hub에서 이미지 검색 이미지 빌드 / 다운로드 / 삭제 # Docker Hub에서 이미지 다운로드 docker pull ubuntu:22.04 # Dockerfile 기반 이미지 빌드 docker build -t my-app:v1.0 . docker build --no-cache -t my-app:v1.0 . # 캐시 없이 깨끗하게 빌드 # 이미지 태그 지정 및 푸시 docker tag my-app:v1.0 myregistry.com/my-app:v1.0 docker push myregistry.com/my-app:v1.0 # 이미지 삭제 docker rmi ubuntu:22.04 docker rmi -f my-app:v1.0 # 강제 삭제 docker rmi $(docker images -f "dangling=true" -q) # 태그 없는 댄글링(Dangling) 이미지 삭제 4. 볼륨 & 네트워크 관리 볼륨 (Volume) 관리 docker volume ls # 볼륨 목록 조회 docker volume create my-vol # 새 볼륨 생성 docker volume inspect my-vol# 볼륨 저장 경로 및 정보 확인 docker volume rm my-vol # 볼륨 삭제 docker volume prune # 사용하지 않는 모든 볼륨 정리 네트워크 (Network) 관리 docker network ls # 네트워크 목록 조회 docker network create my-net# 사용자 정의 브릿지 네트워크 생성 docker network inspect my-net# 네트워크 연결 정보 및 IP 확인 docker network connect my-net my-container # 컨테이너를 특정 네트워크에 연결 docker network disconnect my-net my-container # 네트워크 연결 해제 docker network rm my-net # 네트워크 삭제 5. 시스템 청소 및 디스크 자원 정리 (Cleanup) # 도커 디스크 사용량 확인 docker system df # 미사용 자원(중지된 컨테이너, 미사용 네트워크, 댄글링 이미지 등) 일괄 정리 docker system prune # 미사용 볼륨 및 사용되지 않는 모든 이미지까지 포함하여 완전 정리 (주의!) docker system prune -a --volumes 6. 파일 복사 및 백업 / 아카이브 컨테이너 ↔ 호스트 간 파일 복사 (docker cp) # 호스트 파일 -> 컨테이너 내부로 복사 docker cp ./index.html my-nginx:/usr/share/nginx/html/index.html # 컨테이너 파일 -> 호스트로 복사 docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf 이미지 파일 백업 / 로드 (save & load) # 이미지를 tar 압축 파일로 저장 (폐쇄망 전송용) docker save -o my-app.tar my-app:v1.0 # tar 아카이브 파일에서 이미지 복원 docker load -i my-app.tar 7. Docker Compose 주요 명령어 docker-compose v2 표준인 docker compose 명령어 사용 기준입니다. ...