1. 程式人生 > >Docker鏡像的構成__docker commit

Docker鏡像的構成__docker commit

strong 容器 運行 str ech 作者 覆蓋 shel spa

鏡像是容器的基礎,每次執行docker run的時候都會制定哪個鏡像作為容器運行的基礎。在之前的例子中,我們所使用的都來自於Docker Hub的鏡像。直接使用這些鏡像是可以滿足一定的需求,而當這些鏡像無法直接滿足需求的時候,我們就需要定制這些鏡像。

鏡像是多層存儲,每一層是在前一層的基礎上進行的修改;而容器同樣也是多層存儲,是在以鏡像為基礎層,在其基礎層上加一層作為容器運行時的存儲層。


我們定制一個Web服務器為例。

docker run --name webserver -d -p 80:80 nginx

以上命令會用nginx鏡像啟動一個容器,命名為webserver,並且映射了80端口,這樣我們可以用瀏覽器去訪問這個nginx服務器。
然後訪問地址。

試著修改一下nginx的歡迎界面。

技術分享

docker exec -it webserver bash
echo <h1>My Docker</h1> > /usr/share/nginx/html/index.html

我們以交互式終端方式進入webserver 容器,並執行bash命令,也就是獲的一個可操作的shell,然後覆蓋了nginx下的index.html內容,刷新瀏覽器。

我們修改了容器的文件,也就是改動了容器的存儲層。我們可以通過docker diff ID | name 查看改動內容。

容器內容改變了,如果我們希望保存成新的鏡像,那麽我們可以使用docker commit命令,語法為:

docker commit --author "update by wt" --message "修改了nginx的主頁" webserver nginx:v2

其中, --author 是指定修改的作者,而 --message是備註,可以留空。
docker images 查看新的鏡像
新的鏡像定制好之後,我們可以運行這個鏡像

docker run --name newwebserver -d -p 81:80 nginx:v1

技術分享

這裏我們命令為新的服務newwebserver ,並且映射到81端口。訪問在瀏覽器加端口即可http://192.168.52.133:81,然後獲的shell修改nginx歡迎界面即可。

技術分享

慎重docker commit,關於為什麽慎用,去網上搜索一下。

Docker鏡像的構成__docker commit