目錄
服務(wù)器選型
虛擬機(jī)
基于主機(jī)(物理機(jī)或虛機(jī))的多服務(wù)實(shí)例
基于容器的服務(wù)實(shí)例
Docker
Docker三要素
Docker安裝
Docker基本使用
基本操作
倉庫+鏡像
容器

服務(wù)器選型
在選擇服務(wù)器操作系統(tǒng)時(shí),
Windows
附帶了許多您需要付費(fèi)的功能。
Linux
是開放源代碼,可讓用戶免費(fèi)使用。
對(duì)比
Linux
是開源的,因此是免費(fèi)的。
Web
主機(jī)僅需要支付技術(shù)支持即可安裝和維護(hù)程序(如果需
要)。服務(wù)器提供商不需要將額外的成本轉(zhuǎn)嫁給客戶。另一方面,對(duì)于
Windows
服務(wù)器,公司通常
必須為操作系統(tǒng)和定期使用許可證付費(fèi)。
Linux
服務(wù)器及其運(yùn)行的應(yīng)用程序通常設(shè)計(jì)為精益運(yùn)行,因此通常使用較少的計(jì)算機(jī)資源。好處是
程序員可以
“
即時(shí)
”
修改
Linux
服務(wù)器和軟件,而無需重新啟動(dòng),這在
Windows
環(huán)境中是不可能的。
Microsoft
Windows
服務(wù)器在多數(shù)據(jù)庫任務(wù)下趨向于變慢,崩潰的風(fēng)險(xiǎn)更高。
Linux
比
Windows
更安全。盡管沒有哪個(gè)系統(tǒng)能幸免于黑客和惡意軟件的攻擊,但是
Linux
往往是
一個(gè)低調(diào)的目標(biāo)。由于
Windows
運(yùn)行著世界上大多數(shù)軟件,因此,黑客們渴望獲得低掛的果實(shí)
Windows
。
虛擬機(jī)
虛擬機(jī)指通過軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng)。
微服務(wù)的部署策略
部署單體應(yīng)用意味著運(yùn)行大型應(yīng)用的多個(gè)相同副本,通常提供若干臺(tái)(
N
)服務(wù)器(物理機(jī)或虛擬
機(jī)),在每臺(tái)服務(wù)器上運(yùn)行若干個(gè)(
M
)應(yīng)用實(shí)例。部署單體應(yīng)用并不總是簡(jiǎn)單明了,但還是比部署微
服務(wù)應(yīng)用簡(jiǎn)單。
微服務(wù)應(yīng)用由幾十甚至數(shù)百個(gè)服務(wù)組成。服務(wù)用不同的語言和框架寫成,每個(gè)都是一個(gè)小應(yīng)用,包括特
定的部署、資源、擴(kuò)展和監(jiān)控需求,例如,根據(jù)服務(wù)需求運(yùn)行若干數(shù)量的服務(wù)實(shí)例。
此外,每個(gè)服務(wù)實(shí)例必須配套提供適當(dāng)?shù)?/span>
CPU
、內(nèi)存 和
I/O
資源。更具挑戰(zhàn)性的是,盡管如此復(fù)雜,部
署服務(wù)還必須快速、可靠和性價(jià)比高。
基于主機(jī)(物理機(jī)或虛機(jī))的多服務(wù)實(shí)例
“
基于主機(jī)的多服務(wù)實(shí)例
”
模式是最為傳統(tǒng)的應(yīng)用程序部署方法。
在該模式下,軟件開發(fā)人員可以提供單個(gè)或多個(gè)物理機(jī)或虛機(jī),同時(shí)在每個(gè)主機(jī)上運(yùn)行多個(gè)服務(wù)實(shí)例。
此模式有幾種不同的實(shí)現(xiàn)形式,其中包括:將每一個(gè)服務(wù)實(shí)例都作為一個(gè)單獨(dú)的進(jìn)程,或是在同一進(jìn)程
中運(yùn)行多個(gè)服務(wù)實(shí)例。
優(yōu)點(diǎn)
:
由于多個(gè)服務(wù)實(shí)例使用的是同一服務(wù)器、及其操作系統(tǒng),因此它們的資源使用效率相對(duì)較
高。
不足
:
除非每個(gè)實(shí)例都是一個(gè)單獨(dú)的進(jìn)程,否則您對(duì)服務(wù)實(shí)例的實(shí)際控制權(quán)并不大。而且,您無法
限制每個(gè)實(shí)例能夠使用到的資源比例。這將帶來主機(jī)內(nèi)存被大量消耗的隱患。
如果多個(gè)服務(wù)實(shí)例在同一進(jìn)程中運(yùn)行,它們之間會(huì)缺乏隔離關(guān)系。這通常會(huì)導(dǎo)致在相同進(jìn)程
中,某個(gè)行為異常的服務(wù)能夠直接影響、甚至中斷其他的服務(wù)。
由于運(yùn)營團(tuán)隊(duì)需要了解服務(wù)的詳細(xì)信息,因此在部署期間,他們可能發(fā)生人為錯(cuò)誤的風(fēng)險(xiǎn)較
高。顯然,開發(fā)和運(yùn)營團(tuán)隊(duì)之間需要通過必要的信息交換,來盡可能地消除復(fù)雜性。
基于容器的服務(wù)實(shí)例
在這種部署模式下,每個(gè)服務(wù)實(shí)例都運(yùn)行在其各自的容器中,因此也被稱為操作系統(tǒng)級(jí)別的虛擬化機(jī)制。
使用這一模式時(shí),用戶將服務(wù)打包為容器鏡像。每個(gè)容器鏡像就是一個(gè)文件系統(tǒng)鏡像,由應(yīng)用和運(yùn)行服
務(wù)所需的庫構(gòu)成。有的容器鏡像還包括完整的
Linux
根文件系統(tǒng),有的則更輕量。
以部署
Java
服務(wù)為例,構(gòu)建的容器鏡像包括
Java
運(yùn)行時(shí)、
Apache Tomcat
服務(wù)器、以及編譯好的
Java
應(yīng)用。
一旦將服務(wù)打包為容器鏡像,就啟動(dòng)一到多個(gè)容器。通常每個(gè)物理機(jī)或虛擬主機(jī)上會(huì)運(yùn)行多個(gè)容器,會(huì)
用到
Kubernetes
或
Marathon
這樣的集群管理工具來管理容器。
集群管理工具把主機(jī)看做資源池,根據(jù)每個(gè)容器需要的資源和每個(gè)主機(jī)上可用的資源來調(diào)度容器。
容器的優(yōu)點(diǎn)與虛擬機(jī)類似,服務(wù)實(shí)例之間完全隔離,也能輕松監(jiān)控每個(gè)容器的資源消耗。
Docker
文章來源:http://www.zghlxwxcb.cn/news/detail-792494.html
Docker
是近年來新興的虛擬化工具,它可以和虛擬機(jī)一樣實(shí)現(xiàn)資源和系統(tǒng)環(huán)境的隔離。
虛擬機(jī)與容器的區(qū)別
VM(VMware)
在宿主機(jī)器、宿主機(jī)器操作系統(tǒng)的基礎(chǔ)上創(chuàng)建虛擬層、虛擬化的操作系統(tǒng)、虛擬化的倉庫,然后再安裝應(yīng)用;
Container(Docker
容器
)
,在宿主機(jī)器、宿主機(jī)器操作系統(tǒng)上創(chuàng)建
Docker
引擎,在引擎的基礎(chǔ)上再安裝應(yīng)用。
Docker三要素
Docker鏡像
Docker
鏡像就是一個(gè)只讀的模板。
例如:一個(gè)鏡像可以包含一個(gè)完整的
ubuntu
操作系統(tǒng)環(huán)境,里面僅安裝了
Apache
或用戶需要的其它應(yīng)用 程序鏡像可以用來創(chuàng)建 Docker
容器。
Docker
提供了一個(gè)很簡(jiǎn)單的機(jī)制來創(chuàng)建鏡像或者更新現(xiàn)有的鏡像,用戶甚至可以直接從其他人那里下載 一 個(gè)已經(jīng)做好的鏡像來直接使用。
Docker倉庫
倉庫是集中存放鏡像文件的場(chǎng)所。
有時(shí)候會(huì)把倉庫和倉庫注冊(cè)服務(wù)器(
Registry
)混為一談,并不嚴(yán)格區(qū)分。實(shí)際上,倉庫注冊(cè)服務(wù)器上
往往存放著多個(gè)倉庫,每個(gè)倉庫中又包含了多個(gè)鏡像,每個(gè)鏡像有不同的 標(biāo)簽(tag
)。
倉庫分為公開倉庫(
Public
)和私有倉庫(
Private
)兩種形式。
最大的公開倉庫是
Docker Hub
,存放了數(shù)量龐大的鏡像供用戶下載。
當(dāng)然,用戶也可以在本地網(wǎng)絡(luò)內(nèi)創(chuàng)建一個(gè)私有倉庫。
當(dāng)用戶創(chuàng)建了自己的鏡像之后就可以使用
push
命令將它上傳到公有或者私有倉庫,這樣下次在另外一臺(tái)機(jī)器上使用這個(gè)鏡像時(shí)候,只需要從倉庫上 pull
下來就可以了。
Docker
容器Docker 利用容器來運(yùn)行應(yīng)用。
容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例。它可以被啟動(dòng)、開始、停止、刪除。每個(gè)容器都是相互隔離的、保證安全的平臺(tái)。
可以把容器看做是一個(gè)簡(jiǎn)易版的
Linux
環(huán)境(包括
root
用戶權(quán)限、進(jìn)程空間、用戶空間和網(wǎng)絡(luò)空間等)和運(yùn)行在其中的應(yīng)用程序。
1.
提供一次性的環(huán)境。比如,本地測(cè)試他人的軟件、持續(xù)集成的時(shí)候提供單元測(cè)試和構(gòu)建的環(huán)境
2.
提供彈性的云服務(wù)。因?yàn)?/span>
Docker
容器可以隨開隨關(guān),很適合動(dòng)態(tài)擴(kuò)容和縮容
3.
組建微服務(wù)架構(gòu)。通過多個(gè)容器,一臺(tái)機(jī)器可以跑多個(gè)服務(wù),因此在本機(jī)就可以模擬出微服務(wù)架構(gòu)
Docker安裝
Docker
支持運(yùn)行
CentOS
版本:
CentOS 7.X
內(nèi)核版本檢查
:
uname
-
r
卸載可能存在的舊版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
舊版本的
docker
叫做
docker
或者
docker-engine
,如果有安裝,先卸載其以及其依賴,新版本的
docker
叫做
docker-ce
docker-ce
(社區(qū)版,免費(fèi))
docker-ee
(專業(yè)版,收費(fèi))
安裝必要的系統(tǒng)工具
:
yum install
-
y yum
-
utils device
-
mapper
-
persistent
-
data lvm2
配置阿里云
Docker Yum
源
:
yum
-
config
-
manager
--
add
-
repo http://mirrors.aliyun.com/docker-
ce/linux/centos/docker
-
ce.repo
安裝
docker-CE:
yum
-
y install docker
-
ce
1
)默認(rèn)安裝的是最新版本的穩(wěn)定版
2
)查看版本列表請(qǐng)使用如下命令:
yum list docker-ce --showduplicates | sort -r
3
)如果要安裝特定版本的
docker-CE
請(qǐng)使用如下命令格式:
yum install docker-ce
Docker基本使用
基本操作
查看服務(wù)狀態(tài)
啟停服務(wù)
systemctl start docker
systemctl stop docker
systemctl restart docker
開機(jī)自啟
systemctl enable docker
systemctl disable docker
倉庫+鏡像
Docker
運(yùn)行容器前需要本地存在對(duì)應(yīng)的鏡像, 如果鏡像不存在,
Docker
會(huì)嘗試先從默認(rèn)鏡像倉庫下
載
(默認(rèn)使用
Docker Hub
公共注冊(cè)服務(wù)器中的倉庫), 用戶也可以通過配置,使用自定義的鏡像庫
配置加速器
(
通過阿里云控制臺(tái)獲得加速地址
)
vi /etc/docker/daemon.json
{
"registry-mirrors":["你的阿里云專屬加速器地址"]
}
重新加載
daemon
重啟
docker
搜索鏡像
下載鏡像
docker pull 鏡像名
獲取一個(gè) centos 系統(tǒng)的基礎(chǔ)鏡像可以使用如下的命令:
docker pull centos (未指定版本一般會(huì)使用latest(最新的)版本)
docker pull centos:版本號(hào) (或者直接指定版本)
?查看宿主機(jī)上的鏡像文章來源地址http://www.zghlxwxcb.cn/news/detail-792494.html
docker images
查看image位置
cd /var/lib/docker/containers (/var/lib/docker為docker默認(rèn)安裝目錄) && ll
docker rmi
鏡像
ID/
標(biāo)簽
docker rmi centos
docker rmi -f centos:latest
如果提示鏡像被使用,需要先停止某個(gè)ID的容器,那么要先刪除容器再刪除鏡像?;蛘邚?qiáng)制刪除鏡像。
正確做法:先刪除依賴該鏡像的所有容器, 再來刪除鏡像
容器
容器是
Docker
的另一個(gè)核心概念。簡(jiǎn)單來說,容器是鏡像的一個(gè)運(yùn)行實(shí)例。
鏡像是靜態(tài)的只讀文件,而容器帶有運(yùn)行時(shí)需要的可寫文件層,同時(shí),容器中的應(yīng)用進(jìn)程處于運(yùn)行狀態(tài)
創(chuàng)建容器
docker create -it centos:latest
docker create -it --name centos01 centos:latest
centos:latest 即鏡像名字:版本(或鏡像ID),將使用指定鏡像創(chuàng)建容器。另外,Docker會(huì)檢查本地是否
存在指定的鏡像,
不存在就從公有倉庫下載
-it:是兩個(gè)參數(shù),-i:interactive容器具有交互功能,-t:容器將提供偽終端
--name:指定生成的容器的名字,允許空,如果不指定會(huì)自動(dòng)生成
啟動(dòng)、停止、重啟容器
docker start 容器ID|name|name:tag
docker stop 容器ID|name|name:tag
docker restart 容器ID|name|name:tag
查看當(dāng)前的容器
docker ps
docker ps -a
刪除容器
docker rm 容器ID
docker rm -f 容器ID
進(jìn)入容器
docker exec -it 容器ID/容器NAME /bin/bash
docker exec -it 容器ID/容器NAME bash (簡(jiǎn)寫)
退出容器
退出時(shí)如果想繼續(xù)運(yùn)行容器:按順序按【ctrl+p】,【ctrl+q】
如果不想繼續(xù)運(yùn)行:按【ctrl+d】或輸入exit
到了這里,關(guān)于入門Docker1: 容器技術(shù)的基礎(chǔ)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!
本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!