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