docker是什么
Docker官網: https://www.docker.com/
-
Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。
-
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。
-
容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
-
Docker 從 17.03 版本之后分為 CE(Community Edition: 社區版) 和 EE(Enterprise Edition: 企業版),我們用社區版就可以了。
docker架構原理
Docker三要素,鏡像,容器,倉庫
1.鏡像
Docker 鏡像(Image)就是一個只讀的模板,它可以是一個可運行軟件(tomcat,mysql),也可以是一個系統(centos)。鏡像可以用來創建 Docker 容器,一個鏡像可以創建很多容器。
2.容器
Docker 利用容器(Container)獨立運行的一個或一組應用。容器是用鏡像創建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都是相互隔離的、保證安全的平台。可以把容器看做是一個簡易版的 Linux 環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序。容器的定義和鏡像幾乎一模一樣,也是一堆層的統一視角,唯一區別在於容器的最上面那一層是可讀可寫的。
3.倉庫
倉庫(Repository)是集中存放鏡像文件的場所,類似GitHub存放項目代碼一樣,只不過Docker Hub是由來存鏡像(image)的。倉庫(Repository)和倉庫注冊服務器(Registry)是有區別的。倉庫注冊服務器上往往存放着多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的標簽(tag,類似版本號)。
倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
最大的公開倉庫是 Docker Hub(https://hub.docker.com/),存放了數量龐大的鏡像供用戶下載。國內的公開倉庫包括阿里雲 、網易雲 等。
容器與鏡像的關系類似於面向對象編程中的對象與類。
Docker | 面向對象 |
---|---|
容器 | 對象 |
鏡像 | 類 |
docker有什么用
-
簡化環境搭建,提高開發生命周期效率
-
大大簡化運維工作量
-
微服務利器
docker容器與虛擬機的區別
Docker是一種輕量級的虛擬化技術,比傳統的虛擬機性能更好。
下圖是虛擬機的體系結構:
- server - 表示真實電腦。
- Host OS - 真實電腦的操作系統,例如:Windows,Linux
- Hypervisor - 虛擬機平台,模擬硬件,如VMWare,VirtualBox
- Guest OS - 虛擬機平台上安裝的操作系統,例如CentOS Linux
- App - 虛擬機操作系統上的應用,例如nginx
下圖是Docker的體系結構:
- server - 表示真實電腦。
- Host OS - 真實電腦的操作系統,例如:Windows,Linux
- Docker Engine - 新一代虛擬化技術,不需要包含單獨的操作系統。
- App - 所有的應用程序現在都作為Docker容器運行。
這種體系結構的明顯優勢是,不需要為虛擬機操作系統提供硬件模擬。所有應用程序都作為Docker容器工作,性能更好。
Docker容器 | 虛擬機(VM) | |
---|---|---|
操作系統 | 與宿主機共享OS | 宿主機OS上運行宿主機OS |
存儲大小 | 鏡像小,便於存儲與傳輸 | 鏡像龐大(vmdk等) |
運行性能 | 幾乎無額外性能損失 | 操作系統額外的cpu、內存消耗 |
移植性 | 輕便、靈活、適用於Linux | 笨重、與虛擬化技術耦合度高 |
硬件親和性 | 面向軟件開發者 | 面向硬件運維者 |
Docker優點:輕量級,速度快,運行應用隔離,方便維護...
docker版本介紹
-
Docker從1.13版本之后采用時間線的方式作為版本號,分為社區版CE和企業版EE。
-
社區版是免費提供給個人開發者和小型團體使用的,企業版會提供額外的收費服務,比如經過官方測試認證過的基礎設施、容器、插件等。
-
社區版按照stable和edge兩種方式發布,每個季度更新stable版本,如17.06,17.09;每個月份更新edge版本,如17.09,17.10。
我們平時用社區版就足夠了。所以我們安裝社區版;
docker 安裝官方文檔
我們主要參考:https://docs.docker.com/install/linux/docker-ce/centos/ 來安裝;
docker CentOS-7安裝步驟
工具准備
-
前置基本系統操作centos
-
虛擬機 VMware或者使用Hyper-V,
-
centos7安裝下虛擬機VM上,centos鏡像地址:https://mirrors.aliyun.com/centos/
-
ssh連接 工具 才用 FinalShell 官方地址:http://www.hostbuf.com/
安裝參考:https://www.runoob.com/w3cnote/vmware-install-centos7.html
這里選擇centos7
阿里雲下載地址:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/
各個版本iso鏡像文件說明:
- CentOS-7-x86_64-DVD-2009.iso 標准安裝版
- CentOS-7-x86_64-Everything-2009.iso 完整版,集成所有軟件
- CentOS-7-x86_64-Minimal-2009.iso 精簡版,自帶的軟件最少(沒有gnome桌面)
- CentOS-7-x86_64-NetInstall-2009.iso 網絡安裝版
我們選個精簡版就可以了
基礎環境
用ssh工具連接上系統后,要做幾件事
- 檢查網絡是否正常
ping www.baidu.com
檢測即可,不正常的話,自己排查下
- 切換到root用戶
輸入下面的命令
su
- Docker 對 CentOS 系統的內核版本要求
Docker 要求 CentOS 系統的內核版本高於 3.10
通過 uname -r
命令查看你當前的內核版本
例:
[root@localhost makalo]# uname -r
3.10.0-1160.el7.x86_64
- 將yum包更新到最新
yum update
- 卸載舊版本docker(如果安裝過舊版本的話)
如果安裝過舊版本可以用此命令,卸載
yum remove docker docker-common docker-selinux docker-engine
安裝依賴
安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
yum install -y yum-utils device-mapper-persistent-data lvm2
設置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安裝最新版本的Docker
yum install docker-ce docker-ce-cli containerd.io
啟動Docker並設置開機啟動
#啟動
systemctl start docker
#設置開機啟動
systemctl enable docker
驗證docker是否安裝成功
執行下面命令,出現下圖表示安裝成功
docker version
Docker HelloWorld測試
執行
docker run hello-world
執行結果如圖
因為本地沒有這個鏡像,所以從遠程官方倉庫去拉取,下載
現在已經下載好了,再執行一次
docker run hello-world
ok,HelloWorld運行完畢
Docker HelloWorld運行原理
運行 docker run hello-world
本地倉庫未能找到該鏡像,然后去遠程倉庫尋找以及下載該鏡像;
然后我們再執行該命令
出來了 Hellowold。我們具體來分析下 執行原理和過程;
從左到右 client客戶端,Docker運行主機,遠程倉庫;
docker build ,pull,run分別是 構建,拉取,運行命令,
中間Docker主機里有 Docker daemon主運行線程,以及Containers容器,容器里可以運行很多實例,(實例是從右側Images鏡像實例化出來的)Images是存儲再本地的鏡像文件,比如 Redis,Tomat這些鏡像文件;
右側是Registry鏡像倉庫,默認遠程鏡像倉庫 https://hub.docker.com/ 不過是國外主機,下載很慢,不穩定,所以我們后面要配置成阿里雲倉庫鏡像地址,穩定快捷;
執行 docker run hello-world的過程看如下圖例:
docker 配置阿里雲鏡像
Docker默認遠程倉庫是 https://hub.docker.com/
比如我們下載一個大點的東西,龜速
由於是國外主機,經常延遲,破損;
所以我們一般都是配置國內鏡像,比如阿里雲,網易雲等;推薦阿里雲,穩定點
獲取鏡像地址
登錄進入阿里雲鏡像服務中心,獲取鏡像地址
進入阿里雲容器鏡像服務地址:點這里快速進入
使用你的淘寶或支付寶賬號登錄
設置鏡像地址
在/etc/docker目錄下找到在daemon.json文件(沒有就新建),將下面內容寫入
registry-mirrors對應的地址就是第一步獲取的地址
{
"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}
重啟daemon
systemctl daemon-reload
重啟docker服務
systemctl restart docker
查看鏡像地址是否修改成功
輸入
docker info
如下圖表示修改成功