Reference
도커 이미지(Docker Image)는 도커 컨테이너를 만들기 위한 템플릿
우분투 같은 운영 체제로 구성된 파일 시스템은 물론, 컨테이너 위에서 실행하기 위한 애플리케이션이나 그 의존 라이브러리, 도구에 어떤 프로세스를 실행할지 등의 실행 환경의 설정 정보까지 포함하는 아카이브
Dockerfile은 이미지를 구성하는 순서를 기술한 코드이므로 Dockerfile 자체가 이미지라고 할 수 없음
컨테이너의 템플릿 역할을 하는 이미지를 만드는 과정을 도커 이미지를 빌드한다고 함
1) docker image build
Dockerfile에 기술된 구성을 따라 도커 이미지를 생성하는 명령어docker image build -t 이미지명[:태그명] Dockerfile_경로
Dockerfile이 현재 작업 디렉터리에 있다면 .을 입력함
$ docker image build -t example/echo:latest .
-f 옵션
[Dockerfile] 이외의 파일명으로 된 Dockerfile을 사용하려면 이 옵션 사용
$ docker image build -f Dockerfile-test -t example/echo:latest .
--pull 옵션
true로 설정하면 매번 베이스 이미지를 강제로 새로 받아옴이미지를 빌드할 때 확실하게 최신 베이스 이미지를 사용하고 싶을 때 사용
(도커는 Dockerfile에 변경된 부분만을 반영해 빌드하려 함)
$ docker image build --pull=true -t example/echo:latest .
2) docker search
docker search [options] 검색_키워드
$ docker search --limit 5 mysql
3) docker image pull
docker image pull [options] 리포지토리명[:태그명]
$ docker image pull jenkins:latest
4) docker image ls
docker image pull 명령으로 원격 도커 레지스트리에서 내려받은 이미지는 물론이고 docker image build 명령을 실행하여 내려받은 이미지도 호스트 운영 체제에 저장됨docker image ls [options] 리포지토리[:태그]
$ docker image ls
5) docker image tag
Dockerfile을 편집할 때뿐만 아니라 COPY 대상이 되는 파일의 내용이 바뀌어도 [IMAGE ID] 값이 바뀜태그 도커 이미지에 붙은 태그는 이미지의 특정 버전을 구별하기 위한 것이다. 즉, 태그는 특정한 이미지를 쉽게 참조할 수 있도록 붙인 별명이다. 도커
docker image tag [options] 기반이미지명[:태그] 새이미지명[:태그]
$ docker image tag example/echo:latest example/echo:0.1.0
6) docker image push
docker image pull 명령으로 이미지를 내려받을 수 있음
Dockerfile에는 패스워드나 API 키 값 같은 민감한 정보가 포함되지 않도록 주의해야 함docker image push [options] 리포지토리명[:태그]
$ docker image tag example/echo:latest stormcattest/echo:latest
$ docker image push stormcattest/echo:latest
도커 컨테이너는 이미지를 바탕으로 만들어짐
파일 시스템과 애플리케이션이 함께 담겨 있는 박스 (가상환경)
도커 컨테이너 생애주기
1) 실행 중 상태
docker container run 명령의 인자로 지정된 도커 이미지를 기반으로 컨테이너가 생성되면 이 이미지를 생성했던 Dockerfile에 포함된 CMD 및 ENTRYPOINT 인스트럭션에 정의된 애플리케이션이 실행
2) 정지 상태
3) 파기 상태