콘텐츠로 이동

Docker Cheatsheet

등록일

수정일

Docker에서 자주 사용하는 빌드, 실행, 조회, 삭제 명령어를 빠르게 다시 보기 위한 문서다.

  • 목적: Dockerfile 기준으로 이미지 생성
  • 명령어:
Terminal window
docker build -f Dockerfile -t vosn/spring-boot-docker-test:0.0.1 .
  • 메모:
    • -t는 이미지 이름과 태그를 지정한다.
  • 목적: 이미지로 컨테이너 실행
  • 명령어:
Terminal window
docker run -p 8080:80 vosn/spring-boot-docker-test:0.0.1
  • 메모:
    • 8080:80호스트 포트:컨테이너 포트를 의미한다.
  • 목적: 실행 중인 컨테이너 중지
  • 명령어:
Terminal window
docker stop $(docker ps -q)
  • 메모:
    • 모든 실행 중 컨테이너를 한 번에 멈출 때 사용한다.
  • 목적: 실행 중인 컨테이너 내부 셸 접속
  • 명령어:
Terminal window
docker ps
docker exec -it ${CONTAINER_ID} /bin/bash
  • 메모:
    • -it는 표준 입력과 가상 터미널을 함께 연다.
  • 목적: 실행 중이거나 종료된 컨테이너 확인
  • 명령어:
Terminal window
docker ps
docker ps -a
  • 메모:
    • -a를 붙이면 종료된 컨테이너도 함께 본다.
  • 목적: 로컬 이미지 확인
  • 명령어:
Terminal window
docker image ls
docker image ls -a
  • 메모:
    • 태그, 이미지 ID, 크기를 같이 확인할 수 있다.
    • docker image ls -q 또는 docker images -q는 이미지 ID만 출력한다.
  • 목적: 불필요한 이미지, 볼륨, 캐시 정리
  • 명령어:
Terminal window
docker system prune
docker system prune -a
docker volume prune
  • 메모:
    • -a는 dangling 이미지뿐 아니라 사용하지 않는 이미지까지 지운다.
  • 목적: 종료된 컨테이너 삭제
  • 명령어:
Terminal window
docker rm ${CONTAINER_ID}
docker rm $(docker ps -q -a)
  • 메모:
    • 종료된 컨테이너를 한 번에 지울 때 유용하다.
    • 실행 중인 컨테이너가 있으면 실패할 수 있으므로 필요하면 먼저 docker stop $(docker ps -q)로 중지한다.
  • 목적: 로컬 이미지 삭제
  • 명령어:
Terminal window
docker rmi ${IMAGE_ID}
docker rmi $(docker images -q)
  • 메모:
    • 여러 이미지를 지울 때는 현재 참조 중인 컨테이너가 없는지 먼저 확인한다.
  • 목적: Docker Hub 인증 정보 등록 또는 제거
  • 명령어:
Terminal window
docker login -u ${USER_ID}
docker logout
  • 메모:
    • 로그인 후 ~/.docker/config.json에 인증 정보가 저장된다.
    • 실행 후 비밀번호 또는 토큰 입력 프롬프트가 나올 수 있다.
  • 목적: 비밀번호 대신 토큰을 표준 입력으로 넘겨 Docker Hub 로그인
  • 명령어:
Terminal window
echo ${TOKEN} | docker login -u ${USER_ID} --password-stdin
  • 메모:
    • 토큰 값을 표준 입력(stdin)으로 넘겨 로그인하는 방식이다.
    • 비밀번호나 토큰을 명령행 인자로 직접 적지 않아도 돼서 CI나 터미널 기록 관리에 유리하다.
  • 목적: 로컬 이미지를 Docker Hub 같은 원격 레지스트리에 업로드
  • 명령어:
Terminal window
docker push ${DOCKER_HUB_USER}/${IMAGE_NAME}:${TAG}
  • 메모:
    • push 전에 docker login과 올바른 태그 설정이 끝났는지 먼저 확인한다.
  • 목적: compose 정의 기준으로 여러 컨테이너를 함께 실행
Terminal window
docker compose up -d
  • 메모:
    • profile이 없는 서비스만 실행한다.
Terminal window
docker compose --profile ${PROFILE_NAME} up -d
  • 메모:
    • --profiledocker-compose.yml 같은 compose 파일에 정의된 특정 profile 그룹의 서비스를 추가로 실행할 때 사용한다.
    • ${PROFILE_NAME}에는 compose 파일에 정의한 profile 이름을 넣어야 한다.
    • 기본 서비스와 해당 profile에 묶인 서비스가 같이 실행된다.
환경별 compose 파일을 합쳐서 build:
섹션 제목: “환경별 compose 파일을 합쳐서 build:”
Terminal window
docker compose -f docker-compose.yml -f docker-compose.local.yml build
  • 메모:
    • -f를 여러 번 쓰면 기본 compose 파일 위에 환경별 compose 파일을 덮어써서 실행할 수 있다.
    • 예를 들어 docker-compose.local.yml에는 로컬 전용 포트, 볼륨, 환경변수 같은 설정을 따로 둘 수 있다.
    • 합쳐진 설정 기준으로 이미지를 다시 만든다.
환경별 compose 파일을 합쳐서 실행:
섹션 제목: “환경별 compose 파일을 합쳐서 실행:”
Terminal window
docker compose -f docker-compose.yml -f docker-compose.local.yml up -d
  • 메모:
    • 합쳐진 설정 기준으로 컨테이너를 백그라운드 실행한다.
환경별 compose 파일 기준으로 중지:
섹션 제목: “환경별 compose 파일 기준으로 중지:”
Terminal window
docker compose -f docker-compose.yml -f docker-compose.local.yml stop
  • 메모:
    • 실행 중인 컨테이너를 중지만 하고 삭제하지는 않는다.
환경별 compose 파일 기준으로 종료 및 정리:
섹션 제목: “환경별 compose 파일 기준으로 종료 및 정리:”
Terminal window
docker compose -f docker-compose.yml -f docker-compose.local.yml down
  • 메모:
    • compose로 생성한 컨테이너와 네트워크를 함께 내린다.
    • volume까지 같이 지우려면 docker compose ... down -v를 사용한다.
  • 목적: 컨테이너 상세 정보와 리소스 사용량 확인
  • 명령어:
Terminal window
docker inspect ${CONTAINER_ID}
docker stats
  • 메모:
    • inspect는 설정, 네트워크, 마운트, 상태를 상세히 볼 때 유용하다.
    • stats는 CPU, 메모리, 네트워크 사용량을 실시간으로 확인할 수 있다.
Terminal window
docker build -f Dockerfile -t sample/app:0.0.1 .
docker run -p 8080:80 sample/app:0.0.1
Terminal window
docker ps -a
docker image ls
docker system prune -a
Terminal window
docker login -u ${USER_ID}
docker push ${DOCKER_HUB_USER}/${IMAGE_NAME}:${TAG}
Terminal window
docker compose up -d
docker compose --profile ${PROFILE_NAME} up -d

5) 환경별 compose 파일을 합쳐서 실행

섹션 제목: “5) 환경별 compose 파일을 합쳐서 실행”
Terminal window
docker compose -f docker-compose.yml -f docker-compose.local.yml build
docker compose -f docker-compose.yml -f docker-compose.local.yml up -d

1) 정리 명령은 영향 범위를 확인

섹션 제목: “1) 정리 명령은 영향 범위를 확인”
  • docker system prune -a
  • docker rm $(docker ps -q -a)
  • docker rmi $(docker images -q)

같은 명령은 범위가 크므로 실행 전에 대상을 먼저 확인한다.