Coffee Chat Brewing AI Knowledge

eng kor

Docker 명령어 정리

Image

이미지 검색

docker search [OPTIONS] IMAGE_NAME
  • --automated=false 자동 빌드만 표시
  • --no-trunc=false 모든 결과 표시
  • -s=n --stars=n star수가 n개 이상인 이미지만 표시
  • e.g.,
    docker search --stars=100 mysql
    

이미지 다운로드

docker pull [OPTIONS] IMAGE_NAME[:TAG_NAME]
  • -a 해당 이미지의 모든 버전 다운로드
  • TAG_NAME 다운로드할 버전 정보, 지정하지 않으면 최신 버전(latest) 다운로드
  • e.g.
    docker pull ubuntu:22.04
    

이미지 목록 확인

docker images [OPTIONS] [REPOSITORY]
  • -a --all 모든 이미지 표시
  • --digests digest 표시
  • -q --quiet 이미지 ID만 표시
  • *컨테이너 목록 확인: docker ps

이미지 세부 정보 확인

docker image inspect IMAGE_ID
  • Full ID를 입력하지 않고 일부만 입력해도 된다.

이미지 삭제

docker rmi [OPTION] IMAGE_NAME:TAG_NAME
  • -f 실행 중인 컨테이너의 이미지를 강제 삭제, 그러나 실질적으로 untagging만 되고 이미지와 컨테이너 모두 실제로 삭제되지 않는다.
  • 여러 이미지를 한 번에 삭제:
    docker rmi IMAGE_NAME_1 IMAGE_NAME_2 ...
    
  • 특정 이미지의 실행 중인 컨테이너를 모두 종료시킨 후 이미지 삭제:
    docker rm -f $(docker ps -a --filter ancestor=IMAGE_NAME)
    docker rmi IMAGE_NAME
    

이미지 저장 및 로드

docker save -o DIRECTORY IMAGE_NAME
  • -o (output) 이미지를 저장할 디렉토리를 지정
docker load -i DIRECTORY
  • -i 불러올(input) 이미지의 디렉토리를 지정, 해당 디렉토리 내 이미지가 로드된다.

이미지 태그 지정

docker tag IMAGE_NAME:TAG NEW_NAME:NEW_TAG
  • 존재하는 이미지를 복사하여 새로운 이름과 태그로 참조 가능하게 한다.
  • e.g.,
    docker tag ubuntu:22.04 abcd:0.1
    


Container

컨테이너 목록 확인

docker ps [OPTION]
  • 실행 중인 컨테이너 목록을 확인한다.
  • -a 실행 여부와 상관 없이 (종료된 것까지) 모든 컨테이너 확인

컨테이너 세부 정보 확인

docker inspect CONTAINER_NAME

이미지에서 컨테이너 실행

docker run [OPTIONS] IMAGE_NAME
  • --name CONTAINER_NAME 컨테이너 이름 설정
  • --rm run 명령어 수행 후 컨테이너 삭제. 컨테이너 일회성 사용
  • -it 컨테이너에 터미널 입력을 계속해서 전달
    • -i 컨테이너에 접속하지 않은 상태에서도 stdin 활성화
    • -t pseudo-TTY 할당(TTY모드 사용), 쉘에 명령어 작성
  • -d 백그라운드 실행. 옵션 입력 시 실행된 컨테이너 id가 출력된다.
  • -e 환경변수 추가. 추가하고 싶은 환경변수만큼 사용한다.
    • e.g.,
      docker run -e APP_ENV=production APP2_ENV=dev ubuntu:22.04 env
      
  • -p HOST_PORT:CONTAINER_PORT 호스트에 연결된 컨테이너의 특정 포트를 호스트의 포트와 바인딩. 보통 웹서버의 포트를 외부로 노출하기 위해 사용한다.
  • -w DIR 작업 디렉토리 변경
  • -v HOST_DIR:CONTAINER_DIR 호스트의 특정 디렉토리를 컨테이너에 마운트
    • e.g.,
      docker run -v volume:/data ubuntu:22.04
      
    • 현재 작업 디렉토리를 컨테이너에 마운트하기
      docker run -v `pwd`:/opt ubuntu:22.04
      
  • -u USER_ID 특정 user id로 컨테이너에 접속. 이미지 빌드 시 계정을 추가해야 가능하다.

실행 중인 컨테이너에 명령어 입력

docker exec CONTAINER_ID or NAME CMD
  • -it 컨테이너 환경에서 shell 실행,

runexec의 차이점

  • run: 이미지에서 컨테이너를 실행
  • exec: 이미 실행 중인 컨테이너에서 명령어 실행

컨테이너 중지

docker stop CONTAINER_ID/NAME
  • 실행 중인 컨테이너를 중지 (Graceful shutdown)
docker kill CONTAINER_ID/NAME
  • 실행 중인 컨테이너를 강제 종료

컨테이너 재시작

docker start CONTAINER_ID/NAME
  • 중지된 컨테이너를 다시 시작
docker restart CONTAINER_ID/NAME
  • 컨테이너를 중지시키고 다시 시작