Docker鏡像的構成__docker commit
阿新 • • 發佈:2017-08-18
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