天天看點

2.docker安裝及原理

一. docker的架構

1.1 docker的架構

先來看docker官網給出的docker架構圖:

2.docker安裝及原理

看官網,docker的架構描述: https://docs.docker.com/get-started/overview/

Docker使用用戶端-伺服器架構。Docker 用戶端與Docker 守護程序進行對話,該守護程序完成了建構,運作和分發Docker容器的繁重工作。Docker用戶端和守護程式可以 在同一系統上運作,也可以将Docker用戶端連接配接到遠端Docker守護程式。Docker用戶端和守護程式在UNIX套接字或網絡接口上使用REST API進行通信。

從上圖我們也可以看出, 整體分為三個部分: docker用戶端, docker背景(相當于一個小型的linux), docker倉庫. 接下來一個一個看.

1. Docker用戶端--The Docker client

Docker用戶端是許多Docker使用者與Docker互動的主要方式。當您使用諸如之類的指令時

docker run

,用戶端會将這些指令發送到

dockerd

,以執行它們。該

docker

指令使用Docker API。Docker用戶端可以與多個守護程式通信。

2. Docker守護程式 -- The Docker daemon

Docker守護程式(

dockerd

)偵聽Docker API請求并管理Docker對象,例如圖像,容器,網絡和卷。守護程式還可以與其他守護程式通信以管理Docker服務。

3. Docker倉庫 -- Docker registries

Docker registries存儲Docker映像。Docker Hub是任何人都可以使用的公共系統資料庫,并且預設情況下,Docker已配置為在Docker Hub上查找映像。您可以運作自己的私人系統資料庫。如果使用Docker資料中心(DDC),則其中包括Docker可信registries(DTR)。

使用

docker pull

docker run

指令時,所需的圖像将從配置的系統資料庫中提取。使用該

docker push

指令時,會将映像推送到配置的系統資料庫。

1.2 docker的基本元素 -- Docker對象

通過上面的架構圖, 我們可以看到docker主要包含: 鏡像, 容器, 倉庫. 下面就來具體看看這幾個概念

1. images

一個圖像是用于建立一個碼頭勞工容器指令的隻讀模闆。通常,一個映像基于另一個映像,并進行一些其他自定義。例如,您可以基于該

ubuntu

 映像建構映像,但是安裝Apache Web伺服器和您的應用程式,以及運作該應用程式所需的配置詳細資訊。

您可以建立自己的圖像,也可以僅使用其他人建立并在系統資料庫中釋出的圖像。要建構自己的映像,您可以 使用簡單的文法建立一個Dockerfile,以定義建立映像并運作它所需的步驟。Dockerfile中的每個指令都會在映像中建立一個層。當您更改Dockerfile并重建映像時,僅重建那些已更改的層。與其他虛拟化技術相比,這是使映像如此輕巧,小型和快速的部分原因。

2. container

容器是圖像的可運作執行個體。您可以使用Docker API或CLI建立,啟動,停止,移動或删除容器。您可以将容器連接配接到一個或多個網絡,将存儲連接配接到它,甚至根據其目前狀态建立新映像。

預設情況下,容器與其他容器及其主機之間的隔離程度相對較高。您可以控制容器的網絡,存儲或其他基礎子系統與其他容器或與主機的隔離程度。

容器由其映像以及在建立或啟動時為其提供的任何配置選項定義。删除容器後,未存儲在持久性存儲中的狀态更改将消失。

3. 倉庫

倉庫是存放鏡像的地方, 分為共有倉庫和私有倉庫

共有倉庫: dockerHub(國外) , 阿裡雲(國内)

私有倉庫: 自定義的倉庫

二.docker的安裝及應用

1. docker支援的centos版本

  • Centos7(64-bit)
  • Centos6.5(64-bit)
  • 阿裡雲伺服器:Alibaba Cloud Linux 參考阿裡雲安裝docker文檔:https://help.aliyun.com/document_detail/264695.html

2. docker安裝的前提條件

  • 目前centos僅發行版本的核心支援docker
  • docker運作在centos7上, 要求系統為64位,系統核心版本為3.10以上
  • docker運作在centos6.5或更高版本上,要求系統64位,系統核心版本為2.6.32-431或者更高版本

uname指令列印系統相關資訊

uname -r
           
2.docker安裝及原理
2.docker安裝及原理

我的伺服器版本是5.10.23, 64位

查詢系統版本

cat /etc/redhat-release    或者  cat /etc/os-release
           
2.docker安裝及原理

3. centos6.5及以上的安裝docker

安裝docker, 我們主要借助于幫助文檔, 文檔位址: https://docs.docker.com/engine/install/, 對照文檔安裝

第一步: 解除安裝舊版本的docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
           
2.docker安裝及原理

如上圖所示, 表示之前沒有安裝過docker, 如果安裝過, 會提示,解除安裝完畢.

第二步: 安裝docker

官網給出, 安裝docker有三種方法:

  • 第一種: 是從倉庫安裝,
  • 第二種是通過RPM包安裝,
  • 第三種是通過腳本安裝.

我們這裡采用第一種從倉庫安裝

1. 安裝docker前需要安裝的依賴包

yum install -y yum-utils
           

2. 設定鏡像倉庫

在一台新的主機上首次安裝docker engine之前, 需要先設定docker鏡像倉庫, 後面可以從鏡像倉庫安裝和更新docker.

鏡像倉庫官網給的是國外的, 我們盡量不用, 速度太慢

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
           

我們百度搜尋, 找到阿裡雲docker鏡像參考的位址, 國内使用這個

sudo yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
           
2.docker安裝及原理

3. 安裝最新版docker引擎

安裝引擎之前, 先來安裝yml軟體包索引

yum makecache fast
           

這個指令什麼意思呢? 科普一下

我們在更新yum源或者出現配置yum源之後,通常都會使用yum makecache 生成緩存

yum makecache fast
這個指令是将軟體包資訊提前在本地緩存一份,用來提高搜尋安裝軟體的速度

yum clean all
yum 會把下載下傳的軟體包和header存儲在cache中而不自動删除。如果覺得占用磁盤空間,可以使用yum clean指令清除緩存。
           

然後安裝docker

sudo yum install docker-ce docker-ce-cli containerd.io
           

這裡安裝了docker, docker-cli 和容器. docker-ce是社群版的意思, docker-ee是企業版. 通常我們使用的都是社群版的.

注意: 有很多朋友使用的linux伺服器, 這裡在執行這個指令的時候, 會報錯:

2.docker安裝及原理

這裡報錯的原因是, 阿裡雲作業系統是Alibaba Cloud Linux, 而不是存粹的centOS, 這時我們可以參考阿裡雲提供的docker安裝文檔: https://help.aliyun.com/document_detail/264695.html

4. 啟動docker

systemctl start docker
           

5. 檢查是否安裝成功

docker version
           

6. 拉取docker鏡像拉取helloworld

2.docker安裝及原理

7. 配置阿裡雲鏡像加速器

第一步:通路國内阿裡雲的網址

dev.aliyun.com

第二步:登入

第三步: 擷取鏡像位址

在産品與服務-->搜尋"容器鏡像服務" --> 鏡像工具 --> 鏡像加速器 --> 複制鏡像加速器位址

https://cr.console.aliyun.com/cn-hangzhou/instances/repositories

配置方法:

2.docker安裝及原理
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://6w5zrjdk.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
           

三. docker的底層原理

1. docker是怎麼工作的?

2.docker安裝及原理

docker是一個client-server結構的系統,Docker的守護程序運作在主機上, 然後通過Socket連接配接從用戶端通路, 守護程序從用戶端接受指令并管理運作在主機上的容器, 容器,是一個運作時環境, 就是我們前面說到的集裝箱

用戶端通過socket連接配接到背景守護程序, 然後通過指令告訴守護程序, 調用容器. 可見容器和用戶端是互相隔離的. 我們可以把容器了解為一個小型的linux, 他有自己的端口号, 比如mysql容器端口号是3306, 容器中的端口, 通過用戶端是不能直接通路的. 我們需要做端口映射.

2. 虛拟機和容器的差別

2.docker安裝及原理

docker将虛拟機的Hypervisor和作業系統應将cpu, 記憶體等去掉了. 替換成了Docker Engine. 而這兩塊恰恰就是虛拟機笨重的地方. docker共享了主控端的作業系統, 核心, cpu. 省略了自己建構的過程.

docker容器 虛拟機VM
作業系統 與主控端共享OS 主控端OS上運作虛拟機OS
存儲大小 鏡像小, 便于存儲和傳輸 鏡像龐大(vmdk, vdi等)
運作性能 幾乎無額外性能損失 作業系統額外的CPU,記憶體消耗
移植性 輕便,靈活,适用于linux系統 笨重, 與虛拟機技術耦合度高
硬體親和性 面向軟體開發者 面向硬體運維者
部署速度 快速, 秒級 較慢, 10s以上

以上是虛拟機和容器的差別

2.docker安裝及原理

繼續閱讀