歡迎訪問廈門信息集團大數據運營有限公司網站(zhàn)!
0551-65909059   公司OA
聯系電話(huà):
當前位置:首頁>>新聞中心>>行業動态 >>容器化之Docker小(xiǎo)知(zhī)識普及
今天是: 2024年07月29日   【農(nóng)曆:六月廿四】  星期一
容器化之Docker小(xiǎo)知(zhī)識普及

  本文(wén)轉載自(zì)公衆号《一個碼農(nóng)的日常》。

  Docker确實是個好(hǎo)東西,相當于一個小(xiǎo)型虛拟機,裏面環境隔離隻要有對(duì)應的鏡像就能(néng)運行業務應用(yòng)、運行基礎應用(yòng)、能(néng)跑數據庫等等,還能(néng)跑linux等等。

微信圖片_20191118153309.jpg

  Docker 從(cóng)狹義上(shàng)來(lái)講就是一個進程,從(cóng)廣義上(shàng)來(lái)講是一個虛拟容器,其實更專業的叫法是應用(yòng)容器( Application Container ),Docker 進程和(hé)普通的進程沒有任何區(qū)别,它就是一個普通的應用(yòng)進程。不過是用(yòng)來(lái)操作(zuò)鏡像文(wén)件的。所以 Docker 進程 + 構建的應用(yòng)鏡像文(wén)件就等于 Docker 容器。

微信圖片_20191118153346.jpg

Docker基本概念有三項:鏡像,容器,倉庫

  鏡像相當于java中的jar包;鏡像倉庫相當于jar存儲的倉庫,隻不過這(zhè)裏存儲的是鏡像;容器就是一個鏡像運行的實例,相當于java運行起來(lái)的一個進程。

  鏡像有基礎鏡像,如centos、mysql、redis鏡像,這(zhè)些(xiē)自(zì)己不用(yòng)做 官網有人已經做好(hǎo)了(le)這(zhè)些(xiē)鏡像 可以直接拉下(xià)來(lái)用(yòng),如果要做自(zì)己的特殊需要的鏡像,可以直接在這(zhè)些(xiē)基礎鏡像上(shàng)構建。

容器

  你(nǐ)可以從(cóng)鏡像中創建容器,這(zhè)如同運行一個程序,不過更輕量,啓動更快(kuài),秒啓。

  每個容器都是獨立的封閉的,需要對(duì)外(wài)提供服務就需要公開(kāi)容器的特定端口,在啓動 Docker 的時(shí)候将容器的特定端口映射到(dào)宿主機上(shàng)面的任意一個端口,可以将容器的端口映射成任意的對(duì)外(wài)端口,可解決多個應用(yòng)端口相同産生的沖突,所以就不需要通過代理(lǐ)來(lái)解決沖突。容器對(duì)外(wài)端口與宿主機的端口映射可以通過下(xià)面的命令來(lái)完成。
啓動 docker 容器

docker run -d -p 2222:22 --name 容器名 鏡像名
-d 守護容器,就是後台運行,退出命令窗口容器也(yě)不會(huì)停止
-it 交互式容器 退出命令窗口容器就停止運行了(le)
-p 宿主機端口和(hé)容器端口映射
8081:80 宿主機端口: 容器公開(kāi)的端口

微信圖片_20191118153434.jpg

倉庫Docker registeries

  docker倉庫用(yòng)來(lái)存放(fàng)鏡像的,倉庫存在公有和(hé)私有之分,公有倉庫 docker hub 提供了(le)非常多的鏡像文(wén)件,這(zhè)些(xiē)鏡像直接拉取下(xià)來(lái)就可以運行了(le),你(nǐ)也(yě)可以上(shàng)傳自(zì)己的鏡像到(dào) docker hub 上(shàng)面。同時(shí)也(yě)可以自(zì)己搭建私有倉庫用(yòng)于團隊項目管理(lǐ)如可以用(yòng)Nexus,怎麽搭建下(xià)幾篇再說,在k8s中也(yě)在專門(mén)的倉庫組件。


微信圖片_20191118153504.jpg

Docker 的生命周期

微信圖片_20191118153522.jpg

  • 開(kāi)發構建鏡像并将鏡像 push 到(dào) Docker 倉庫 

  • 測試或者運維從(cóng) Docker 倉庫拉取鏡像到(dào)測試服務器部署

  • 通過鏡像文(wén)件開(kāi)啓 Docker 容器并提供服務

   總之構建容易分發簡單 · 隔離應用(yòng)解除依賴 · 快(kuài)速部署測完就銷

Docker和(hé)傳統虛拟機有啥區(qū)别

Docker這(zhè)個虛拟機超級輕量級,僅僅是一個進程而已。與傳統的虛拟機比如 VM 有着巨大(dà)的差别:

微信圖片_20191118153554.jpg

Docker相對(duì)于 VM 有以下(xià)幾個優點:

  啓動速度快(kuài),容器啓動本質就是一個開(kāi)啓一個進程而已,因此都是秒啓,而 VM 通常要更久。

資源利用(yòng)率高(gāo),一台普通 PC 可以跑成百上(shàng)千個容器,你(nǐ)跑十個 VM 試試。

性能(néng)開(kāi)銷小(xiǎo), VM 通常需要額外(wài)的 CPU 和(hé)内存來(lái)完成 OS 的功能(néng),這(zhè)一部分占據了(le)額外(wài)的資源。


  所以很(hěn)多移動互聯網的應用(yòng)或者雲計(jì)算(suàn)的後端節點都可以用(yòng) docker 來(lái)替換物理(lǐ)機器或者虛拟機,比如騰訊地圖的很(hěn)多後台服務基本上(shàng)都遷移 docker 部署了(le)。

docker是應用(yòng)的基石

微信圖片_20191118153637.jpg

最後強調爲什(shén)麽要用(yòng)Docker

  Docker 的鏡像提供了(le)除内核外(wài)完整的運行時(shí)環境,确保了(le)應用(yòng)運行環境一緻性,從(cóng)而不會(huì)再出現(xiàn) “這(zhè)段代碼在我機器上(shàng)沒問題啊” 這(zhè)類問題;——一緻的運行環境
可以做到(dào)秒級、甚至毫秒級的啓動時(shí)間。大(dà)大(dà)的節約了(le)開(kāi)發、測試、部署的時(shí)間。——更快(kuài)速的啓動時(shí)間
避免公用(yòng)的服務器,資源會(huì)容易受到(dào)其他(tā)用(yòng)戶的影響。——隔離性
善于處理(lǐ)集中爆發的服務器使用(yòng)壓力;——彈性伸縮,快(kuài)速擴展
可以很(hěn)輕易的将在一個平台上(shàng)運行的應用(yòng),遷移到(dào)另一個平台上(shàng),而不用(yòng)擔心運行環境的變化導緻應用(yòng)無法正常運行的情況。——遷移方便
使用(yòng) Docker 可以通過定制應用(yòng)鏡像來(lái)實現(xiàn)持續集成、持續交付、部署。——持續交付和(hé)部署