[도커] 명령어
1. 컨테이너 실행 및 제어 (Lifecycle)
컨테이너를 생성하고, 켜고, 끄고, 지우는 가장 기본적인 작업
| 명령어 | 주요 옵션 | 설명 |
|---|---|---|
docker run | -d | 백그라운드 실행 (Detached mode) |
-p [Host]:[Container] | 포트 연결 (예: -p 8080:80) | |
-v [Host]:[Container] | 볼륨 마운트 (데이터 보존) | |
-e [KEY=VAL] | 환경 변수 설정 | |
--name [이름] | 컨테이너 이름 지정 | |
--rm | 종료 시 컨테이너 자동 삭제 | |
--restart [정책] | 재시작 정책 (always, on-failure 등) | |
-it | i, t가 원래 각각 다르지만 이렇게 끄면 입출력 연결, 즉 대화형 | |
docker create | (run과 옵션 동일) | 컨테이너 생성만 하고 시작은 안 함 (Created 상태) |
docker start | -a (attach) | 시작하면서 출력 결과 화면에 표시 |
docker stop | 실행 중인 컨테이너 정상 종료 (SIGTERM) | |
docker rm | -f | 실행 중인 컨테이너 강제 삭제 (SIGKILL) |
-v | 연결된 익명 볼륨까지 함께 삭제 | |
docker ps | -a | 꺼진 컨테이너 포함 전체 목록 조회 |
-q | 컨테이너 ID만 출력 (스크립트용) |
undefined
2. 이미지 빌드 및 관리 (Images)
Dockerfile을 이미지로 만들거나, 이미지를 관리하는 명령어
| 명령어 | 주요 옵션 | 설명 |
|---|---|---|
docker build | -t [이름:태그] | 이미지 이름과 태그 지정 |
-f [파일경로] | 기본 Dockerfile 외 다른 파일 지정 | |
--no-cache | 캐시 무시하고 처음부터 다시 빌드 | |
--build-arg | 빌드 시점에 변수 값 전달 | |
--platform | CPU 아키텍처 지정 (linux/amd64 등) | |
docker images | 다운로드된 이미지 목록 확인 | |
docker rmi | -f | 강제 삭제 (사용 중이지 않은 경우) |
docker pull | 레지스트리에서 이미지 다운로드 | |
docker push | 레지스트리에 이미지 업로드 | |
docker tag | 기존 이미지에 별명(태그) 추가 |
undefined 이미지 업로드 과정
1
2
3
4
5
6
# local 상에 전에 만들었던 mysql로 빌드
docker build -t db:mysql-8.0.44-debian ./
# 태그 생성. git commit 느낌. 빌드한 이미지를 먼저 적고, 아이디/이미지명 순으로 적는다
docker tag db:mysql-8.0.44-debian.2 skdtmr/db:mysql-8.0.44-debian.2
# 도커 repo로 푸시
docker push skdtmr/db:mysql-8.0.44-debian.3
3. 디버깅 및 관측 (Observability)
컨테이너가 이상할 때 속을 들여다보는 명령어
| 명령어 | 주요 옵션 | 설명 |
|---|---|---|
docker logs | -f | 로그 실시간 확인 (Follow) |
--tail [숫자] | 끝에서부터 지정한 줄만큼만 출력 | |
-t | 로그 시간(Timestamp) 표시 | |
docker exec | -it | 대화형 쉘(Shell) 접속 시 필수 (-i + -t) |
-u [user] | 특정 사용자 권한으로 명령어 실행 | |
docker inspect | -f | 특정 정보만 추출 (Go Template 문법) |
docker stats | 실시간 리소스(CPU, MEM) 사용량 모니터링 |
undefined
4. 청소 및 시스템 관리 (System)
디스크 용량을 확보할 때 사용
| 명령어 | 주요 옵션 | 설명 |
|---|---|---|
docker system prune | -a | 사용 안 하는 모든 리소스(이미지 포함) 삭제 |
-f | 확인 메시지 없이 즉시 삭제 | |
docker container prune | 중지된 컨테이너만 일괄 삭제 | |
docker image prune | -a | 댕글링(이름 없는) 이미지뿐만 아니라 미사용 이미지 전체 삭제 |
undefined
5. 오케스트레이션 (Docker Compose)
여러 컨테이너를 한 번에 다룬다
| 명령어 | 주요 옵션 | 설명 |
|---|---|---|
docker compose up | -d | 백그라운드 실행 |
--build | 실행 전 이미지 강제 재빌드 | |
docker compose down | -v | 정의된 볼륨 데이터까지 삭제 (주의!) |
--rmi all | 사용된 이미지까지 모두 삭제 | |
docker compose logs | -f | 전체 서비스 로그 실시간 확인 |
undefined
6. 네트워크 및 고급 관리 (Advanced)
| 명령어 | 주요 옵션 | 설명 |
|---|---|---|
docker network create | --driver | 네트워크 드라이버 지정 (bridge, overlay 등) |
docker network connect | 실행 중인 컨테이너에 네트워크 추가 연결 | |
docker save | -o [파일] | 이미지를 파일로 추출 (폐쇄망 이동용) |
docker load | -i [파일] | 파일에서 이미지 불러오기 |
docker commit | (비권장) 컨테이너 상태를 이미지로 저장 |
undefined docker cp [options] container:src_path dest_path
docker commit [커밋할 이름] [설정 이름]
docker [명령어] $([docker 명령어]) 이런식으로도 가능하다
예 ) docker stop $(docker ps -aq)
This post is licensed under CC BY 4.0 by the author.