Images and layers

Layers of Docker

Layers的概念可參考下圖,官方文件可參考這裡

ubuntu 15.04 image

其中每一個Layer就代表Dockerfile中的一行指令

FROM shihta/php-5.6-apache
RUN apt-get install -y sudo cron mysql-client --no-install-recommends
ADD frontend/zguard.server/ /var/www/server/
RUN chown -R www-data:www-data /var/www/server
COPY dockerfiles/php/5.6/apache/apache2-foreground.overwrite /usr/local/bin/apache2-foreground

上面這一段為Dockerfile.mdap的內容,代表會基於shihta/php-5.6-apache 建立4個Layers,每一個Layer的內容就是該指令執行完後的結果

Architecture Concept

我們有以下需求:

分析這些Images的Layers,結果如下:

Layers of Docker Image

因此可以基於buildpack-deps:jessie建構一個屬於我們的base image,之後再基於該base image建構每個service

Implementation

TACOCloud
├── dockerfiles      # Modified Dockerfile
├── docker-library   # Source
├── ...

如上,在專案目錄下會有docker-library放置Dockerfile的source,以git submodule的方式儲存、紀錄版本

dockerfiles/
├── base
│   └── debian
│       ├── Dockerfile
│       ├── Dockerfile.pad
│       ├── ...
...

如上,以shihta/base-debian-jessie為例

可公開、獨立的image都放在Docker hub

comments powered by Disqus