Infra & Devops/Docker

[Docker] 도커 이미지 조작 명령어 (search, pull, push, rm, prune ...)

겸둥이xz 2021. 9. 15. 21:26
반응형

  • Docker 이미지를 레지스트리에서 다운로드/업로드
  • Docker 컨테이너의 시작/정지
  • 모든 조작은 Docker 명령으로 수행한다

 

이미지 검색 (docker search)

docker search [옵션] <검색 키워드>
옵션 설명
--no-trunc 결과를 모두 표시
--limit n건의 검색 결과를 표시
--filter=stars=n star의 수(n 이상)를 지정

  • NAME : 이미지 이름
  • DESCRIPTION : 이미지 설명
  • STARS : 즐겨찾기 수
  • OFFICIAL : 공식 이미지인지?
  • AUTOMATED : Dockerfile을 바탕으로 자동 생성된 이미지인지?
Docker Hub에는 사용자가 작성한 임의의 이미지를 공개할 수 있다.
그래서 Docker 이미지의 이름을 고유하게 하기 위해 '사용자명/이미지명' 형식으로 이름을 붙인다.
사용자명을 갖지 않는 이미지도 존재한다. 이러한 것은 Docker의 공식 이미지를 나타낸다.

 

 

이미지 다운로드 (docker image pull) / 이미지 목록 보기 (docker image ls)

docker image pull [옵션] 이미지명[:태그명]
  • docker pull centos : centos 최신판(latest) 획득  (태그명을 생략하면 latest가 기본값, image 생략 가능)
  • docker image pull -a centos : CentOS의 모든 태그 획득
  • docker image pull gcr.io.tensorflow/tensorflow : Tensorflow의 URL을 지정하여 이미지 취득

  • docker image ls
    • --all, -a : 모든 이미지 표시
    • --digests : 다이제스트 표시 (이미지를 고유하게 식별하기 위한)
    • --no-trunc : 결과를 모두 표시
    • --quiet, -q : 이미지 ID만 표시

 

 

이미지 상세 정보 확인 (docker image inspect)

docker image inspect [이미지]

 

  • 결과는 JSON 형식으로 표시된다.
  • 이미지 ID, 작성일, Docker 버전, CPU 아키텍처, 환경 변수 등을 확인할 수 있다.

 

특정 값을 취득하고 싶을 때 (--format 옵션)

 

 

이미지 태그 설정 (docker image tag)

  • 태그에는 식별하기 쉬운 버전명을 붙이는 것이 일반적이다. 
  • Docker Hub에 작성한 이미지를 등록하려면 다음과 같은 규칙으로 이미지에 사용자명을 붙여야 한다.
docker tag <소스 이미지> <docker hub 사용자명>/이미지명:[태그명]

  • 태그를 붙인 이미지(abcde:fghi)와 소스 이미지(ubuntu)의 'IMAGE ID'가 똑같다.
  • 이 둘은 실체가 똑같다는 것을 의미한다.
  • 즉, 이미지에 별명을 붙일 뿐 이미지 자체를 복사하거나 이름을  바꾼 것이 아니다.
    • 리눅스 하드 링크와 비슷한 개념

 

Docker Hub에 이미지를 등록할 때 규칙

 

 

Docker Hub에 로그인 (docker login)

docker login [옵션] [서버]
  • Docker 리포지토리에 업로드를 하려면 Docker Hub 가입과 로그인이 필요하다.
  • --password, -p : 비밀번호
  • --username, -u : 사용자명

 

 

이미지 업로드 (docker image push)

 docker image push <Docker Hub 사용자>/이미지명[:태그명]

 

 

이미지 삭제 (docker rm)

docker image rm [옵션] 이미지명 [이미지명]
  • --force, -f : 이미지를 강제로 삭제
  • --no-prune : 중간 이미지를 삭제하지 않음
  • 이미지명은 REPOSITORY 또는 IMAGE ID를 지정한다.

  • Untagged : 하드 링크처럼 같은 링크의 이미지 파일이 있는데, 그 이름만 제거
  • Deleted : 하드링크 1인 이미지, 할당 해제

해당 이미지로 컨테이너가 만들어 졌으면 지울 수 없음, 강제로 삭제 or 컨테이너 종료 후 삭제

 

사용하지 않은 이미지 삭제 (docker image prune)

  • --all, -a : 사용하지 않은 이미지 모두 삭제
  • --force, -f : 강제 삭제

 

docker logout (Docker Hub 로그아웃 명령어)


<참고자료>

'완벽한 IT 인프라 구축을 위한 Docker 2판'

반응형