[docker 버전 : 1.12]
docker 를 빌드할 때, Dockerfile로 생성하는 단계가 있다.
docker build -t google-sandbox -f Dockerfile .
docker history 커맨드를 보면, image 안에 여러 image id가 존재하는 것을 볼 수 있다. 즉 RUN 지시자로 정의된 항목마다 하나의 image id가 존재하는 것을 볼 수 있다.
$ docker history 9ee4b3d0f0b5
IMAGE CREATED CREATED BY SIZE COMMENT
9ee4b3d0f0b5 3 minutes ago /bin/sh -c #(nop) ENTRYPOINT ["/docker-entry 0 B
17e114f16e50 3 minutes ago /bin/sh -c #(nop) VOLUME [/data /log] 0 B
18e87f892df1 3 minutes ago /bin/sh -c #(nop) ENV TERM=xterm 0 B
df973dbe65e4 3 minutes ago /bin/sh -c #(nop) COPY file:0939c051875b38702 30 B
ba77ab6a5bd4 8 minutes ago /bin/sh -c cd /tmp && rm -rf * 0 B
...
또한 docker push 할 때, image id 단위로 push되는 것을 볼 수 있다.
docker 이미지의 내부 구조를 살펴보면, read-only이면서 순차적인 layer로 구성되어 있다.
특히 docker 1.10부터는 암호화된 hash, 충돌이 나지 않는 hash key로 image id를 구성한다고 한다.
이런 구조의 장점은 기존 이미지의 재활용을 잘 한다는 점이다.
도커를 테스트해보니. 딱 필요한(수정한) 부분만 image id가 생성된다. 따라서 디스크 용량 이슈가 확실히 적어진다.
그래서 컨테이너도 효율적으로 관리할 수 있다.
또한, 컨테이너를 실행할 때는 분리된 프로세스로 실행되기 때문에 문제 없이 잘 실행된다.
참고
* docker의 내부구조에 대한 설명 :
https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/
'docker' 카테고리의 다른 글
[docker] 도커 이미지 생성 관련 팁 - Dockerfile 사용 팁 (0) | 2016.08.03 |
---|---|
docker 1.12부터 mac/windows 지원 (0) | 2016.07.30 |
[docker] 스크랩-도커 컨테이너에서 피해야 할 10가지 (0) | 2016.07.30 |
[docker] mac 디렉토리를 docker container (linux) 디렉토리로 복사할 때 유의점 (0) | 2016.07.29 |
docker container 실행에 중요한 /data/start.sh (0) | 2016.07.29 |