日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【CyberSecurityLearning 附】Docker 初识

發(fā)布時間:2025/3/15 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【CyberSecurityLearning 附】Docker 初识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

Docker概念

playwithdocker

docker使用


Docker概念

docker其實(shí)是個虛擬機(jī),只不過它是一個主要應(yīng)用在linux和后臺一些應(yīng)用的虛擬機(jī),它和我們常用的vmware workstation有很多相似的地方,也有很多不同的地方。

首先docker中最重要的兩個概念,鏡像和容器,這兩個概念在vmware中也有,但是在docker里面多了一些其他概念
鏡像:類似于我們?nèi)?chuàng)建虛擬機(jī)之前需要下載的一些系統(tǒng)鏡像文件,比如iso文件、img文件等一些鏡像文件
容器:可以類比做正在運(yùn)行的一個虛擬機(jī)
tar文件:tar文件就類似于vm使用時的vmdk文件,它可以將一個鏡像直接保存成一個tar文件,然后這樣給別人,別通過一條load指令,重新加載成一個鏡像,然后通過run指令就起來一個正在運(yùn)行的虛擬機(jī)了(容器)
Dockerfile:dockerfile是一個配置文件,很短的一個配置文件,通過寫“如何構(gòu)建”的步驟,來指定一個鏡像是如何構(gòu)建的,然后通過docker build指令可以將dockerfile構(gòu)建成一個鏡像
倉庫:docker有個特別厲害的遠(yuǎn)程倉庫,這個倉庫保存了很多鏡像,包括一些公有的第三方已經(jīng)做好的鏡像,比如ubantu鏡像、Nginx鏡像、MySQL鏡像、tomcat鏡像等等,我們可以通過docker pull指令下載這些鏡像到本地,當(dāng)然也可以吧自己的鏡像通過push指令傳上去

playwithdocker

下面不介紹如何安裝docker,因?yàn)槊總€人系統(tǒng)不同安裝方式也不同,直接使用playwithdocker工具來介紹,注冊

通過dockerID登錄(我的是waffle666)

登錄之后可以看到這有4個小時的倒計(jì)時,就是說它免費(fèi)給你使用這個機(jī)器只能用四小時,四個小時之后你要重新再申請

這里我們點(diǎn)擊添加一個實(shí)例(+ADD NEW INSTANCE),立馬就進(jìn)入了ssh頁面

docker使用

然后,我們看如何去獲得一個鏡像,其實(shí)最簡單的方法就是從遠(yuǎn)程倉庫去下載鏡像
比如說通過pull指令下載Nginx鏡像

docker? pull? nginx

這樣docker pull Nginx就下載了,它其實(shí)等于docker pull nginx:latest(latest是版本,如果你不指定版本,默認(rèn)就是最新版本),這樣我們就把這個鏡像下載下來了

我們可以通過docker? images查看我們本地有哪些鏡像,下圖只顯示了一個鏡像,因?yàn)槲覀兙拖螺d了這一個

docker? images

然后我們就完成了這一步,我們通過run指令將這個鏡像運(yùn)行成一個真正在運(yùn)行的容器(虛擬機(jī))

docker? run? nginx

但是這樣只是簡單運(yùn)行起來一個服務(wù)器,我們通過指定一些參數(shù),比如-d讓它再后臺運(yùn)行不要阻塞住shell指令窗口,-p來指定內(nèi)外的端口映射,
比如我們將內(nèi)部端口80和外部端口80做一個簡單的映射,然后回車:

docker? run? -d? -p? 80:80? nginx(-p參數(shù)是指定端口映射先寫外部端口再寫內(nèi)部端口)

還有cans,比如--name指定容器運(yùn)行起來后的名字,nginx后不寫:默認(rèn)是最新版本

-p: 指定端口映射,格式為:主機(jī)(宿主)端口:容器端口

通過docker? ps可以查看正在運(yùn)行的容器有哪些,

docker? ps

可以看到容器端口 80 綁定主機(jī)端口 80

上圖可以看到它運(yùn)行了2分鐘(STATUS: UP 2 minutes),然后它運(yùn)行在80端口,我們注意到上面這會多一個80字樣,我們點(diǎn)擊,就轉(zhuǎn)過來了
或者:點(diǎn)擊OPEN? PORT輸入80,會彈出如下頁面,發(fā)現(xiàn)它已經(jīng)運(yùn)行起nginx,就說明我們外部端口映射到里面的80了

當(dāng)然你也可以啟動多個,比如我們再啟動一個,但是我們就不能再使用外部端口80了,我們可以指定一個81端口

docker? run? -d? -p? 81:80? nginx???

  • -p: 指定端口映射,格式為:主機(jī)(宿主)端口:容器端口

我們再點(diǎn)擊OPEN PORT輸入81,輸入后發(fā)現(xiàn)也是正在運(yùn)行中的nginx

那我們就通過pull和run指令將一個nginx容器給運(yùn)行起來了,
例如我們想對這個nginx進(jìn)行寫修改,我們可以通過docker? exec? -it,然后指定這個容器的id(nginx的id),比如第一個8191,它的id雖然很長,但是我們只要簡單能區(qū)分,通過指定少數(shù)幾個字就行。然后通過bash進(jìn)去,進(jìn)去之后可以看到前面變成root@xxxx,說明已經(jīng)進(jìn)到這個nginx容器里面了

docker? exec? -it? 8191? bash

docker exec :在運(yùn)行的容器中執(zhí)行命令

index文件在/usr/share/nginx/html中

?cd? /usr/share/nginx/html

上圖框起來的文件就是默認(rèn)的index文件了,我們直接修改這個index文件。比如我們改成hello

echo hello > index.html

通過修改了這個index文件,我們來看一下這個80端口(瀏覽器有緩存:按住Ctrl+F5強(qiáng)制刷新頁面),可以看到它已經(jīng)變成了hello,這就是我們?nèi)绾芜M(jìn)到容器里面做一些操作

我們可以exit退出,通過docker? rm? -f 強(qiáng)制刪除我們創(chuàng)建的81端口的這個容器,因?yàn)?1端口我們暫時用不到

docker? rm? -f?? 81端口的容器ID

然后我們通過docker? commit指令先指定一個容器(ID),如何后面是提交的鏡像的名稱,比如m1

通過docker images查看,發(fā)現(xiàn)有個鏡像叫m1了,跟我們之前pull下來的nginx鏡像一樣,他們并列放在這里,

然后我們也可以通過docker run -d -p 90:80 m1來運(yùn)行

然后通過訪問90端口,可以看到這里是hello,說明我們修改過后的容器保存成鏡像,重新運(yùn)行,它可以保存這個變化

再有一種方式就是dockerfile,我們新建一個dockerfile文件,在該文件中(大家可以學(xué)一下dockerfile文件的語法,這里就不過多提dockerfile的語法)

vim Dockerfile

我們可以通過FROM指定docker構(gòu)建的基礎(chǔ)鏡像,是基于nginx這個鏡像,然后我們將當(dāng)前目錄下的所有文件拷貝到/usr/share/nginx/html這個文件夾下

然后我們創(chuàng)建一個index.html,里面寫外部的文件

然后通過docker? build? -t? m2,之后要加一個.指定是當(dāng)前目錄下的dockerfile去構(gòu)建

docker? build? -t? m2? .(最后面加個點(diǎn))

通過docker? run -d? -p? 100:80? m2(100號端口去映射內(nèi)部的80端口的m2鏡像),回車運(yùn)行,然后通過docker ps查看,可以看到這已經(jīng)運(yùn)行了

我們點(diǎn)擊OPEN PORT 輸入100,可以看到外部文件這個樣子已經(jīng)出來了,這說明我們通過dockerfile構(gòu)建出了一個鏡像,并且跑成了一個容器,也完成了這一步

然后另外我們也可以通過docker save指令去將一個鏡像,比如說這里的b9(寫名zi)保存到一個文件里,比如叫1.tar

docker save m2>1.tar

通過ls查看,這解壓1.tar,

比如現(xiàn)在我們docker rmi將這個鏡像刪除,將m2鏡像直接刪除,

報(bào)錯,它說有個容器是基于這個鏡像的所以無法刪除,那我們將這個容器也刪了

docker? rm? -f?? b9

docker rmi m2

刪掉之后用docker images查看,就只有m1鏡像,m2沒了

然后我們再通過docker load < 1.tar

再通過docker images查看,發(fā)現(xiàn)m2鏡像又從tar'文件重新拿過來了,這就同時驗(yàn)證了load和save功能,然后push的話,需要自己去dockerhub或者其他官方倉庫注冊

?

?

總結(jié)

以上是生活随笔為你收集整理的【CyberSecurityLearning 附】Docker 初识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。