目錄
1.1什么是虛擬化
1.2什么是Docker
1.3容器與虛擬機的比較
1.4Docker組建
2、Docker安裝
2.2設(shè)置ustc的鏡像
2.3Docker的啟動與停止
3、docker常用命令
3.1鏡像
3.2容器相關(guān)命令
1.1什么是虛擬化
在計算機中,虛擬化(Vitualization)是一種資源管理技術(shù),是將計算機的各種實體資源,比如服務(wù)器、網(wǎng)絡(luò)、內(nèi)存及存儲等,予以抽象,轉(zhuǎn)換后呈現(xiàn)出來,打破實體結(jié)構(gòu)間的不可分割的障礙,使用戶可以比原來的組態(tài)更好的方式來用用這些資源。這些資源的新虛擬部分是不受現(xiàn)有資源的架設(shè)方式,地域或者物理組態(tài)所限制。一般所指的虛擬化資源包括計算能力和資料存儲。
在實際的生產(chǎn)環(huán)境中,虛擬化技術(shù)主要用來解決高性能的物理硬件產(chǎn)能過剩和老的舊的硬件產(chǎn)能過低的重組重用,透明化底層物理硬件,從而最大化的利用物理硬件對資源充分利用虛擬化技術(shù)種類很多,例如:軟件虛擬化、硬件虛擬化、內(nèi)存虛擬化、網(wǎng)絡(luò)虛擬化(VIP)、桌面虛擬化、服務(wù)虛擬化、虛擬機等。
1.2什么是Docker
Docker是一個開源項目,誕生于2013年初,最初是doCloud公司內(nèi)部的一個業(yè)余項目。它基于Google公司退出的Go語言實現(xiàn)的。項目后來加入了Linux基金會,遵循了Apache2.0協(xié)議。
?
為什么選擇Docker
-
更高效的利用系統(tǒng)資源
由于容器不需要進行硬件虛擬以及運行完整操作系統(tǒng)等額外開銷,Docker對系統(tǒng)資源的利用率更高。無論是應(yīng)用執(zhí)行速度、內(nèi)存損耗或者文件的存儲速度,都是比傳統(tǒng)虛擬機技術(shù)更高效。因此,相比虛擬機技術(shù),一個相同配置的主機,往往可以運行更多數(shù)量的應(yīng)用。
-
更快速的啟動事件
傳統(tǒng)的虛擬機技術(shù)啟動應(yīng)用服務(wù)往往虛擬需要數(shù)分鐘,而Docker容器應(yīng)用,由于直接運行于宿主內(nèi)核,無需啟動完整的操作系統(tǒng),因此可以做到秒級。甚至毫秒級的啟動時間。大大的節(jié)約了開發(fā)、測試、部署的時間
-
一致的運行環(huán)境
開發(fā)環(huán)境中一個常見的問題是環(huán)境的一致性問題,由于開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境不一致,導(dǎo)致有些Bug并未在開發(fā)過程中被發(fā)現(xiàn),而Docker的鏡像提供了除了內(nèi)核外完整的運行時環(huán)境,確保了應(yīng)用運行環(huán)境的一致性,從而不會再出現(xiàn)[這段代碼在我的機器上運行沒有問題]這類的問題!
-
持續(xù)交付和部署
對于開發(fā)和運維(DevOps)人員來說,最希望的就是一次創(chuàng)建或者配置,可以在任意地方正常運行。
使用Docker可以通過定制應(yīng)用鏡像來實現(xiàn)持續(xù)集成、持續(xù)交付、部署。開發(fā)人員可以通過Dockerfile來進行鏡像的構(gòu)建,并且結(jié)合持續(xù)集成系統(tǒng)進行集成測試,而運維人員則可以直接在生產(chǎn)環(huán)境中快速的部署該鏡像,甚至結(jié)合持續(xù)部署系統(tǒng)進行自動部署。
而且使用Dockerfile使鏡像構(gòu)建透明化,不僅僅開發(fā)團隊可以理解應(yīng)用運行環(huán)境,也方便運維團隊理解應(yīng)用運維所需條件,幫助更好的生產(chǎn)環(huán)境部署該鏡像。
-
更輕松的遷移
由于Docker確保了執(zhí)行環(huán)境的一致性,使得應(yīng)用的遷移更加容易。Docker可以在很多平臺上運行,無論是物理機還是虛擬機、公有云。私有云。甚至是筆記本,其運行結(jié)果是一致性的。因此用戶可以很輕松的將在一個平臺上運行的應(yīng)用,遷移到另外一個平臺上,而不用擔(dān)心運行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運行的情況
-
更輕松的維護和擴展
Docker使用的分層存儲以及鏡像的技術(shù),使得應(yīng)用重復(fù)部分的復(fù)用更加的容易,也使得應(yīng)用的維護更新變得更加簡單,基于基礎(chǔ)鏡像進一步擴展鏡像也變得非常簡單,此外,Docker團隊各個開源項目團隊一起維護了一大批高質(zhì)量的官方鏡像,既可以直接在生產(chǎn)環(huán)境中使用,又可以作為基礎(chǔ)進一步定制,大大的降低了應(yīng)用服務(wù)的鏡像制作成本。
1.3容器與虛擬機的比較
下面的圖片Docker和傳統(tǒng)虛擬化方式的不同之處,可見容器是在操作系統(tǒng)層面上實現(xiàn)虛擬化,直接復(fù)用本地主機的操作系統(tǒng),而傳統(tǒng)的方式則是在硬件層面實現(xiàn)的。
與傳統(tǒng)的虛擬機相比,Docker優(yōu)勢體現(xiàn)在啟動速度快、占用體積小
特性 | 容器 | 虛擬機 |
---|---|---|
啟動 | 秒級 | 分鐘級 |
硬盤使用 | 一般為MB | 一般為GB |
性能 | 接近原生 | 弱于 |
系統(tǒng)支持量 | 單機支持上千個容器 | 一般為幾十個 |
1.4Docker組建
1.4.1Docker服務(wù)器與客戶端
Docker是一個客戶端-服務(wù)器(C/S)架構(gòu)程序。Docker客戶端只需要向Docker服務(wù)器或者守護進程發(fā)出請求,服務(wù)器或者守護進程將完成所有工作并返回結(jié)果。Docker也提供了一個命令行工具Docker以及一整套RESful API。亦可以在同一臺宿主機上運行Docker守護進程和客戶端,也可以從本地的Docker客戶端連接到另外一臺宿主機的遠(yuǎn)程Docker守護進程
1.4.2Docker鏡像與容器
鏡像是架構(gòu)Docker的基石。用戶基于鏡像來運行自己的容器。鏡像也是Docker生命周期中“構(gòu)建”部分。鏡像是基于聯(lián)合文件系統(tǒng)的一種層式結(jié)構(gòu),由一系列指令一步一步的構(gòu)建出來的:例如:
-
添加一個文件;
-
執(zhí)行一個命令;
-
打開一個窗口;
也可以將鏡像當(dāng)做容器的“源代碼”。鏡像體積很小,非?!氨銛y”,抑郁分享、存儲和更新。
Docker借鑒了標(biāo)準(zhǔn)集裝箱的概念。標(biāo)準(zhǔn)集裝箱將貨物運往世界各地,Docker將這個模型運用到自己的設(shè)計中,唯一不同的是:集裝箱運輸貨物,而Docker運輸軟件。
和集裝箱一樣,Docker在執(zhí)行上述操作時,并不會關(guān)心容器中到底裝了什么,它不管是web服務(wù)器,還是數(shù)據(jù)庫,或者是應(yīng)用程序服務(wù)器什么的。所有的容器都按照相同的方式將內(nèi)容“裝載”進去。
Docker也不關(guān)心你要把容器運到何方:我們可以在自己的筆記本中構(gòu)建容器,上傳到Refistry,然后下載到另一個物理的或者虛擬的服務(wù)器來測試,在把容器部署到具體的主機中,像標(biāo)準(zhǔn)集裝箱一樣,Docker容器方便替換,可以疊加,易于分發(fā),并且盡量通用。
1.4.3Registry(注冊中心)
Docker用Registry來保存用戶構(gòu)建的鏡像。Registry分為共有和私有兩種。Docker公司運行公共的Refistry叫做Docker Hub。用戶可以在Docker Hub注冊賬號,分享并且保存自己的鏡像(在Docker HUb 下載鏡像巨慢,可以自己構(gòu)建私有的Registry)。
2、Docker安裝
Docker官方建議在ubuntu1中安裝,因為Dock而是基于Ubuntu發(fā)布的,而且一般Docker出現(xiàn)問題Ubuntu是最先更新或者打補丁的,在很多版本的center os中是不支持更新最新的一些補丁包的。
1、yum包更新到最新
yum update
2、安裝需要的軟件包,yum-util提供yum-config-manager功能,另外兩個是devicemappper驅(qū)動依賴的
yum install -y yum-utils device-mapper-persistent-data lvm2
3、設(shè)置yum源為阿里云
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、安裝docker
yum install -y docker-ce
5、查看是否安裝成功
[root@centos7 ~]# docker -v
Docker version 24.0.2, build cb74dfc
2.2設(shè)置ustc的鏡像
ustc是老牌的linux鏡像服務(wù)提供者了,還在遙遠(yuǎn)的utuntu5.04版本的時候就在用,ustc的docker鏡像加速器速度很快。ustc docker mirrror的優(yōu)勢之一就是不需要注冊,是真正的公共服務(wù)。
http://lug.ustc.edu/wiki/mirrors/help/docker
編輯該文件
[root@centos7 ~]# mkdir -p /etc/docker/
[root@centos7 ~]# vim /etc/docker/daemon.json
在文件中輸入如下內(nèi)容
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
2.3Docker的啟動與停止
啟動docker:
systemctl start docker
停止docker:
systemctl stop docker.socket
查看docker運行狀態(tài)
systemctl status docker
設(shè)置docker開機自啟:
systemctl enable docker
3、docker常用命令
3.1鏡像
查看鏡像:
docker images
REPOSITORY ? TAG ? ? ? IMAGE ID ? CREATED ? SIZE
搜索鏡像:
docker search php
拉取鏡像:
docker pull centos:7
刪除鏡像:
docker rmi 鏡像id
3.2容器相關(guān)命令
3.2.1查看容器
查看正在運行的容器:
[root@centos7 ~]# docker ps
查看所有容器:
[root@centos7 ~]# docker ps -a
3.2.2創(chuàng)建與啟動容器
創(chuàng)建容器命令
docker run
-i:表示運行容器
-t:表示容器啟動后會進入其命令行,加入這兩個參數(shù)后,容器創(chuàng)建愛你就能登錄進去。即分配一個偽終端。
--name:為創(chuàng)建的容器命名。
-v:表示目錄映射關(guān)系(前者是宿主機目錄,后者為映射到宿主機上的目錄),可以使用多個v做多個目錄或者文件映射。
注意:最好做目錄映射,在宿主機上做修改,然后共享到容器上。
-d:在run后面加上一個-d參數(shù),則會創(chuàng)建一個守護式容器在后臺運行(這樣創(chuàng)建容器后就不會自動登錄容器,如果只加-i,-t兩個參數(shù),創(chuàng)建后就會自動進入到容器中)。
-p:表示端口映射,前者是宿主主機端口,后者是容器內(nèi)的映射端口。可以使用多個-p做多個端口映射
1、交互式方式創(chuàng)建容器
docker run -it --name=mycentos centos:7 /bin/bash
2、守護式方式創(chuàng)建容器
docker run -di --name=mycentos2 centos:7
登錄容器:
docker exec -it mycentos2 /bin/bash
停止容器:
docker stop f7f6b0dbd985
啟動容器
docker start mycentos2
mycentos2
?
3.2.3容器的文件操作
將宿主機中的文件拷貝到容器中:
docker cp anaconda-ks.cfg mycentos2:/usr/local
Successfully copied 3.58kB to mycentos2:/usr/local
進入mycentos容器中進行查看:
docker exec -it mycentos2 /bin/bash
?
ls
anaconda-post.log
將容器中的文件拷貝到宿主機中
docker cp mycentos2:/usr/local/anaconda-ks.cfg anaconda-ks2.cfg
Successfully copied 3.58kB to /root/anaconda-ks2.cfg
3.2.4目錄掛載
創(chuàng)建一個新的容器:
[root@centos7 ~]# docker run -di -v /usr/local/mydata/:/usr/local/mydata --name=mycentos3 centos:7
cd0247073e3ff747fd68ada87a26e432f77446b069bea84cbe94109f63a69182
在該目錄下創(chuàng)建文件:
vim /usr/local/mydata/test
寫入內(nèi)容:abcddd
進入mycentos中查看:
docker exec -it mycentos3 /bin/bash
cd /usr/local/mydata/
cat test
abcddd
3.2.5查看容器IP地址
查看容器的全部信息:
docker inspect mycentos3
查看指定信息:文章來源:http://www.zghlxwxcb.cn/news/detail-494295.html
docker rm cd0247073e3f
cd0247073e3f
刪除某容器:文章來源地址http://www.zghlxwxcb.cn/news/detail-494295.html
docker rm cd0247073e3f
cd0247073e3f
到了這里,關(guān)于Docker: 改變?nèi)萜骰澜绲母锩约夹g(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!