개인의 기록
  • 소개
  • 프로젝트
  • 글
  • 링크

© 2026 newgirok

← 글 목록

Docker CLI — 자주 사용하는 명령어 정리

2025년 6월 22일
DockerCLIdocker rundocker builddocker compose

컨테이너 환경이 표준이 된 지금, Docker CLI는 개발자가 매일 마주치는 도구다. 옵션이 많아 처음엔 헷갈리지만, 핵심 명령어 패턴을 익히면 대부분의 작업이 몇 줄로 해결된다. 자주 쓰는 명령어를 실무 예시 중심으로 정리했다.

이미지 관리

Image는 컨테이너 실행의 기반이 되는 읽기 전용 템플릿이다.

# 이미지 빌드 (현재 디렉터리의 Dockerfile 사용)
docker build -t my-app:1.0 .

# 빌드 캐시 무시
docker build --no-cache -t my-app:1.0 .

# 이미지 목록 확인
docker images

# 이미지 삭제
docker rmi my-app:1.0

# Registry에서 이미지 내려받기 / 올리기
docker pull nginx:alpine
docker push my-registry.io/my-app:1.0

Registry — 이미지를 저장하고 배포하는 중앙 저장소. Docker Hub가 대표적이며, 사내 환경에서는 Harbor 등 프라이빗 Registry를 운영한다.

컨테이너 실행과 관리

# 기본 실행 (포그라운드)
docker run nginx:alpine

# 백그라운드 실행 + 포트 바인딩 + 이름 지정
docker run -d -p 8080:80 --name web nginx:alpine

# 환경 변수 주입
docker run -d -e DATABASE_URL=postgres://... --name api my-app:1.0

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

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

-d (detach) — 터미널을 점유하지 않고 백그라운드에서 컨테이너를 실행한다.

# 컨테이너 정지 / 삭제
docker stop web
docker rm web

# 정지와 동시에 삭제
docker rm -f web

디버깅 명령어

실행 중인 컨테이너 안으로 들어가거나 로그를 확인할 때 사용한다.

# 로그 확인 (실시간 스트리밍)
docker logs -f web

# 컨테이너 내부 셸 접속
docker exec -it web sh

# 특정 명령어 실행
docker exec web cat /etc/nginx/nginx.conf

Volume과 Network

Host                   Container
/data/db  ─────────▶  /var/lib/postgresql/data
          (bind mount)
# Named Volume 생성 및 마운트
docker volume create pgdata
docker run -d -v pgdata:/var/lib/postgresql/data postgres:16

# 사용자 정의 네트워크 생성
docker network create app-net

# 같은 네트워크에 컨테이너 연결 (컨테이너명으로 통신 가능)
docker run -d --network app-net --name db postgres:16
docker run -d --network app-net --name api my-app:1.0

Named Volume — Docker가 관리하는 영속 스토리지. 컨테이너를 삭제해도 데이터가 유지된다. 반면 Bind Mount는 호스트 경로를 직접 연결하며 개발 환경에서 소스 코드 동기화에 주로 쓰인다.

docker compose로 묶기

명령어가 길어지면 docker compose로 선언적으로 관리하는 것이 낫다.

# compose.yaml
services:
  db:
    image: postgres:16
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: secret
  api:
    build: .
    ports:
      - "8080:3000"
    depends_on:
      - db

volumes:
  pgdata:
docker compose up -d      # 백그라운드 실행
docker compose logs -f    # 전체 로그 스트리밍
docker compose down -v    # 컨테이너 + Volume 삭제

자주 쓰는 옵션 요약

옵션의미
-d백그라운드 실행
-p host:container포트 바인딩
-v src:dst볼륨 / 바인드 마운트
-e KEY=VALUE환경 변수 주입
--name컨테이너 이름 지정
--rm종료 시 자동 삭제
--network사용자 정의 네트워크 연결
← 이전 글Docker Container — 이미지로 실행되는 격리된 프로세스
다음 글 →Dockerfile — 이미지를 빌드하는 명세서