Infra/Docker

도커 이미지 다루기

뽀루피 2024. 12. 7. 02:34

도커 명령은 크게 이미지에 대한 명령과 컨테이너에 대한 명령 두가지로 나뉜다.

 

도커 이미지 다루기

도커 이미지는 빌드할 때마다 다시 생성되는데, 내용의 해시값을 이미지 ID로 삼기 때문에 내용이 바뀌면 이미지 ID도 새 값이 부여된다.

 

도움말

  • 옵션에 대한 도움말
  • docker help
  • 이미지 하위 옵션에 대한 도움말
  • docker image --help

 

docker image build - 이미지 빌드

docker image build는 Dockerfile에 기술된 구성을 따라 도커 이미지를 생성하는 명령이다.

docker image build -t 이미지명[:태그명] Dockerfile의_경로

-t 옵션은 이미지명과 태그명을 붙이는 것으로 필수적으로 사용된다.

 

예를 들어 Dockerfile이 현재 작업 디렉터리에 있다면 다음과 같이 실행한다.

docker image build -t example/echo:latest .   // example/echo 라는 이미지의 :latest 태그

 

-f 옵션

docker image build 명령은 Dockerfile이라는 이름으로 된 Dockerfile을 찾는다.
그 외 파일명으로 된 Dockerfile을 사용하려면 -f 옵션을 사용해야 한다.

docker image build -f Dockerfile-test -t example/echo:latest .

 

--pull 옵션

docker image build 명령으로 이미지를 빌드하면 처음엔 FROM 인스트럭션에 지정한 이미지를 내려받아 새로운 이미지를 빌드한다.
그 다음부터는 해당 이미지를 삭제하지 않는 한 호스트 운영체제에 저장되어 매번 FROM 이미지를 받아오지 않는다.

--pull 옵션은 이 FROM 이미지를 매번 강제로 받아오도록 한다.

docker image build --pull=true -t example/echo:latest .

--pull 옵션은 레지스트리에서 최신 버전이 있는지를 매번 확인해야 하므로 빌드 속도 면에서 불리하다.
그래서 실무에서는 태그명을 latest로 지정하기보다 지정된 태그명을 사용한다.

 

docker search - 이미지 검색

docker search를 사용하면 도커 허브에 등록된 리포지토리를 검색할 수 있다.

docker search [옵션] 검색_키워드

--limit 옵션으로 최대 검색 건수를 제한할 수 있다.

docker search --limit 5 mysql

해당 명령으로 리포지토리는 검색할 수 있지만 태그는 알 수 없다.

 

docker image pull - 이미지 내려받기

도커 이미지를 내려받으려면 docker image pull 명령을 사용한다.

docker image pull [옵션] 리포지토리명[:태그명]

예를 들어 jenkins 이미지를 내려받으려면 다음과 같이 한다.

docker image pull jenkins:latest

태그명을 생략하면 기본값으로 지정된 태그(latest)가 적용된다.

 

docker image ls - 보유한 도커 이미지 목록 보기

docker image ls 명령은 현재 호스트 운영체제에 저장된 도커 이미지 목록을 보여준다.

docker image ls [옵션] [리포지토리[:태그]]
docker image ls

 

docker image tag - 이미지에 태그 붙이기

docker image tag는 도커 이미지의 특정 버전에 태그를 붙일 때 사용한다.

$ docker image ls
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
gihyodocker/echo   latest    4520b6a66d26   6 years ago   1.07GB
<none>   <none>    1852b6ardd26   6 years ago   1.07GB
<none>   <none>    7258cgj66d26   6 years ago   1.07GB

최신 이미지의 태그명은 example/image:latest이고 그 이전의 이미지는 <none>이라고 돼 있다.
도커에서 태그 하나에 연결될 수 있는 이미지는 하나이므로 최신 이미지를 나타내는 latest 태그는 가장 최신의 이미지에만 붙을 수 있는 것이다.
이미지 ID에 태그명을 붙이는 것은 이미지를 쉽게 참조할 수 있도록 붙인 별명이다.

docker image tag 기반이미지명[:태그] 새이미지명[:태그]

 

예를들어 example/echo의 latest 이미지에 0.1.0 태그를 부여하려면 다음과 하면 된다.

docker image tag example/echo:latest example/echo:0.1.0
$ docker image ls
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
example/echo   0.1.0    4520b6a66d26   1 minutes ago   1.07GB
example/echo   latest    4520b6a66d26   1 minutes ago   1.07GB

두 이미지 모두 4520b6a66d26 이미지 ID를 가리키고 있다.

 

docker image push - 이미지를 외부에 공개하기

docker image push 명령은 현재 저장된 도커 이미지를 도커 허브 등의 레지스트리에 등록하기 위해 사용한다.

docker image push [옵션] 리포지토리명[:태그]

도커 허브는 자신 혹은 소속 기관이 소유한 리포지토리에만 이미지를 등록할 수 있다.
따라서 docker image tag 명령을 통해 네임스페이스를 도커 허브 ID와 같이 변경한다.

$ docker image tag example/echo:latest poloopy/echo:latest
$ docker image ls
REPOSITORY         TAG       IMAGE ID       CREATED       SIZE
example/echo   0.1.0    4520b6a66d26   1 minutes ago   1.07GB
example/echo   latest    4520b6a66d26   1 minutes ago   1.07GB
poloopy/echo   latest    4520b6a66d26   1 minutes ago   1.07GB

그 다음 docker image push 명령에 등록할 이미지를 지정한다.

docker image push poloopy/echo:latest

이 리포지토리는 공개 리포지토리로 누구나 docker image pull 명령으로 이미지를 내려받을 수 있다.

 

 

** 이 글은 도커/쿠버네티스를 활용한 컨테이너 개발 실전 입문 책을 공부한 내용을 담고 있습니다.

'Infra > Docker' 카테고리의 다른 글

도커 컨테이너 다루기  (0) 2024.12.07
컨테이너로 애플리케이션 실행하기  (1) 2024.12.06