도커 명령은 크게 이미지에 대한 명령과 컨테이너에 대한 명령 두가지로 나뉜다.
도커 이미지 다루기
도커 이미지는 빌드할 때마다 다시 생성되는데, 내용의 해시값을 이미지 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 |