1. 程式人生 > >Docker images

Docker images

一個 tro agg 供應商 存在 months 分類 -a 引導

  • Docker 碼頭工人

    Docker中鏡像可理解為:應用程序的集裝箱

  • Docker Images

  • Docker鏡像含有啟動容器所需要的文件系統及其內容,因此,其用於創建並啟動docker容器

    采用分層構建機制,最底層為bootfs,其之為rootfs

    bootfs:用於系統引導的文件系統,包括bootloader和kernel,容器啟動完成後會被卸載以節約內存資源


    註意:當刪除容器時,這個容器自有的“可寫”層會一起被刪除


    Aufs

    Advanced multi-layered unification filessystem:高級多層統一文件系統

    技術分享圖片

    • Docker Registry

    啟動容器時,docker daemon會試圖從本地獲取相關的鏡像;本地鏡像不存在時,其將從Registry中下載該鏡像並保存到本地;

    註意:Registry如果沒有指定,只給了倉庫名和tag,則默認使用的是Docker hub;如果指向別的Registry需要修改配置給明服務器地址

    除了Docker Hub還有其他鏡像倉庫,如:https://quay.io/

    技術分享圖片

    Docker Registry分類

    Sponsor Registry:第三方的registry,供客戶和Docker社區使用

    Mirror Registry:第三方的registry,只讓客戶使用

    Vendor Registry:由發布Dcoker鏡像的供應商提供的registry

    Private Registry:通過設有防火墻和額外的安全層的私有實體提供的registry

    Docker Hub

    功能:

    鏡像倉庫

    自動構建;web構子

    組織

    GitHub和Bitbucket

    • 制作鏡像

    Dockerfile

    基於容器制作

    Docker Hub automated builds

    技術分享圖片

    基於容器制作容器

    簡單示例1:讓Busybox容器啟動時就有index.html網頁文件;

    使用docker commit命令

    [root@centos17 ~]#docker run --name b1 -it busybox
    WARNING: IPv4 forwarding is disabled. Networking will not work.
    / # 
    / # mkdir -p /data/html
    / # echo "Busybox httpd server." > /data/html/index.html

    註意:制作容器時讓容器處理運行狀態所以在另外一個終端執行:

    [root@centos17 ~]#docker commit -p b1 
    sha256:db1dfc89367ed1899e85665d6c069e778d66a2cd590d969e761bed77b67cfa23
    [root@centos17 ~]#docker image ls
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    <none>              <none>              db1dfc89367e        7 seconds ago       1.16MB    制作好的容器
    nginx               alpine              36f3464a2197        10 days ago         18.6MB
    busybox             latest              22c2dd5ee85d        2 weeks ago         1.16MB
    redis               4.0-alpine          80581db8c700        3 weeks ago         28.6MB
    centos              latest              49f7960eb7e4        2 months ago        200MB

    可使用docker tag命令來給鏡像打標簽;一個鏡像可打多個標簽

    [[root@centos17 ~]#docker tag db1dfc89367e liuyutang/httpd:v0.1-1
    [root@centos17 ~]#docker image ls
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    liuyutang/httpd     v0.1-1              db1dfc89367e        3 minutes ago       1.16MB
    nginx               alpine              36f3464a2197        10 days ago         18.6MB
    busybox             latest              22c2dd5ee85d        2 weeks ago         1.16MB
    redis               4.0-alpine          80581db8c700        3 weeks ago         28.6MB
    centos              latest              49f7960eb7e4        2 months ago        200MB
    [root@centos17 ~]#docker tag liuyutang/httpd:v0.1-1 liuyutang/httpd:latest
    [root@centos17 ~]#docker image ls
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    liuyutang/httpd     latest              db1dfc89367e        5 minutes ago       1.16MB
    liuyutang/httpd     v0.1-1              db1dfc89367e        5 minutes ago       1.16MB
    nginx               alpine              36f3464a2197        10 days ago         18.6MB
    busybox             latest              22c2dd5ee85d        2 weeks ago         1.16MB
    redis               4.0-alpine          80581db8c700        3 weeks ago         28.6MB
    centos              latest              49f7960eb7e4        2 months ago        200MB

    刪除標簽

    [root@centos17 ~]#docker image rm liuyutang/httpd:latest
    Untagged: liuyutang/httpd:latest

    啟動制作好的容器;可以看到我們剛才寫的頁面文件存在;容器制作成功

    [root@centos17 ~]#docker run --name t1 -it liuyutang/httpd:v0.1-1
    WARNING: IPv4 forwarding is disabled. Networking will not work.
    / # ls /data/
    html
    / # ls /data/html/
    index.html
    / # cat /data/html/index.html 
    Busybox httpd server.
    / #

    示例2:使用Busybox做為基礎鏡像,實現容器啟動時默認運行httpd,並且在制作鏡像時一起打標簽;


    [root@centos17 ~]#docker commit -a "liuyutang <[email protected]>" -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p b1 liuyutang/httpd:v0.2
    sha256:f394f28026ff01f0bbdceb665b8e18a26c9a43a9c12cc57e4f895808f52e5f36
    [root@centos17 ~]#docker image ls
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    liuyutang/httpd     v0.2                f394f28026ff        4 seconds ago       1.16MB
    liuyutang/httpd     latest              db1dfc89367e        21 minutes ago      1.16MB
    liuyutang/httpd     v0.1-1              db1dfc89367e        21 minutes ago      1.16MB
    nginx               alpine              36f3464a2197        10 days ago         18.6MB
    busybox             latest              22c2dd5ee85d        2 weeks ago         1.16MB
    redis               4.0-alpine          80581db8c700        3 weeks ago         28.6MB
    centos              latest              49f7960eb7e4        2 months ago        200MB


    Docker images