容器化之Docker小知識普及 倉庫Docker registeries Docker 的生命週期 Docker和傳統虛擬機有啥區別 docker是應用的基石 最後強調爲什麼要用Docker

  Docker確實是個好東西,相當於一個小型虛擬機,裏面環境隔離只要有對應的鏡像就能運行業務應用、運行基礎應用、能跑數據庫等等,還能跑linux等等。

Docker 從狹義上來講就是一個進程,從廣義上來講是一個虛擬容器,其實更專業的叫法是應用容器( Application Container ),Docker 進程和普通的進程沒有任何區別,它就是一個普通的應用進程。不過是用來操作鏡像文件的。所以 Docker 進程 + 構建的應用鏡像文件就等於 Docker 容器。

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

  鏡像相當於java中的jar包;鏡像倉庫相當於jar存儲的倉庫,只不過這裏存儲的是鏡像;容器就是一個鏡像運行的實例,相當於java運行起來的一個進程。

  鏡像有基礎鏡像,如centos、mysql、redis鏡像,這些自己不用做 官網有人已經做好了這些鏡像 可以直接拉下來用,如果要做自己的特殊需要的鏡像,可以直接在這些基礎鏡像上構建。

容器

  你可以從鏡像中創建容器,這如同運行一個程序,不過更輕量,啓動更快,秒啓。

每個容器都是獨立的封閉的,需要對外提供服務就需要公開容器的特定端口,在啓動 Docker 的時候將容器的特定端口映射到宿主機上面的任意一個端口,可以將容器的端口映射成任意的對外端口,可解決多個應用端口相同產生的衝突,所以就不需要通過代理來解決衝突。容器對外端口與宿主機的端口映射可以通過下面的命令來完成。

啓動 docker 容器

docker run -d -p 2222:22 --name 容器名 鏡像名

-d 守護容器,就是後臺運行,退出命令窗口容器也不會停止

-it 交互式容器 退出命令窗口容器就停止運行了

-p 宿主機端口和容器端口映射

8081:80 宿主機端口: 容器公開的端口

倉庫Docker registeries

  docker倉庫用來存放鏡像的,倉庫存在公有和私有之分,公有倉庫 docker hub 提供了非常多的鏡像文件,這些鏡像直接拉取下來就可以運行了,你也可以上傳自己的鏡像到 docker hub 上面。同時也可以自己搭建私有倉庫用於團隊項目管理如可以用Nexus,怎麼搭建下幾篇再說,在k8s中也在專門的倉庫組件。

Docker 的生命週期

開發構建鏡像並將鏡像 push 到 Docker 倉庫 

測試或者運維從 Docker 倉庫拉取鏡像到測試服務器部署

通過鏡像文件開啓 Docker 容器並提供服務

   總之構建容易分發簡單 · 隔離應用解除依賴 · 快速部署測完就銷

Docker和傳統虛擬機有啥區別

Docker這個虛擬機超級輕量級,僅僅是一個進程而已。與傳統的虛擬機比如 VM 有着巨大的差別:

  Docker相對於 VM 有以下幾個優點:

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

資源利用率高,一臺普通 PC 可以跑成百上千個容器,你跑十個 VM 試試。

性能開銷小, VM 通常需要額外的 CPU 和內存來完成 OS 的功能,這一部分佔據了額外的資源。

  所以很多移動互聯網的應用或者雲計算的後端節點都可以用 docker 來替換物理機器或者虛擬機,比如騰訊地圖的很多後臺服務基本上都遷移 docker 部署了。

docker是應用的基石

最後強調爲什麼要用Docker

Docker 的鏡像提供了除內核外完整的運行時環境,確保了應用運行環境一致性,從而不會再出現 “這段代碼在我機器上沒問題啊” 這類問題;——一致的運行環境

可以做到秒級、甚至毫秒級的啓動時間。大大的節約了開發、測試、部署的時間。——更快速的啓動時間

避免公用的服務器,資源會容易受到其他用戶的影響。——隔離性

善於處理集中爆發的服務器使用壓力;——彈性伸縮,快速擴展

可以很輕易的將在一個平臺上運行的應用,遷移到另一個平臺上,而不用擔心運行環境的變化導致應用無法正常運行的情況。——遷移方便

使用 Docker 可以通過定製應用鏡像來實現持續集成、持續交付、部署。——持續交付和部署

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章