溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker操作實踐(2):Docker的安裝及架構介紹

發(fā)布時間:2020-07-12 13:51:23 來源:網(wǎng)絡 閱讀:540 作者:嘉為科技 欄目:系統(tǒng)運維

上篇我們分享了一下容器的演進,然后用進程隔離、文件隔離、namespace、cgroups、libcontainer的幾個角度展開容器的本質,本篇文章會對Docker的版本安裝進行講解并簡介Docker的技術架構。


如果你還沒看過前面的內容:可以點擊《容器的本質是什么?容器從何而來?》


Docker版本

Docker在1.13之后,采用時間線作為版本號標識。Docker的版本分為社區(qū)版(CE)和企業(yè)版(EE)。企業(yè)版會提供額外的收費服務,比如包括一些經過官方認證的插件、容器等。


社區(qū)版又分為三種版本:

穩(wěn)定版本:stable。一般我們使用此版本。

預發(fā)布版:test

待發(fā)布版:nightly



Docker安裝


1.卸載docker

卸載主機上已有的docker版本


Docker操作實踐(2):Docker的安裝及架構介紹

2.?安裝前準備

配置yum

1. 安裝yum工具及devicemapper存儲驅動


Docker操作實踐(2):Docker的安裝及架構介紹


2. 配置yum


Docker操作實踐(2):Docker的安裝及架構介紹


yum makecache的過程中,可以看到可以安裝使用的包是dockerr-ce-stable版本,也就是repo中默認只開啟stable倉庫。


此時如果我們需要安裝test或nightly版本,可以使用yum-config-manger –enable docker-ce-test開啟此倉庫。


安裝docker

可以使用yum list查看倉庫中docker的版本:


Docker操作實踐(2):Docker的安裝及架構介紹


1. 安裝docker


Docker操作實踐(2):Docker的安裝及架構介紹


2. 啟動docker

systemctl start docker

systemctl enable docker


3. 查看docker版本


Docker操作實踐(2):Docker的安裝及架構介紹



Docker鏡像下載加速器的配置

可配置阿里鏡像加速器,配置方法參考鏈接:

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


針對docker客戶端版本大于1.10.0的,可通過修改/etc/docker/daemon.json文件來使用加速器。


如果該文件不存在,則直接創(chuàng)建。


操作命令:

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'

{

? "registry-mirrors": ["鏡像加速器地址(可從上面阿里云鏈接地址中獲?。?]

}


EOF

sudo systemctl daemon-reload

sudo systemctl restart docker



Docker架構

Docker采用了傳統(tǒng)的client-server架構模式,總架構圖如下:


Docker操作實踐(2):Docker的安裝及架構介紹


用戶通過docker client與docker daemon建立通信,并將請求發(fā)送給后者。Docker daemon中的模塊是松耦合結構,各模塊各司其職并有機組合,完成用戶的請求。


API:用于接收docker client的請求,然后根據(jù)不同的請求分發(fā)給daemon的不同模塊執(zhí)行相關的工作。


Docker client:是一個泛稱,用來向指定的docker daemon發(fā)起請求。可以是docker命令行工具,也可以是任何遵循了docker api的客戶端。


Graph:作為容器鏡像的保管者。不論是docker下載的鏡像,還是docker構建的鏡像,都由graph統(tǒng)一管理。


Execdriver:是對linux操作系統(tǒng)的namespace、cgroups、apparmor、SELinux等容器運行所需的系統(tǒng)操作進行的一層二次封裝,其本質作用類似于LXC,但是功能要更全面。這也就是為什么LXC會作為execdriver的一種實現(xiàn)而存在。不過目前,execdriver最主要的實現(xiàn)也是默認的實現(xiàn)是libcontainer庫


Networkdriver:對容器網(wǎng)絡環(huán)境操作所進行的封裝。對于容器來說,網(wǎng)絡設備的配置相對比較獨立,并且應該允許用戶進行更多的配置,所以在docker中,這一部分是單獨作為一個driverr來設計和實現(xiàn)的。這些操作具體包括創(chuàng)建容器通信所需的網(wǎng)絡,這個網(wǎng)絡所需的虛擬網(wǎng)上,分配通信所需的IP,服務訪問的端口和容器與宿該機之間的端口映射,設置hosts、resolv.conf、iptables等。


Graphdriver:是所有與容器鏡像相關操作的最終執(zhí)行者。包括從遠程docker registry上下載鏡像并進行存儲,也包括本地構建完鏡像后的存儲。當用戶下載指定的容器鏡像時,graphdriver將容器鏡像分層存儲在本地的指定目錄下;同時當用戶需要使用指定的容器鏡像來創(chuàng)建容器時,graphdriver從本地鏡像存儲目錄中獲取指定的容器鋁合金,并按特定規(guī)則為容器準備rootfs;另外,當用戶需要通過指定dockerfile構建全新鏡像時,graphdriver會負責新鏡像的存儲管理。目前graphdriver支持對接四種不同的文件存儲:aufs、btrfs、vfs、devmapper。



Docker VS 虛擬機


1.?Docker與虛擬機的架構對比

Docker架構與虛擬機架構對比情況如下圖。最直觀的差別在于docker容器中是沒有獨立的os,而是與宿主機共用同一個內核。然后通過隔離技術,讓我們在進入每一個容器時,所看到的內容和操作的環(huán)境就像是在一個虛擬機中一樣。


Docker操作實踐(2):Docker的安裝及架構介紹

2.?容器與虛擬機的優(yōu)劣對比

容器與虛擬機的對比情況如下:


Docker操作實踐(2):Docker的安裝及架構介紹


在安全性上,虛擬機肯定是比容器要好的,顯而易見,虛擬機畢竟擁有著獨立的操作系統(tǒng)。


在計算資源開銷和鏡像大小對比上,容器優(yōu)勢更大,從而實現(xiàn)了硬件資源的節(jié)約。


在啟動速度、快速擴展能力上,容器優(yōu)勢更大,從而實現(xiàn)了容器化應用的快速部署/擴容,從而提高業(yè)務的敏捷性


在跨平臺遷移能力上,容器優(yōu)勢更大,這對于容器化應用在企業(yè)的不同云環(huán)境之間的遷移提供了非常大的便利性。


基于以上的種種優(yōu)勢,容器實現(xiàn)了對微服務架構和devops的更好的支持。


作者:沈曉龍


Docker操作實踐(2):Docker的安裝及架構介紹


好文推薦

容器的本質是什么?容器從何而來?

使用sqlplus進行Oracle數(shù)據(jù)庫批量自動發(fā)布

業(yè)務復雜、數(shù)據(jù)龐大、應用廣怎辦?了解下分布式事務的解決思路!

這里有份選擇云服務商的攻略,請查收…

SaaS設計:自動化服務啟停設計示例?


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。

AI