1. 程式人生 > >Docker基礎及安裝

Docker基礎及安裝

一、簡介


Docker是基於Go語言實現的雲開源專案。主要目標是“Build,Ship and Run Any App,Anywhere”,也就是通過對應用元件的封裝、分發、部署、執行等生命週期的管理,使使用者的APP(Web應用或資料庫應用等等)及其執行環境能夠做到“一次封裝,到處執行”。

Linux容器技術的出現就解決了這樣一個問題,而Docker就是在它的基礎上發展過來的。將應用執行在docker容器上面,而Docker容器在任何作業系統上都是一致的,這就實現了跨平臺、跨伺服器。只需要一次配置好環境,換到別的機器上就可以一鍵部署好,大大簡化了操作。一句話解釋:Docker解決了執行環境和配置軟體容器(軟體容器:每一個容器也稱為集裝箱對應一個開發工具,多個容器對應多個開發軟體),方便做持續整合並有助於整體釋出的容器虛擬化技術。
    為什麼說Docker是秒級別啟動的?我們簡單瞭解一下,Docker使用的是一種虛擬化技術:Linux容器(Linux Containers,縮寫為LXC)Linux容器不是模擬一個完整的作業系統(Linux就是模擬一個完成的作業系統),而是對程序進行隔離。有了容器,就可以將軟體執行所需要的所有資源進行打包到一個隔離的容器中。容器與虛擬機器不同,不需要捆綁一整套作業系統,只需要軟體工作所需的庫資源和設定 。系統因此而變得高效輕量並保證部署在任何環境中的軟體都始終如一地執行。
   比較Docker與傳統虛擬化方式的不同之處:


     ● 傳統虛擬化技術是虛擬出一套硬體後,在其上執行一個完整作業系統,在此基礎上執行所需的應用程序。
     ● 而容器內的應用程序直接運行於宿主的核心,容器內沒有自己的核心,而且也沒有進行硬體虛擬。因此容器比傳統虛擬機器更為輕便。
     ● 每個容器之間互相隔離,每個容器有自己的檔案系統,容器之間程序不會相互影響,能區分計算資源。

二、Docker的基本組成


前提:目前,CentOS僅發行版本中的核心支援Docker。
  ☛ Docker執行在CentOS7上,要求系統為64位、系統核心版本為3.10以上。
  ☛ Docker執行在CentOS-6.5或更高的版本

的CentOS上,要求系統為64位、系統核心版本為2.6.32-431或者更高版本。
  ☛ 通過 uname -r 命令可以檢視系統核心版本號,通過 cat /etc/redhat-release 命令檢視CentOS版本。
Docker的架構圖:

Docker的基本組成: 映象(image):就是一個只讀的模板。映象可以用來建立Docker容器,一個映象可以建立很多容器。

Docker 面向物件
容器 物件
映象

容器(Container):利用容器獨立執行的一個或一組應用。容器是映象建立的執行例項。它可以被啟動、開始、停止、刪除。給個容器都是相互隔離的、保證安全的平臺。可以把容器看做是一個簡易版的Linux環境(包括root使用者許可權、程序空間、使用者空間和網路空間等)和執行在其中的應用程式。容器的定義和映象幾乎一模一樣,也是一層一層的統一視角,唯一的區別是容器的最上面是可讀可寫的。
倉庫(Repository)

:是集中存放映象檔案的場所。與倉庫註冊伺服器(Registry)是有區別的。倉庫註冊伺服器往往存放著多個倉庫,每個倉庫中又包含了多個映象,每個映象有不同的標籤(tag)。倉庫分為公有庫(Public)和私有庫(Private)兩種形式。最大的公有庫是Docker Hub,存放了數量龐大的映象供使用者下載。國內的公共倉庫包括阿里雲、網易雲等。
結論:Docker本身是一個容器執行載體或稱之為管理引擎。我們把應用程式和配置依賴打包好形成一個可交付的執行環境,這個打包好的執行環境就是image映象檔案,可以生成多個同時執行的例項。
 ●  image檔案生成的容器例項,本身就是一個檔案,稱為映象檔案。
 ●  一個容器執行一種服務,當我們需要的時候,就可以通過docker客戶端建立一個對應的執行例項,也就是我們的容器。
 ●  至於倉庫,就是存放一堆映象的地方,我們可以把映象釋出到倉庫中,需要的時候從倉庫中拉去下來即可。

三、Docker的安裝


1)、yum install -y epel-release(Docker使用EPEL釋出,RHEL系的OS首先要確保已經持有EPEL倉庫,否則先檢查OS的版本,然後安裝相應的EPEL包)

2)、yum install -y docker-io

3)、安裝後的配置檔案:/etc/sysconfig/docker
4)、啟動Docker後臺服務:service docker start
5)、docker version 驗證。
 

四、配置國內阿里雲映象加速(預設的Docker Hub 為外國倉庫,外國的倉庫訪問慢)


1)、阿里雲映象加速網址:https://promotion.aliyun.com/ntms/act/kubernetes.html  (國外Docker Hub倉庫訪問慢,使用國內映象網站)
2)、進入網站搜尋“映象加速器”,複製自己的加速地址:

3)、配置本地Docker執行映象加速器:進入自己的配置檔案:/etc/sysconfig/docker(版本不同配置檔案不同)

4)、重啟Docker:service docker restart
5)、Linux系統配置下檢查是否生效:ps -ef|grep docker (會顯示你配置的阿里雲倉庫地址)

五、Hello World上手實踐


1)、執行 docker run hello-world

2)、run命令的作用:

六、Docker底層原理


1)、Docker是如何工作的?
   Docker是一個Client-Server結構的系統,Docker守護程序執行在主機上,然後通過Docker連線從客戶端訪問,守護程序從客戶端接受命令並管理執行在主機上的容器。容器,是一個執行時環境,就是我們所說的集裝箱。
2)、為什麼Docker比VM快?
   ①、Docker有著比虛擬機器更少的抽象層。由於Docker不需要Hypervisor(結合下圖)實現硬體資源虛擬化,執行在docker容器上的程式直接使用的都是實際物理機的硬體資源。因此在CPU、記憶體利用率上Docker將會在效率上有明顯優勢。
  ②、Docker利用的是宿主機的核心,而不需要Guest OS,因此,當新建一個容器時,docker不需要和虛擬機器一樣重新載入一個作業系統核心。從而避免了載入作業系統核心浪費資源和時間的過程,當新建一個虛擬機器時,虛擬機器軟體需要載入Guest OS,這個過程時分鐘級別的。而docker由於直接利用宿主機的作業系統,省略了此過程,因此docker容器只需要幾秒鐘。(參考下圖)