Docker-commit

  • 之前理解了鏡像是分層構成後,並且我們修改了我們的nginx的index頁面,如果想把這個nginx鏡像保存下來供其他人使用,那麼我們就需要進行“保護現場”,這也是commit命令的作用
  • 我們先來看一下我的機子上有那些容器

    [qidai@qidai-pc ~]$ docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS               NAMES
    b5c597a4f124        nginx               "nginx -g 'daemon of…"   26 hours ago        Exited (0) 23 hours ago                       webnginx
    76110444b847        91dadee7afee        "docker-entrypoint.s…"   3 days ago          Exited (0) 2 days ago                         my-test-mysql
  • 我們更改後webnginx後現在進行保存

    [qidai@qidai-pc ~]$ docker commit --author "qidai" --message "change webnginx index.html" webnginx nginx:v1
    sha256:ca9ac899159eefe41cf30771cc2f4e23db967d6e2f3d0725226495296b69cb76
    • --author:指定作者
    • --message:備註信息
    • 再之後是指定保存的哪個鏡像,然後緊接着是保存後的名字和版本
  • 保存後我們在來看一下本地image

    [qidai@qidai-pc ~]$ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    nginx               v1                  ca9ac899159e        3 minutes ago       109MB
    nginx               latest              881bd08c0b08        4 days ago          109MB
    ubuntu              latest              47b19964fb50        4 weeks ago         88.1MB
    centos              latest              1e1148e4cc2c        3 months ago        202MB
  • 會多出來一個nginx:v1鏡像,我們把它run起來

    [qidai@qidai-pc ~]$ docker run --rm -d -p 80:80 nginx:v1
    1c494ae39be7666f1c3249054b5657b24bebe192009761d1063e424f601bb672
    [qidai@qidai-pc ~]$ docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
    1c494ae39be7        nginx:v1            "nginx -g 'daemon of…"   9 seconds ago       Up 7 seconds        0.0.0.0:80->80/tcp   recursing_zhukovsky
  • 這個時候再次訪問 localhost就會直接出現我們修改後的index頁面信息
  • 雖然commit可以爲我們定製鏡像,但還是要 慎用 原因如下

    • commit後其實就是將nginx與base image打到一個包中了,那麼只有你自己知道你的鏡像發生了什麼,而對於別人來說完全是一個黑箱
    • 之前提到的分層概念,我們nginx修改只修改了當前層,如果進行commit,別人使用你的這個鏡像的時候就會在nginx層在繼續添加自己的層,會使得鏡像越來越臃腫
    • 我們也注意到啓動nginx服務並不是只更改了index頁面,而是對應的cache都會發生改變,如果在發生編譯安裝將會安裝更多依賴庫,commit後讓他們成爲了一體,這樣也會使得鏡像更加臃腫
  • 發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章