Docker hub는 도커의 공식 리포지토리 서비스로 github이나 bitbucket 같은 소스코드 관리 툴과 연계하여 이미지를 빌드할 수 있으며 물리/가상/클라우드 등의 플랫폼에 상관없이 이미지를 배포할 수 있습니다. 이번 포스트에서는 도커 이미지에 관련한 다양한 도커 커맨드를 알아보도록 하겠습니다.
이미지 다운로드
Docker hub에서는 docker image pull 명령어를 사용하여 이미지를 다운받을 수 있습니다.
docker image pull [옵션] 이미지명[:태그명]
예를 들어 CentOS의 버전 7을 다운로드하려면 "docker image pull centos:7" 명령어를 사용하면 취득이 가능하고 태그명을 생략하면 최신판 (latest)를 취득합니다. 이때 "-a" 옵션을 지정하면 모든 태그를 취득할 수 있으나 "-a" 옵션을 지정할 때는 이미지명에 태그를 지정할 수 없습니다.
이미지 목록 표시
docker image ls 명령을 사용해서 도커 이미지 목록을 표현할 수 있습니다.
docker image ls [옵션] [리포지토리명]
지정할 수 있는 옵션으로는
- "-a", "-all": 모든 이미지를 표시
- "--no-trunc": 결과를 모두 표시
- "--digests": 다이제스트 표시
- "--quite", "-q": 도커 이미지 ID만 표시
등이 있습니다. 도커 이미지를 작성하면 랜덤하게 생성된 고유한 이미지 ID가 부여되며, 도커 레지스트리에 업로드한 이미지는 고유하게 식별하기 위한 다이제스트가 부여됩니다. 다음과 같이 "docker image ls"로부터 이미지 이름 (REPOSTIROY), 이미지 태그명 (TAG), 이미지 ID (IMAGE ID), 작성일 (CREATED), 사이즈 (SIZE)를 알 수 있습니다.
이미지의 위장, 변조
Docker는 인프라 구성이 포함되기 때문에 악의를 가진 위장이나 변조를 못하도록 이미지를 보호해야 합니다. 이때 Docker Content Trust (DCT) 기능을 사용하면 이미지의 정당성을 확인할 수 있습니다.
이미지 작성자가 도커 레지스트리에 이미지를 업로드하기 전에 로컬 환경에서 이미지 작성자의 비밀키를 사용하여 이미지에 서명합니다. 서명이 된 이미지를 다운로드할 때 이미지 작성자의 키를 사용하여 이미지가 진짜인지 아닌지를 확인합니다. DCT 기능을 사용하려면 CLI 상에서 다음과 같이 설정합니다.
export DOCKER_CONTETN_TRUST=1
이미지 상세 정보 확인
이미지 상세 정보는 docker image inspect 로 할 수 있습니다.
docker image inspect 이미지명
결과는 JSON 형식으로 표현되며, 이미지 ID, 작성일, 도커 버젼, CPU 아키텍쳐를 알 수 있습니다.
이미지 태그 설정
이미지에 표식/별명이 되는 태그를 붙이려면 docker image tag 명령을 사용합니다.
docker image tag 기존이미지명 새로운이미지명:태그명
이미지 태그는 이미지에 새로운 이름과 태그를 설정하는 것이기 때문에 이미지 ID가 변하지 않습니다. 즉, 같은 이미지를 서로 다른 이름으로 (별명과 같이) 접근할 수 있다는 것입니다.
이미지 검색
Docker hub에 공개되어 있는 이미지를 검색할 때는 docker search 명령을 사용합니다.
docker search [옵션] 검색 키워드
지정할 수 있는 주요 옵션으로는
- "--no-trunc": 결과를 모두 표시
- "--limit": n건의 검색 결과를 표시
- "--filter=stars=n": 즐겨찾기의 수 지정
등이 있습니다. 검색 결과로는 이미지 이름 (NAME), 이미지 설명 (DESCRIPTION), 즐겨찾기 수 (STARS), 공식 이미지 (OFFICIAL), dockerfile을 바탕으로 자동 생성된 이미지인지 아닌지 (AUTOMATED) 가 표시됩니다.
이미지 삭제
이미지 삭제는 docker image rm 명령을 사용합니다.
docker image rm [옵션] 이미지명
지정할 수 있는 옵션으로는
- "--force", "-f": 이미지를 강제로 삭제
- "--no-prune": 중간 이미지를 삭제하지 않음
등이 있으며, 이미지명은 REPOSITORY 또는 IMAGE ID를 지정합니다. 또한 여러 개의 이미지를 삭제하고 싶을 때는 여러 이미지명을 스페이스로 구분하여 지정하면 동시에 삭제할 수 있습니다. 또한 사용하지 않는 이미지 (컨테이너가 없는)는 "docker image prune" 명령으로 삭제할 수 있습니다.
Docker hub 로그인/로그아웃
Docker 리포지토리에 업로드하기 위해서는 docker login 명령을 사용하여 로그인합니다.
docker login [옵션]
지정할 수 있는 옵션으로는
- "--password, -p": 비밀번호
- "--username, -u": 사용자명
으로 옵션을 지정하지 않으면 사용자명과 비밀번호를 물어보게 됩니다.
로그아웃을 위해서는 docker logout 명령어가 사용됩니다.
'Computer > Docker' 카테고리의 다른 글
Docker container 실행 - docker run (2) (0) | 2021.04.14 |
---|---|
Docker container 실행 - docker run (1) (2) | 2021.04.13 |
Docker의 작동 구조 (0) | 2021.03.27 |
Docker의 기능 (0) | 2021.03.27 |
컨테이너 - Docker (0) | 2021.03.26 |