【初識(shí) Docker | 基礎(chǔ)篇】 Docker 常用命令

[圖片上傳失敗...(image-ff8053-1655283244927)]

一述雾、幫助啟動(dòng)類命令

  • [ 查看版本] docker version
  • [ 查看Docker概要信息] docker info
  • [ 查看Docker總體幫助文檔] docker --help
  • [ 查看docker具體命令幫助文檔] docker 具體命令 --help
  • [ 啟動(dòng)Docker] systemctl start docker
  • [ 停止Docker] systemctl stop docker
  • [ 重啟Docker] systemctl restart docker
  • [ 查看狀態(tài)] systemctl status docker
  • [ 開機(jī)啟動(dòng)] systemctl enable docker

二隶债、鏡像命令

1.列出本地主機(jī)上的鏡像

docker images

參數(shù)說明:

-a:列出所有鏡像(含歷史鏡像)
-q:只顯示鏡像ID
-f:過濾

[圖片上傳失敗...(image-eae96c-1655283244927)]
各個(gè)選項(xiàng)說明:

REPOSITORY:表示鏡像的倉庫源
TAG:鏡像的標(biāo)簽版本號(hào)
IMAGE ID:鏡像ID
CREATED:鏡像創(chuàng)建時(shí)間
SIZE:鏡像大小

2.在遠(yuǎn)程倉庫中搜索鏡像

執(zhí)行命令,默認(rèn)去docker hub中搜索

docker search 鏡像名稱

參數(shù)說明:

-f:過濾
--limit 數(shù)量:只列出N個(gè)鏡像备典,默認(rèn)25個(gè)

[圖片上傳失敗...(image-323cd0-1655283244927)]

參數(shù) 說明
NAME 鏡像名稱
DESCRIPTION 鏡像說明
STARS 點(diǎn)贊數(shù)量
OFFICIAL 是否是官方的
AUTOMATED 是否是自動(dòng)構(gòu)建的

3.下載鏡像

docker pull 鏡像名稱[:tag]

不加 tag 時(shí)专筷,默認(rèn)下載最新的鏡像(即tag為latest)。

4.查看占據(jù)的空間

查看鏡像/容器/數(shù)據(jù)卷所占的空間:

docker system df

[圖片上傳失敗...(image-7b6c25-1655283244927)]

5.刪除鏡像

docker rmi 鏡像名稱/ID

可以使用空格分隔,刪除多個(gè)鏡像:

docker rmi 鏡像1 鏡像2 鏡像3

刪除全部鏡像:

docker rmi -f ${docker images -qa}

6.虛懸鏡像

倉庫名闷旧、標(biāo)簽都是<none>的鏡像,俗稱虛懸鏡像(dangling image)钧唐。

三忙灼、容器命令

1.新建+啟動(dòng)容器

新建容器,需要先下載鏡像docker pull ubuntu钝侠。

執(zhí)行命令 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

參數(shù)【OPTIONS】說明:

  • --name:為容器指定一個(gè)名稱
  • -d:后臺(tái)運(yùn)行容器并返回容器ID该园,也即啟動(dòng)守護(hù)式容器
  • -i:以交互模式(interactive)運(yùn)行容器腊尚,通常與-t同時(shí)使用
  • -t:為容器重新分配一個(gè)偽輸入終端(tty)呼畸,通常與-i同時(shí)使用。也即啟動(dòng)交互式容器(前臺(tái)有偽終端煌茴,等待交互)
  • -e:為容器添加環(huán)境變量
  • -P:隨機(jī)端口映射忽舟。將容器內(nèi)暴露的所有端口映射到宿主機(jī)隨機(jī)端口
  • -p:指定端口映射

-p指定端口映射的幾種不同形式

  • -p hostPort:containerPort:端口映射双妨,例如-p 8080:80
  • -p ip:hostPort:containerPort:配置監(jiān)聽地址,例如 -p 10.0.0.1:8080:80
  • -p ip::containerPort:隨機(jī)分配端口叮阅,例如 -p 10.0.0.1::80
  • -p hostPort1:containerPort1 -p hostPort2:containerPort2:指定多個(gè)端口映射斥难,例如-p 8080:80 -p 8888:3306

2.啟動(dòng)交互式容器(前臺(tái)命令行)

執(zhí)行命令,以交互方式啟動(dòng)ubuntu鏡像

docker run -it ubuntu /bin/bash

參數(shù)說明:

-i: 交互式操作帘饶。
-t: 終端哑诊。
ubuntu : ubuntu 鏡像。
/bin/bash:放在鏡像名后的是命令及刻,這里我們希望有個(gè)交互式 Shell镀裤,因此用的是 /bin/bash。
要退出終端缴饭,直接輸入 exit:

兩種方式退出交互模式

  1. exit; run進(jìn)去容器暑劝,exit退出,容器停止
  2. 使用快捷鍵ctrl + P + Q run進(jìn)去容器颗搂,ctrl+p+q退出担猛,容器不停止

3.列出當(dāng)前所有正在運(yùn)行的容器

docker ps [OPTIONS]

[圖片上傳失敗...(image-bf56a-1655283244927)]

常用參數(shù)說明:

-a:列出當(dāng)前所有正在運(yùn)行的容器+歷史上運(yùn)行過的
-l:顯示最近創(chuàng)建的容器。
-n:顯示最近n個(gè)創(chuàng)建的容器丢氢。
-q:靜默模式傅联,只顯示容器編號(hào)。

4.啟動(dòng)守護(hù)式容器

大部分情況下疚察,我們系統(tǒng)docker容器服務(wù)是在后臺(tái)運(yùn)行的蒸走,可以通過-d指定容器的后臺(tái)運(yùn)行模式:

docker run -d 容器名

注意事項(xiàng):
如果使用docker run -d ubuntu嘗試啟動(dòng)守護(hù)式的ubuntu,然后docker ps -a 進(jìn)行查看, 會(huì)發(fā)現(xiàn)容器已經(jīng)退出了貌嫡。

因?yàn)镈ocker容器如果在后臺(tái)運(yùn)行比驻,就必須要有一個(gè)前臺(tái)進(jìn)程该溯。容器運(yùn)行的命令如果不是那些一直掛起的命令(例如toptail)别惦,就會(huì)自動(dòng)退出狈茉。

這個(gè)是docker的機(jī)制問題。比如你的web容器掸掸,我們以nginx為例氯庆,正常情況下,我們配置啟動(dòng)服務(wù)只需要啟動(dòng)響應(yīng)的service即可。例如service nginx start
但是這樣做猾漫,nginx為后臺(tái)進(jìn)程模式運(yùn)行,就導(dǎo)致docker前臺(tái)沒有運(yùn)行的應(yīng)用感凤,這樣的容器后臺(tái)啟動(dòng)后悯周,會(huì)立即自殺因?yàn)樗X得他沒事可做了。所以最佳的解決方案是陪竿,將你要運(yùn)行的程序以前臺(tái)進(jìn)程的形式運(yùn)行禽翼,常見就是命令行模式,表示還有交互操作族跛。

5.容器和宿主機(jī)文件拷貝

容器內(nèi)文件拷貝到宿主機(jī):

docker cp 容器ID:容器內(nèi)路徑 目的主機(jī)路徑

宿主機(jī)文件拷貝到容器中:

docker cp 主機(jī)路徑 容器ID:容器內(nèi)路徑

6.導(dǎo)入和導(dǎo)出容器

export:導(dǎo)出容器的內(nèi)容流作為一個(gè)tar歸檔文件(對(duì)應(yīng)import命令)闰挡;

import:從tar包中的內(nèi)容創(chuàng)建一個(gè)新的文件系統(tǒng)再導(dǎo)入為鏡像(對(duì)應(yīng)export命令);

示例:

# 導(dǎo)出
# docker export 容器ID > tar文件名
docker export abc > aaa.tar

# 導(dǎo)入
# cat tar文件 | docker import - 自定義鏡像用戶/自定義鏡像名:自定義鏡像版本號(hào)
docker aaa.tar | docker import - test/mytest:1.0.1

7.將容器生成新鏡像

docker commit提交容器副本使之成為一個(gè)新的鏡像礁哄。

docker 啟動(dòng)一個(gè)鏡像容器后长酗, 可以在里面執(zhí)行一些命令操作,然后使用docker commit將新的這個(gè)容器快照生成一個(gè)鏡像桐绒。

docker commit -m="提交的描述信息" -a="作者" 容器ID 要?jiǎng)?chuàng)建的目標(biāo)鏡像名:[tag]

Docker掛載主機(jī)目錄夺脾,可能會(huì)出現(xiàn)報(bào)錯(cuò):cannot open directory .: Perission denied。

解決方案:在命令中加入?yún)?shù) --privileged=true茉继。

CentOS7安全模塊比之前系統(tǒng)版本加強(qiáng)咧叭,不安全的會(huì)先禁止,目錄掛載的情況被默認(rèn)為不安全的行為烁竭,在SELinux里面掛載目錄被禁止掉了菲茬。如果要開啟,一般使用 --privileged=true派撕,擴(kuò)大容器的權(quán)限解決掛載沒有權(quán)限的問題婉弹。也即使用該參數(shù),容器內(nèi)的root才擁有真正的root權(quán)限终吼,否則容器內(nèi)的root只是外部的一個(gè)普通用戶權(quán)限马胧。

8.將容器生成新鏡像

卷就是目錄或文件,存在于一個(gè)或多個(gè)容器中衔峰,由docker掛載到容器佩脊,但不屬于聯(lián)合文件系統(tǒng)蛙粘,因此能夠繞過UnionFS,提供一些用于持續(xù)存儲(chǔ)或共享數(shù)據(jù)威彰。

特性:卷設(shè)計(jì)的目的就是數(shù)據(jù)的持久化出牧,完全獨(dú)立于容器的生存周期,因此Docker不會(huì)在容器刪除時(shí)刪除其掛載的數(shù)據(jù)卷歇盼。

特點(diǎn):

  • 數(shù)據(jù)卷可以在容器之間共享或重用數(shù)據(jù)
  • 卷中的更改可以直接實(shí)施生效
  • 數(shù)據(jù)卷中的更改不會(huì)包含在鏡像的更新中
  • 數(shù)據(jù)卷的生命周期一直持續(xù)到?jīng)]有容器使用它為止

運(yùn)行一個(gè)帶有容器卷存儲(chǔ)功能的容器實(shí)例:

docker run -it --privileged=true -v 宿主機(jī)絕對(duì)路徑目錄:容器內(nèi)目錄[rw | ro] 鏡像名

可以使用docker inspect查看容器綁定的數(shù)據(jù)卷舔痕。

權(quán)限:

  • rw:讀寫
  • ro:只讀。如果宿主機(jī)寫入內(nèi)容豹缀,可以同步給容器內(nèi)伯复,容器內(nèi)可以讀取。

容器卷的繼承:

# 啟動(dòng)一個(gè)容器
docker run -it --privileged=true /tmp/test:/tmp/docker --name u1 ubuntu /bin/bash

# 使用 --volumes-from 繼承 u1的容器卷映射配置
docker run -it --privileged=true --volumes-from u1 --name u2 ubuntu

9.其他命令

  • [ 啟動(dòng)已停止運(yùn)行的容器] docker start 容器ID或者容器名
  • [ 重啟容器] docker restart 容器ID或容器名
  • [ 停止容器] docker stop 容器ID或容器名
  • [ 強(qiáng)制停止容器] docker kill 容器ID或容器名
  • [ 刪除已經(jīng)停止的容器] docker rm 容器ID或容器名
  • [ 強(qiáng)制刪除正在運(yùn)行的容器] docker rm -f 容器ID或容器名
  • [ 一次刪除多個(gè)容器實(shí)例] docker rm -f ${docker ps -a -q} 或者docker ps -a -q | xargs docker rm
  • [ 查看容器日志] docker logs 容器ID或容器名
  • [ 查看容器內(nèi)部細(xì)節(jié)] docker inspect 容器ID或容器名
  • [ 進(jìn)入正在運(yùn)行的容器] docker exec -it 容器ID bashShell
  • [ 重新進(jìn)入] docker attach 容器ID

docker execdocker attach 區(qū)別

  • attach直接進(jìn)入容器啟動(dòng)命令的終端邢笙,不會(huì)啟動(dòng)新的進(jìn)程啸如,用exit退出會(huì)導(dǎo)致容器的停止
  • exec是在容器中打開新的終端,并且可以啟動(dòng)新的進(jìn)程氮惯,用exit退出不會(huì)導(dǎo)致容器的停止

如果有多個(gè)終端叮雳,都對(duì)同一個(gè)容器執(zhí)行了 docker attach,就會(huì)出現(xiàn)類似投屏顯示的效果妇汗。一個(gè)終端中輸入輸出的內(nèi)容帘不,在其他終端上也會(huì)同步的顯示。


總結(jié)

以上就是 【初識(shí) Docker | 基礎(chǔ)篇】 Docker 常用命令 的全部內(nèi)容啦杨箭!

創(chuàng)作不易寞焙,關(guān)注??、點(diǎn)贊??互婿、收藏??就是對(duì)作者最大的鼓勵(lì)??棺弊,歡迎在下方評(píng)論留言??

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市擒悬,隨后出現(xiàn)的幾起案子模她,更是在濱河造成了極大的恐慌,老刑警劉巖懂牧,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侈净,死亡現(xiàn)場離奇詭異,居然都是意外死亡僧凤,警方通過查閱死者的電腦和手機(jī)畜侦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來躯保,“玉大人旋膳,你說我怎么就攤上這事⊥臼拢” “怎么了验懊?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵擅羞,是天一觀的道長。 經(jīng)常有香客問我义图,道長减俏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任碱工,我火速辦了婚禮娃承,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘怕篷。我一直安慰自己历筝,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布廊谓。 她就那樣靜靜地躺著梳猪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蹂析。 梳的紋絲不亂的頭發(fā)上舔示,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天碟婆,我揣著相機(jī)與錄音电抚,去河邊找鬼。 笑死竖共,一個(gè)胖子當(dāng)著我的面吹牛蝙叛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播公给,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼借帘,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了淌铐?” 一聲冷哼從身側(cè)響起肺然,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎腿准,沒想到半個(gè)月后际起,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吐葱,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年街望,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弟跑。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡灾前,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出孟辑,到底是詐尸還是另有隱情哎甲,我是刑警寧澤蔫敲,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站烧给,受9級(jí)特大地震影響燕偶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜础嫡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一指么、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧榴鼎,春花似錦伯诬、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至平项,卻和暖如春赫舒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背闽瓢。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工接癌, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扣讼。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓缺猛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親椭符。 傳聞我的和親對(duì)象是個(gè)殘疾皇子荔燎,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容