Docker入門連載——(1)Docker簡介

1.什麼是 Docker

在這裏插入圖片描述
官網的介紹是“Docker is the world’s leading software container platform.” 官方給Docker的定位是一個應用容器平臺

Docker 是一個容器平臺的領導者 Docker 容器平臺 Docker 應用容器平臺

application項目 Mysql Redis MongoDB ElasticSeacrh …

application項目 Docker 應用容器平臺 Mysql Redis mongoDB ElasticSearch tomcat nginx…

2.爲什麼是Docker

  • 合作開發的時候,在本機可以跑,別人的電腦跑不起來

    這裏我們拿java Web應用程序舉例,我們一個java Web應用程序涉及很多東西,比如jdk、tomcat、spring等等。當這些其中某一項版本不一致的時候,可能就會導致應用程序跑不起來這種情況。Docker則將程序直接打包成鏡像,直接運行在容器中即可。

  • 服務器自己的程序掛了,結果發現是別人程序出了問題把內存喫完了,自己程序因爲內存不夠就掛了

    這種也是一種比較常見的情況,如果你的程序重要性不是特別高的話,公司基本上不可能讓你的程序獨享一臺服務器的,這時候你的服務器就會跟公司其他人的程序共享一臺服務器,所以不可避免地就會受到其他程序的干擾,導致自己的程序出現問題。Docker就很好解決了環境隔離的問題,別人程序不會影響到自己的程序。

  • 公司要弄一個活動,可能會有大量的流量進來,公司需要再多部署幾十臺服務器

    在沒有Docker的情況下,要在幾天內部署幾十臺服務器,這對運維來說是一件非常折磨人的事,而且每臺服務器的環境還不一定一樣,就會出現各種問題,最後部署地頭皮發麻。用Docker的話,我只需要將程序打包到鏡像,你要多少臺服務,我就給力跑多少容器,極大地提高了部署效率。


3.Docker和虛擬機區別

關於Docker與虛擬機的區別,我在網上找到的一張圖,非常直觀形象地展示出來,話不多說,直接上圖。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UyzlUt1y-1591685496036)(Docker_1.assets/image-20200410132957752.png)]

比較上面兩張圖,我們發現虛擬機是攜帶操作系統,本身很小的應用程序卻因爲攜帶了操作系統而變得非常大,很笨重。Docker是不攜帶操作系統的,所以Docker的應用就非常的輕巧。另外在調用宿主機的CPU、磁盤等等這些資源的時候,拿內存舉例,虛擬機是利用Hypervisor去虛擬化內存,整個調用過程是虛擬內存->虛擬物理內存->真正物理內存,但是Docker是利用Docker Engine去調用宿主的的資源,這時候過程是虛擬內存->真正物理內存。

傳統虛擬機 Docker容器
磁盤佔用 幾個GB到幾十個GB左右 幾十MB到幾百MB左右
CPU內存佔用 虛擬操作系統非常佔用CPU和內存 Docker引擎佔用極低
啓動速度 (從開機到運行項目)幾分鐘 (從開啓容器到運行項目)幾秒
安裝管理 需要專門的運維技術 安裝、管理方便
應用部署 每次部署都費時費力 從第二次部署開始輕鬆簡捷
耦合性 多個應用服務安裝到一起,容易互相影響 每個應用服務一個容器,達成隔離
系統依賴 需求相同或相似的內核,目前推薦是Linux

4.Docker 的核心

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-hWPba5a3-1591685496038)(Docker_1.assets/image-20200404111908085-0291323.png)]

  • 鏡像: 一個鏡像代表一個應用環境,他是一個只讀的文件,如 mysql鏡像,tomcat鏡像,nginx鏡像等
  • 容器: 鏡像每次運行之後就是產生一個容器,就是正在運行的鏡像,特點就是可讀可寫
  • 倉庫:用來存放鏡像的位置,類似於maven倉庫,也是鏡像下載和上傳的位置
  • dockerFile:docker生成鏡像配置文件,用來書寫自定義鏡像的一些配置
  • tar:一個對鏡像打包的文件,日後可以還原成鏡像
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章