前言
很多小伙伴可能在工作中都聽說過Docker,但是實際工作中卻沒有使用過,聽得多了,也對Docker內心有一種很深切的想了解,但是因為各種原因而不知道如何去了解而發愁,不要急,這篇文章帶你認識Docker!
一、 Docker簡介
Docker是一個開源項目,誕生於2013年初,最初是dotCloud公司內部的一個業余項目。它基於 Google 公司推出的 Go 語言實現。項目后來加入了 Linux 基金會,遵從了 Apache 2.0 協議,項目代碼在 GitHub 上進行維護。
Docker 項目的目標是實現輕量級的操作系統虛擬化解決方案。Docker 的基礎是 Linux 容器(LXC)等技術。
背景:雲計算興起后,服務器硬件擴展非常便利,軟件服務部署成為了瓶頸,docker趁勢而興。
二、 為什么使用Docker?
①、 容器的啟動可以在秒級實現,比傳統的虛擬機方式要快得多
②、 對系統資源的利用率很高,一台主機上可以同時運行數千個 Docker 容器
③、 docker的出現,讓開發/測試/線上的環境部署,成為便利一條龍。
1、 更快速的交付和部署
對開發和運維(devop)人員來說,最希望的就是一次創建或配置,可以在任意地方正常運行。
開發者可以使用一個標准的鏡像來構建一套開發容器,開發完成之后,運維人員可以直接使用這個容器來部署代碼。Docker 可以快速創建容器,快速迭代應用程序,並讓整個過程全程可見,使團隊中的其他成員更容易理解應用程序是如何創建和工作的。Docker 容器很輕很快!容器的啟動時間是秒級的,大量地節約開發、測試、部署的時間。
2、 更高效的虛擬化
Docker 容器的運行不需要額外的 hypervisor 支持,它是內核級的虛擬化,因此可以實現更高的性能和效率。
3、 更輕松的遷移和擴展
Docker 容器幾乎可以在任意的平台上運行,包括物理機、虛擬機、公有雲、私有雲、個人電腦、服務器等。這種兼容性可以讓用戶把一個應用程序從一個平台直接遷移到另外一個。
4、更簡單的管理
使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分發和更新,從而實現自動化並且高效的管理。
5、 對比傳統虛擬機
特性 | 容器 | 虛擬機 |
啟動 | 秒級 | 分鍾級 |
硬盤使用 | 一般為MB | 一般為GB |
性能 | 接近原生 | 弱於Docker |
系統支持量 | 單機支持上千個容器 | 一般幾十個 |
三、 Docker基本概念
1、 Docker架構
host:主機載體,也就是Docker安裝的地方
繼承類比方式:
Class2 extents Class1 相當於 Object o = new Class2
此時,o對象的結構中,有Class1的成員結構
image2 extents image1 相當於 Container c = new image2
此時,c容器中,有image1的文件
2、Docker鏡像
①、 Docker 鏡像就是一個只讀的模板。
(例如:一個鏡像可以包含一個完整的 ubuntu 操作系統環境,里面僅安裝了 Apache 或用戶需要的其它應用程序。)
②、 鏡像可以用來創建 Docker 容器。
③、 Docker 提供了一個很簡單的機制來創建鏡像或者更新現有的鏡像,用戶甚至可以直接從其他人那里下載一個已經做好的鏡像來直接使用。
3、 Docker容器
①、 Docker 利用容器來運行應用。
②、 容器是從鏡像創建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台。
③、 可以把容器看做是一個簡易版的 Linux 環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序。
4、 Docker倉庫
①、 倉庫是集中存放鏡像文件的場所。有時候會把倉庫和倉庫注冊服務器(Registry)混為一談,並不嚴格區分。實際上,倉庫注冊服務器上往往存放着多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(tag)。
②、 倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
③、 最大的公開倉庫是 Docker Hub,存放了數量龐大的鏡像供用戶下載。
④、 當然,用戶也可以在本地網絡內創建一個私有倉庫。
⑤、 當用戶創建了自己的鏡像之后就可以使用 push 命令將它上傳到公有或者私有倉庫,這樣下次在另外一台機器上使用這個鏡像時候,只需要從倉庫上 pull 下來就可以了
5、 容器、鏡像的運行關系
下一章節:《Docker安裝部署及基本操作》
編后語
公眾號【Java極客思維】將會針對Docker做一個Docker的系列章節來由淺入深的介紹Docker及深入的使用,有興趣的小伙伴可以關注公眾號並轉發文章,讓更多的小伙伴看到關於【Docker系列的介紹及使用】
更多精彩敬請關注公眾號
Java極客思維
微信掃一掃,關注公眾號