Docker (二) 容器及鏡像

容器及鏡像

容器

常見的容器狀態(tài)

  • running
  • stopped
  • paused
  • created
  • deleted

注意: 查看docker狀態(tài)使用的命令:

  • docker ps: 查看running狀態(tài)的容器
  • docker ps -a: 查看所有狀態(tài)的容器
  • docker ps -qa: 查看所有容器ID
  • docker stop $(docker ps -qa) : 停止所有容器
  • docker rm $(docker ps -qa) : 刪除所有容器

docker run 命令的使用

常見的選項(xiàng)介紹:

--name : 指定容器名稱
-i : 交互式運(yùn)行和-t一起使用,可以合成-it使用
-t: 允許tty
-e : 設(shè)置容器啟動(dòng)的環(huán)境變量,例如mysql的容器啟動(dòng)需要指定-e MYSQL_ROOT_PASSWORD='12345'
-d: detach,后臺(tái)運(yùn)行
--network: 指定網(wǎng)絡(luò)
--restart: always,
-p: 端口映射
-v: 指定存儲(chǔ)卷
--rm : 運(yùn)行之后刪除,需要與-it配合使用扳还,但是與-d互斥
-m : 限制最大使用內(nèi)存
--oom-kill-disable :禁止oom
--cpus : 限定使用的CPU容量

[root@centos7-node1 ~]# docker run --name redis -d redis:4-alpine

docker exec的使用

常見的選項(xiàng)介紹:

-d : 后臺(tái)運(yùn)行
-e : 指定環(huán)境變量
-it: 交互模式
-u: 指定用戶
-w: 指定工作路徑

[root@centos7-node1 ~]# docker container exec redis netstat -tanlp    #對(duì)容器執(zhí)行命令
[root@centos7-node1 ~]# docker exec -it redis /bin/sh 
/data # redis-cli    #客戶端連接redis
127.0.0.1:6379> set hello my_name_is_wanghui
OK
127.0.0.1:6379> get hello
"my_name_is_wanghui"

容器的啟停

[root@centos7-node1 ~]# docker stop redis     # 未指定存儲(chǔ)卷的情況下,停止容器之后數(shù)據(jù)會(huì)丟失
[root@centos7-node1 ~]# docker start redis

其他實(shí)踐

[root@centos7-node1 ~]# docker image pull nginx:1.18-alpine
[root@centos7-node1 ~]# docker run --name web -it --rm nginx:1.18-alpine /bin/sh      #推出交互模式就自動(dòng)退出并刪除容器
[root@centos7-node1 ~]# docker run --name web -d nginx:1.18-alpine
[root@centos7-node1 ~]# docker container exec web ifconfig    #獲取創(chuàng)建機(jī)器的ip
[root@centos7-node1 ~]# elinks -dump 172.17.0.3                     #訪問頁(yè)面
[root@centos7-node1 ~]# docker logs web -f                              #查看Nginx 滾動(dòng)日志
[root@centos7-node1 ~]# docker stats web                                #查看web這個(gè)容器運(yùn)行時(shí)資源占用情況
[root@centos7-node1 ~]# docker top web                                   #查看web這個(gè)容器的進(jìn)程狀態(tài)
[root@centos7-node1 ~]# docker run --name c2 -it centos:7
[root@f879de456c8d /]# 
[root@f879de456c8d /]# [root@centos7-node1 ~]#     `ctrl+p,ctrl+q進(jìn)入后臺(tái)運(yùn)行`
[root@centos7-node1 ~]# docker ps    #c2是運(yùn)行狀態(tài)的
[root@centos7-node1 ~]# docker attach c2     #進(jìn)入容器

鏡像

簡(jiǎn)介

docker鏡像含有啟動(dòng)容器時(shí)所需要的文件系統(tǒng)及其內(nèi)容,因此购岗,其用于創(chuàng)建并啟動(dòng)容器

  • 采用分層構(gòu)建機(jī)制,最底層為bootfs,其次為rootfs
    • bootfs: 用于系統(tǒng)引導(dǎo)的文件系統(tǒng)门粪,包括bootloader和kernel喊积,容器啟動(dòng)完成后會(huì)被卸載,以此節(jié)約內(nèi)存資源
    • rootfs: 位于bootfs之上玄妈,表現(xiàn)為docker容器的根文件系統(tǒng)
      - 傳統(tǒng)模式中乾吻,在系統(tǒng)啟動(dòng)時(shí)髓梅,內(nèi)核掛載rootfs時(shí)會(huì)首先掛在為只讀模式,完整性比肩完成之后重新掛載為讀寫模式
      - docker中溶弟,rootfs由內(nèi)核掛載為只讀模式女淑,而后通過聯(lián)合掛載技術(shù),額外在掛載一個(gè)可寫層
      image.png

docker鏡像的構(gòu)建方式

  • 位于下層的鏡像稱為父鏡像辜御,最底層的是基礎(chǔ)鏡像
  • 最上層為“可讀寫”層鸭你,其下的均為“只讀”層


    image.png

鏡像存放的graph driver類型(文件系統(tǒng))

特點(diǎn): 分層疊加,寫時(shí)復(fù)制(COW)
此文件系統(tǒng)是建構(gòu)在底層操作系統(tǒng)文件系統(tǒng)之上用于存放鏡像的文件系統(tǒng),建議底層支持操作系統(tǒng)務(wù)必使用xfs文件系統(tǒng)
分類如下:

  • Aufs: 高級(jí)多層統(tǒng)一文件系統(tǒng)
  • Overlay2
  • DeviceMapper(DM)

Aufs

  • 用于為L(zhǎng)inux文件系統(tǒng)實(shí)現(xiàn)聯(lián)合掛載
  • aufs之前是unionFS的重新實(shí)現(xiàn)擒权,2006年由Junjiro Okjima開發(fā)
  • docker最初使用aufs作為容器文件系統(tǒng)層袱巨,目前仍然作為存儲(chǔ)后端之一來支持
  • aufs的競(jìng)品是overlayfs,后者在3.18內(nèi)核之后開始碳抄,被合并到linux內(nèi)核
  • docker的分層鏡像愉老,除了aufs,還支持btfs剖效,devicemapper和vfs等
    • ubuntu下嫉入,docker默認(rèn)的文件系統(tǒng)是aufs,而在cnetos7上璧尸,用的是devicemapper

Docker Registry

  • 啟動(dòng)容器時(shí)咒林,docker daemon會(huì)試圖從本地獲取相關(guān)鏡像,本地鏡像不存在時(shí)爷光,其將從Registry中下載該鏡像并保存到本地


    image.png

docker registry的分類

Registry用于保存docker鏡像垫竞,包括景象的層次結(jié)構(gòu)和元數(shù)據(jù)
用戶可以自建Registry,也可以使用官方的dockerhub

  • 分類如下:
    • Sponsor Restory:第三方的registry蛀序,供客戶和docker社區(qū)使用
    • Mirror Registry:第三方的registry欢瞪,只供客戶使用
    • Vendor Registry: 由發(fā)布Docker鏡像的供應(yīng)商提供的Registry
    • Private Registry:通過舍友防火墻和額外安全層的私有實(shí)體提供的Registry

Docker Registry的組成

  • Repostory

    • 由特定的docker鏡像的所有迭代版本組成的鏡像倉(cāng)庫(kù)
    • 一個(gè)registry可以存在多個(gè)Repostory
      • Registory可以分為頂層倉(cāng)庫(kù)用戶倉(cāng)庫(kù)
      • 用戶倉(cāng)庫(kù)名稱更是為用戶名/倉(cāng)庫(kù)名
    • 每個(gè)倉(cāng)庫(kù)可以包含多個(gè)Tag,每個(gè)Tag只對(duì)應(yīng)一個(gè)鏡像
  • Index: 維護(hù)用戶賬戶徐裸,鏡像的校驗(yàn)以及公共命名空間信息遣鼓,相當(dāng)于為Registry提供了一個(gè)擁護(hù)認(rèn)證和檢索的接口

鏡像的制作 與推送

docker registry中的鏡像由開發(fā)或者運(yùn)維人員制作,而后推送到“公共”或者“私有”Repostry上保存重贺,供其他人使用
例如: 部署到生產(chǎn)環(huán)境

image.png

DockerHub的使用

  • 注冊(cè)DockerHub賬戶
  • 創(chuàng)建myimg倉(cāng)庫(kù)
  • 上傳鏡像到dockerHub的myimg倉(cāng)庫(kù)
[root@centos7-node1]# docker pull busybox:latest
[root@centos7-node1 ~]# docker run --name b1 -it -d busybox /bin/sh
/ # mkdir /data/web/html -p
/ # echo "<h1>this is a test page @busyboxServer</h1>" > /data/web/html/index.html
[root@centos7-node1 ~]# docker container commit b1 wanghui122725501/myimg:v0.1   #另起終端打包鏡像
[root@centos7-node1 ~]# docker images    #查看鏡像
REPOSITORY TAG IMAGE ID CREATED SIZE
wanghui122725501/myimg v0.1 baf6ad6a846f About a minute ago 1.22MB
[root@centos7-node1 ~]# docker run --name mybbox1 -it wanghui122725501/myimg:v0.1    #運(yùn)行容器
/ # ls /data/web/html/     #此文件已被寫入文件系統(tǒng)
[root@centos7-node1 ~]# docker login    #登陸dockerhub
[root@centos7-node1 ~]# docker push wanghui122725501/myimg:v0.1    #推送鏡像
[root@centos7-node1 ~]# docker container commit -p -a "wanghui@yeecall.com" -c "CMD ['/bin/httpd -f -h /data/web/html']" b1 wanghui122725501/myimg:v0.2   #前臺(tái)運(yùn)行httpd
[root@centos7-node1 ~]# docker tag wanghui122725501/myimg:v0.2 wanghui122725501/myimg:latest
[root@centos7-node1 ~]# docker push wanghui122725501/myimg:v0.2             #鏡像推送
-----另起終端譬正,進(jìn)入b1容器
[root@centos7-node1 ~]# docker exec -it b1 sh
/ # /bin/httpd -f -h /data/web/html/                  #執(zhí)行httpd
[root@centos7-node1 ~]# curl 172.17.0.5    #另起終端執(zhí)行
<h1>this is a test page @busyboxServer</h1>
[root@centos7-node1 ~]# docker commit -p -a "wanghui@yeecall.com" -c 'CMD ["/bin/sh","-c","/bin/httpd -f -h /data/web/html"]' b1 wanghui122725501/myimg:v0.4
[root@centos7-node1 ~]# docker run --name mytinyweb2 -d wanghui122725501/myimg:v0.4
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市檬姥,隨后出現(xiàn)的幾起案子曾我,更是在濱河造成了極大的恐慌,老刑警劉巖健民,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抒巢,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡秉犹,警方通過查閱死者的電腦和手機(jī)蛉谜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門稚晚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人型诚,你說我怎么就攤上這事客燕。” “怎么了狰贯?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵也搓,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我涵紊,道長(zhǎng)傍妒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任摸柄,我火速辦了婚禮颤练,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘驱负。我一直安慰自己嗦玖,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布跃脊。 她就那樣靜靜地躺著宇挫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪匾乓。 梳的紋絲不亂的頭發(fā)上捞稿,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天又谋,我揣著相機(jī)與錄音拼缝,去河邊找鬼。 笑死彰亥,一個(gè)胖子當(dāng)著我的面吹牛咧七,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播任斋,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼继阻,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了废酷?” 一聲冷哼從身側(cè)響起瘟檩,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎澈蟆,沒想到半個(gè)月后墨辛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趴俘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年睹簇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奏赘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡太惠,死狀恐怖磨淌,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情凿渊,我是刑警寧澤梁只,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站嗽元,受9級(jí)特大地震影響敛纲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜剂癌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一淤翔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佩谷,春花似錦旁壮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至桐猬,卻和暖如春麦撵,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背溃肪。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工免胃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惫撰。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓羔沙,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親厨钻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扼雏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345