我們先來看一下我的機子上有那些容器
[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
雖然commit可以爲我們定製鏡像,但還是要 慎用 原因如下
- commit後其實就是將nginx與base image打到一個包中了,那麼只有你自己知道你的鏡像發生了什麼,而對於別人來說完全是一個黑箱
- 之前提到的分層概念,我們nginx修改只修改了當前層,如果進行commit,別人使用你的這個鏡像的時候就會在nginx層在繼續添加自己的層,會使得鏡像越來越臃腫
- 我們也注意到啓動nginx服務並不是只更改了index頁面,而是對應的cache都會發生改變,如果在發生編譯安裝將會安裝更多依賴庫,commit後讓他們成爲了一體,這樣也會使得鏡像更加臃腫