Docker 系列一(概念原理和安裝).


一、概念原理

    Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。—— 百度百科

    之前一直有一個誤區,老聽人說 Docker 是一個容器,應用程序打包好鏡像,然后在這個容器中運行,以此達到 "一次封裝,處處運行"(Build,Ship and Run Any App,Anywhere)的目的。其實不然,Docker 只是一個應用程序引擎(引擎的基礎是Linux自帶的容器(Linux Containers,LXC)技術),然后每一個進程都是一個容器 —— 運行於 Docker引擎上的容器。

    Docker 在運行時分為 Docker 引擎(也就是服務端守護進程)和客戶端工具。Docker 的引擎提供了一組 REST API,被稱為 Docker Remote API,而如 docker 命令這樣的客戶端工具,則是通過這組 API 與 Docker 引擎交互,從而完成各種功能。因此,雖然表面上我們好像是在本機執行各種 docker 功能,但實際上,一切都是使用的遠程調用形式在服務端(Docker 引擎)完成。也因為這種 C/S 設計,讓我們操作遠程服務器的 Docker 引擎變得輕而易舉。

    Client 和 Server可以運行在同一台集群,也可以通過跨主機實現遠程通信。

 

    傳統的虛擬機技術和容器技術的區別?

    傳統虛擬機技術是虛擬出一套硬件后(內存分一點,磁盤分一點),在宿主上運行一個完整操作系統,在該系統上再運行所需要的應用進程;而容器內沒有自己的內核,而且也沒有進行硬件虛擬,應用進程直接運行於宿主的內核,而且進程和進程之間是相隔離的,是一個操作系統級別的虛擬化技術。

    Docker 的優勢:

1、更高效的利用系統資源(不需要進行硬件虛擬以及運行完整操作系統等額外開銷,一個相同配置的主機,往往可以運行更多數量的應用。單機支持上千個容器)
2、更快速的啟動時間
3、一致的運行環境
4、持續交付和部署
5、更輕松的遷移
6、更輕松的維護和擴展

    Docker 包括三個基本概念:

鏡像:是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時准備的一些配置參數(如匿名卷、環境變量、用戶等) 。鏡像不包含任何動態數據,其內容在構建之后也不會被改變,任何用戶程序都可以成為鏡像的一部分。

          鏡像=操作系統+軟件運行環境+用戶程序。

容器:鏡像和容器的關系,就像是面向對象程序設計中類和實例的關系,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等。

          容器的實質是進程,但與直接在宿主執行的進程不同,容器進程運行於屬於自己的獨立命名空間。容器內的進程是運行在一個隔離的環境中,使用起來,就好像是在一個獨立於宿主的系統下操作一樣。

          每一個容器運行時,是以鏡像為基礎層,在其上創建一個當前容器的存儲層,容器存儲層的的生命周期和容器一樣,容器消亡時,容器存儲層也隨之消亡。按照 Docker 的最佳實踐,容器不應該向存儲層寫入任何數據,容器存儲層要保持無狀態變化。所有的文件寫入操作,都應該使用 數據卷(Volume) 、或者綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層,直接對宿主(或網絡存儲) 發生讀寫,其性能和穩定性更高。

Docker Register:一個集中的存儲、分發鏡像的服務,一個Docker Register 中可以包含多個倉庫(打包好的軟件鏡像);每個倉庫可以包含多個標簽(一個軟件的多個版本鏡像);

tips:官方的鏡像庫 https://hub.docker.com/

         國內阿里雲的鏡像庫 https://cr.console.aliyun.com/

二、安裝

    下面僅介紹 CentOS 安裝 Docker CE,支持 64 位版本 CentOS 7,並且要求內核版本不低於 3.10。

    1、內核版本

    2、系統版本

    3、使用以下命令卸載舊版本的 Docker 

sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine

    4、安裝依賴包並添加 Docker 源

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2 
$ sudo yum-config-manager --add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo

    5、安裝 Docker CE

$ sudo yum makecache fast
$ sudo yum -y install docker-ce

    6、啟動 Docker

$ sudo systemctl enable docker
$ sudo systemctl start docker

    7、建立 docker 用戶組

    默認情況下,docker 命令會使用 Unix socket 與 Docker 引擎通訊。而只有 root 用戶和 docker 組的用戶才可以訪問 Docker 引擎的 Unix socket。完成前面的步驟,會自動建立 docker 用戶組。

    建立 docker 用戶組:

$ sudo groupadd docker

    添加用戶到 docker 用戶組:

$ sudo usermod -aG docker $USER

    8、測試是否安裝成功

    退出當前終端並重新登陸(必須),輸入如下命令驗證是否成功:

    9、安裝鏡像加速

    修改 /etc/docker/daemon.json 文件,寫入以下內容:

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

    重啟服務:

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

 

分享一篇很好的 Docker 文章:Docker 入門教程

參考資料:《Docker — 從入門到實踐》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM