[Docker] 2.도커 컨테이너 배포 - 도커 이미지 다루기
책 ‘도커/쿠버네티스를 활용한 컨테이너 개발 실전 입문’을 기반으로 공부 한 내용을 정리
- 도커 사용법
- 이미지를 대상으로
- 컨테이너를 대상으로
- 도커 이미지란?
- 도커 컨테이너를 만들기 위한 템플릿
- 운영체제로 구성된 파일 시스템 + 애플리케이션 + 의존 라이브러리 + 실행 환경의 설정 정보 => 아카이브!
- Dockerfile은 이미지를 구성하는 순서를 기술한 코드라서 Dockerfile 자체가 이미지라고 할 수 없음
- “도커 이미지를 빌드한다” == 컨테이너의 템플릿 역할을 이미지를 만드는 과정
- docker image buile - 이미지 빌드
- Dockerfile에 기술된 구성을 따라 도커 이미지를 생성하는 명령어
$docker image build -t 이미지명[:태그명] Dockerfile의_경로
==> -t 옵션 : 이미지명과 태그명을 붙이는 것
==> -f 옵션 : 파일명으로 된 Dockerfile을 사용할 때 사용
$docker image build -f Dockerfile-test -t example/echo:latest .
==> –pull 옵션 : 매번 베이스 이미지를 강제로 새로 받아온다
레지스트리에서 받아온 도커 이미지는 일부러 삭제하지 않는 한 호스트 운영 체제에 저장되기 때문에 이미지를 빌드시 확실히 최신 베이스 이미지를 사용하고 싶다면 “–pull=true” 옵션을 사용하기
도커 허브 등 레지스터리에서 최신 버전이 있는지를 확인하고 빌드해서 속도 면에서는 떨어지기 때문에, 실무에서는 latest로 지정하는 것을 피하고 태그로 지정한 베이스 이미지를 사용
$docker image build --pull=true -t example/echo:latest .
- docker search - 이미지 검색
- 도커 허브 : 도커 이미지 레지스터리
$ docker search [options] 검색_키워드
- 첫번째 repository는 공식 repository라서 네임스페이스가 생략되어있음 –> 일률적으로 library
- 도커 허브 : 도커 이미지 레지스터리
docker image pull - 이미지 내려받기
$docker image pull [options] 레포지토리명[:태그명]
- 인자로 지정한 레포지토리명과 태그명은 도커 허브에 이미 존재하는 것이어야 함
- 이 명령어로 내려받은 이미지는 그대로 도커 컨테이너를 생성하는 데 사용할 수 있음.- docker image ls - 보유한 도커 이미지 목록 보기
- 현재 호스트 운영 체제(도커 데몬이 동작하는 호스트 환경)에 저장된 도커 이미지의 목록을 보여준다.
$ docker image ls [options] [리포지토리[:태그]]
- IMAGE ID는 이미지에 대한 식별자(버전 넘버 역할)–> CONTAINER ID(컨테이너를 구분하는 것)와는 별개의 것이므로 혼동하지 말기
- docker image tag - 이미지에 태그 붙이기
- 도커 이미지의 특정 버전에 태그를 붙일 때 사용
◊ 도커 이미지의 버전- 애플리케이션을 수정하고 이미지를 빌드하면 매번 다른 이미지가 됨
즉, 수정 후에는 다른 IMAGE ID 값이 할당되는 것
COPY 대상이 되는 파일의 내용이 바뀌어도 IMAGE ID 값이 바뀜
<none>은 이전에 있던 도커 이미지의 잔재
- ◊ 이미지 ID에 태그 부여하기
$docker image tag 기반이미지명[:태그] 새이미지명[:태그]
- ex)
$docker image tag example/echo:latest example/echo:0.1.0
- 이미지 ID에 태그를 부여하면 두개의 태그 이미지가 생성되지만 둘 다 같은 이미지를 가리킴
- 애플리케이션을 수정하고 이미지를 빌드하면 매번 다른 이미지가 됨
- docker image push - 이미지를 외부에 공개하기
- 현재 저장된 도커 이미지를 도커 허브 등의 레지스터리에 등록하기 위해 사용
$docker image push [options] 리포지토리명[:태그]