2、物理機時代2.1、圖解一個物理機上安裝操作系統(tǒng),然后直接運行我們的軟件。也就是說你電腦上直接跑了一個軟件,并沒有開虛擬機什么的,資源" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > 如何理解Docker,半小時教你入門實戰(zhàn),看完這篇就夠了!

如何理解Docker,半小時教你入門實戰(zhàn),看完這篇就夠了!

時間:2023-07-15 23:42:02 | 來源:網(wǎng)站運營

時間:2023-07-15 23:42:02 來源:網(wǎng)站運營

如何理解Docker,半小時教你入門實戰(zhàn),看完這篇就夠了?。?h2 data-first-child>一、歷史演化

1、演化史







2、物理機時代

2.1、圖解

一個物理機上安裝操作系統(tǒng),然后直接運行我們的軟件。也就是說你電腦上直接跑了一個軟件,并沒有開虛擬機什么的,資源極其浪費。






2.2、缺點

虛擬機都不開,直接上物理機部署應(yīng)用,那成本能不高嘛
硬件資源沒有合理利用
每次遷移都要重新安裝一模一樣的運行環(huán)境等

3、虛擬機時代

3.1、圖解

一個物理機上虛擬化出來多個虛擬機,每個虛擬機上進行安裝操作系統(tǒng),然后在虛擬機上直接運行我們的軟件。比如阿里云、騰訊云等云服務(wù)器都是虛擬機。






3.2、特點

一個物理機上創(chuàng)建多個虛擬機,每個虛擬機的ip都不同,一個軟件可以在不同虛擬機上進行部署。
每個虛擬機都由獨立分配的內(nèi)存磁盤等硬件資源,通過Hypervisor分配。
隨時隨地都能在一個物理機上開出新的虛擬機。成本也低。

3.3、缺點

假設(shè)我們的應(yīng)用程序只有幾KB,或者幾十MB,但是卻要在虛擬機上安裝一個幾百兆的操作系統(tǒng)來跑。

4、容器化時代

4.1、有什么用

看完了物理機時代和虛擬機時代后發(fā)現(xiàn)各有缺點,而容器化技術(shù)可以完美解決虛擬機時代的缺點。

或許你一定遇到過程序在我本地是正常的,為毛到了QA環(huán)境就GG了?或者本地和QA都測試通過了,為毛上線就GG了?這大多是因為環(huán)境不同所導(dǎo)致的,最簡單的例子:本地和QA是jdk1.8,線上是1.6等等。容器化技術(shù)比如docker,開發(fā)者可以將安裝環(huán)境和程序一起打包給運維,運維直接安裝你這個打包的“腳本”即可,所有的環(huán)境都是你本地正常運行的。

如果沒看懂就粗淺的理解為:你用shell命令寫了個腳本,下載jdk,配置環(huán)境變量、下載tomcat、部署你的程序等等這一套流程,然后交給運維,運維直接sh xxx.sh就完事了,環(huán)境什么的都是你給的,不會出現(xiàn)環(huán)境不一致的情況。你肯定有疑問:我虛擬機上有jdk了,你給我的腳本里再安裝jdk肯定不行啊,容器化技術(shù)可以讓資源隔離,互不影響。

4.2、對比虛擬機時代

虛擬化技術(shù)是物理硬件的隔離,容器化技術(shù)是app層面的隔離,兩者不沖突。往往容器化時代都是基于虛擬機基礎(chǔ)之上做的資源隔離。它可以基于虛擬機的操作系統(tǒng)部署多服務(wù),不再需要額外安裝操作系。

4.3、特點

那肯定啊,開發(fā)者將環(huán)境和程序打包給運維,運維直接執(zhí)行就完事了。
廢話,包都是開發(fā)者給的,開發(fā)者難道把一個應(yīng)用程序打兩個不同的包給運維?
加粗了,自行體會。

二、什么是Docker?

Docker就是容器化技術(shù)的一種具體實現(xiàn)。基于Go語言開發(fā)。

加粗的一句話已經(jīng)解釋的明明白白了,不明白就等于沒看懂上面的。

三、Docker的安裝

基于Centos7的安裝。

1、官方安裝地址

https://docs.docker.com/engine/install/centos/

官方由于是國外的,所以不推薦,推薦下面的安裝方式。

2、國內(nèi)源安裝

2.1、安裝工具

sudo yum install -y yum-utils device-mapper-persistent-data lvm2
device-mapper-persistent-data lvm2是干嘛的?
docker要想數(shù)據(jù)存儲就必須要安裝這兩個,這兩個是為了docker做數(shù)據(jù)存儲用的。

2.2、添加源為國內(nèi)

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.3、更新安裝Docker-CE

sudo yum makecache fastsudo yum -y install docker-ce

2.4、驗證是否安裝成功

sudo service docker startdocker version

2.5、先爽一把helloworld

好不容易安裝完了,先爽一把helloworld。
docker pull hello-worlddocker run hello-world





四、更換鏡像地址

需要更換鏡像倉庫地址為阿里云的。

1、啥意思

記得maven嘛?maven下載下來一般都會改配置文件,將其遠(yuǎn)程倉庫地址改為阿里云的,docker其實也一樣,如果把他比作maven的話,可以理解成從遠(yuǎn)程倉庫(鏡像倉庫)拉取jar包(鏡像文件),但是遠(yuǎn)程鏡像倉庫是國外的,所以需要換成國內(nèi)的。

2、更換步驟

(1)打開網(wǎng)站

https://www.aliyun.com/

(2)搜索“容器鏡像服務(wù)”







(3)點擊“立即開通”







(4)點擊“鏡像加速器”







(5)執(zhí)行命令

sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://xxxxxx.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart docker(6)大功告成

上面1-5步驟執(zhí)行完成后就大功告成了,就可以用docker pull xxx來測試下了,速度賊拉快。

五、Docker的基本概念

1、容器與鏡像

1.1、鏡像

鏡像是只讀的文件,提供了運行程序完整的軟硬件資源,是應(yīng)用程序的“集裝箱”。

1.2、容器

容器是鏡像的實例,由Docker負(fù)責(zé)創(chuàng)建,容器之間彼此隔離。

1.3、一句話概況

一個鏡像可以創(chuàng)建多個容器,容器之間彼此隔離,互不影響。

2、倉庫

2.1、本地倉庫

存放了自己docker pull下來的鏡像。

2.2、遠(yuǎn)程倉庫

存放了各種各樣的鏡像,docker pull命令就是先去本地倉庫檢查是否有這個鏡像,沒有的話就去遠(yuǎn)程倉庫拉取鏡像放到本地倉庫。鏡像都是別人打包好的應(yīng)用程序。

直接搜索就行,不用注冊登錄。

2.3、一句話概況

跟maven倉庫的含義幾乎一樣。

3、Docker Daemon

用于管理鏡像和容器,客戶端發(fā)起docker run的請求會交給docker daemon處理,docker daemon會給這個鏡像開辟一個新的容器。再比如客戶端發(fā)起docker pull命令也是交給docker daemon,docker daemon去檢查本地倉庫有沒有,本地倉庫沒有的話docker daemon去遠(yuǎn)程倉庫拉取鏡像放到本地倉庫。

六、docker原理

1、描述

原理很簡單,核心在于docker daemon,客戶端所有的請求都會交給daemon處理,比如下圖中的三個命令的完整執(zhí)行流程是這樣的:

1.1、docker build

client發(fā)送docker build給docker daemon,docker daemon收到請求后會構(gòu)建鏡像放到本地倉庫。

1.2、docker pull

client發(fā)送docker pull命令給docker daemon,docker daemon收到命令后會優(yōu)先檢查本地倉庫是否存在此鏡像,若不存在則去遠(yuǎn)程倉庫拉取鏡像并放到本地倉庫,若存在則不走遠(yuǎn)程倉庫。

1.3、docker run

client發(fā)送docker run命令給docker daemon,docker daemon收到命令后會啟動一個新的容器,所以一個鏡像可以有多個容器,只要我run一次就會產(chǎn)生一個新的容器出來。

2、圖解







七、實戰(zhàn)部署Tomcat

1、找鏡像

(1)去遠(yuǎn)程倉庫找鏡像

(2)







(3)一般帶官方logo的,且名字就是官方名字的(比如tomcat),且start最高的,那就是正品。其他的可能都是個人的,個人的不靠譜。





z

(4)







2、安裝tomcat

2.1、拉取鏡像

docker pull tomcat
完整命令是:docker pull 鏡像名<:tags> 從遠(yuǎn)程倉庫拉取鏡像。如果沒寫:tags則代表是latest版本。如下圖






比如也可以拉取帶tags的鏡像

docker pull tomcat:8.5.55-jdk8-openjdk這個tag是從如下地方獲取的







2.2、查看鏡像

docker images

2.3、啟動容器

鏡像有了該啟動容器玩玩了。
docker run tomcat
完整命令是:docker run 鏡像名<:tags> 這里沒指定tag就代表是latest, docker images可以查看鏡像tags等信息。

2.4、問題

我們已經(jīng)裝逼三連:docker pull、docker images、docker run,將tomcat正常啟動了,默認(rèn)端口8080,問題來了,我怎么訪問呢?它是在docker里的,不是我宿主機的8080端口,這就需要做一個端口映射。宿主機和docker啟動的tomcat的端口映射。

2.5、端口映射

docker run -p 8000:8080 tomcat
也就是啟動參數(shù)里多加個-p參數(shù),-p參數(shù)用于端口映射,前面是宿主機端口,后面是容器端口。

2.6、測試

瀏覽器輸入:http://localhost:8800

404?那是因為新版本tomcat將webapps下面的內(nèi)容都刪了,所以找不到了原來的index.jsp文件了。這又有問題了,我怎么進入我容器里的tomcat目錄?比如看個log,找到webapps給他添加文件等操作。

2.7、進入容器里的tomcat

# 先用docker ps命令查看啟動的容器docker ps





# 進入容器的tomcatdocker exec -it ac1c3d62b75d /bin/bash
格式:docker exec [-it] 容器id 命令
exec:在對應(yīng)容器中執(zhí)行命令
-it:采用交互方式執(zhí)行命令
執(zhí)行ls -l查看目錄







可以看下webapps,里面空空如也。所以404,但是外層有一個webapps.dist文件夾,這個文件夾是原有tomcat的主頁面,我們可以刪除webapps,然后mv命令將webapps.dist改為webapps,等自動部署完在訪問網(wǎng)頁就正常了。

mv后tomcat部署稍微慢點,等1-2min,在訪問就行。

2.8、怎么后臺啟動

現(xiàn)在問題:ctrl+c就結(jié)束進程了。
# -d 參數(shù)即可docker run -p 8000:8080 -d tomcat

2.9、總結(jié)

以上步驟其實就干了這么幾件事:

-p 端口映射
-d 后臺啟動

八、常用命令總結(jié)

命令解釋docker pull 鏡像名<:tags>從遠(yuǎn)程倉庫拉取鏡像到本地倉庫docker images查看本地倉庫所有鏡像docker run 鏡像名<:tags>基于鏡像創(chuàng)建容器并啟動,可以添加-d port1:port2參數(shù),port1:宿主機端口,port2:容器端口, -d參數(shù)代表后臺運行docker ps查看當(dāng)前所有啟動的容器docker ps -a查看本地所有容器,包含未啟動的,刪除容器的時候可用來查詢?nèi)萜鱥ddocker start/stop/restart 容器id啟動/停止/重啟容器docker rm <-f> 容器id刪除<-f:強制刪除>容器,運行中的容器不能刪除,-f可以強制docker rmi <-f> 鏡像名稱 <:tags>刪除<強制刪除>鏡像,鏡像有容器在啟動,不能被刪除,-f可以強制docker exec [-it] 容器id 命令進入容器主目錄,exec:在對應(yīng)容器中執(zhí)行命令,-it:采用交互方式執(zhí)行命令

九、容器內(nèi)部結(jié)構(gòu)

1、內(nèi)部結(jié)構(gòu)

你jdk都沒安裝,怎么就能跑tomcat?tomcat容器內(nèi)部包含了如下:

2、驗證

先進入容器

docker exec -it ac1c3d62b75d /bin/bash
執(zhí)行cat /proc/version,可以發(fā)現(xiàn)帶了個紅帽系統(tǒng)






java -version
這個還用驗證?

十、容器原理

1、圖解







2、總結(jié)

created -> running -> paused -> deleted

3、驗證

docker create tomcat# 查看容器狀態(tài),會發(fā)現(xiàn)是createddocker ps -a





docker start 8c4a21f47b8f# 查看容器狀態(tài),會發(fā)現(xiàn)是up, up就對應(yīng)running,代表運行中docker ps





# docker stop命令會讓容器進入exit狀態(tài),這個不等于paused,paused沒有演示的必要。docker stop 8c4a21f47b8f# rm刪除容器。也就對應(yīng)deleted狀態(tài)docker rm 8c4a21f47bf

十一、docker總結(jié)

發(fā)現(xiàn)優(yōu)點了沒?

關(guān)鍵詞:實戰(zhàn),入門,理解,小時

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉