容器化之Docker小知識普及

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

 

 

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

 

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

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

  鏡像有基礎鏡像,如centos、mysql、redis鏡像,這些本身不用作 官網有人已經作好了這些鏡像 能夠直接拉下來用,若是要作本身的特殊須要的鏡像,能夠直接在這些基礎鏡像上構建。redis

容器

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

  每一個容器都是獨立的封閉的,須要對外提供服務就須要公開容器的特定端口,在啓動 Docker 的時候將容器的特定端口映射到宿主機上面的任意一個端口,能夠將容器的端口映射成任意的對外端口,可解決多個應用端口相同產生的衝突,因此就不須要經過代理來解決衝突。容器對外端口與宿主機的端口映射能夠經過下面的命令來完成。
啓動 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 有着巨大的差異:centos

  Docker相對於 VM 有如下幾個優勢:服務器

 

啓動速度快,容器啓動本質就是一個開啓一個進程而已,所以都是秒啓,而 VM 一般要更久。

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

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

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

docker是應用的基石

 

最後強調爲何要用Docker

Docker 的鏡像提供了除內核外完整的運行時環境,確保了應用運行環境一致性,從而不會再出現 「這段代碼在我機器上沒問題啊」 這類問題;——一致的運行環境能夠作到秒級、甚至毫秒級的啓動時間。大大的節約了開發、測試、部署的時間。——更快速的啓動時間避免公用的服務器,資源會容易受到其餘用戶的影響。——隔離性善於處理集中爆發的服務器使用壓力;——彈性伸縮,快速擴展能夠很輕易的將在一個平臺上運行的應用,遷移到另外一個平臺上,而不用擔憂運行環境的變化致使應用沒法正常運行的狀況。——遷移方便使用 Docker 能夠經過定製應用鏡像來實現持續集成、持續交付、部署。——持續交付和部署

相關文章
相關標籤/搜索