[圖片上傳失敗...(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:
兩種方式退出交互模式:
-
exit;
run進(jìn)去容器暑劝,exit退出,容器停止 - 使用快捷鍵
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)行的命令如果不是那些一直掛起的命令(例如top
、tail
)别惦,就會(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 exec
和 docker 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)論留言??