從入門(mén)到實(shí)戰(zhàn)詳解Docker中的常用命令
前言
剛開(kāi)始學(xué) Docker 的時(shí)候,最容易遇到的一個(gè)問(wèn)題就是:命令看著很多,但真正上手時(shí)總是記不住,或者一不小心就把鏡像和容器的命令混了。
我這兩天在整理自己練習(xí) Docker 命令時(shí)用到的內(nèi)容,順手把它改成一篇適合分享的學(xué)習(xí)筆記。本文不講太多抽象概念,重點(diǎn)放在平時(shí)最常用、最容易碰到的 Docker 命令上,同時(shí)補(bǔ)充一些實(shí)戰(zhàn)里很常見(jiàn)的報(bào)錯(cuò)和使用場(chǎng)景。
如果你也是剛接觸 Docker,這篇文章可以直接當(dāng)成一份入門(mén)命令手冊(cè)來(lái)看。
一、先搞清楚兩個(gè)核心概念
在記命令之前,先把兩個(gè)概念分清楚:
- 鏡像(Image):可以理解成模板
- 容器(Container):可以理解成鏡像運(yùn)行起來(lái)后的實(shí)例
說(shuō)得直白一點(diǎn):
docker images是看“模板”docker run是用“模板”創(chuàng)建并啟動(dòng)“實(shí)例”docker ps是看“實(shí)例”現(xiàn)在有沒(méi)有在運(yùn)行
只要這層關(guān)系不亂,后面的命令就會(huì)順很多。
二、Docker 使用前的準(zhǔn)備命令
啟動(dòng) Docker 服務(wù)
systemctl start docker
這個(gè)命令不是 Docker 子命令,而是 Linux 系統(tǒng)命令。它的作用是啟動(dòng) Docker 服務(wù)。
如果 Docker 服務(wù)沒(méi)有啟動(dòng),你在執(zhí)行 docker images、docker ps 這類(lèi)命令時(shí),往往會(huì)看到下面這個(gè)錯(cuò)誤:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock
這個(gè)報(bào)錯(cuò)的重點(diǎn)不是命令寫(xiě)錯(cuò)了,而是 Docker 后臺(tái)服務(wù)沒(méi)起來(lái)。所以遇到這個(gè)錯(cuò)誤,優(yōu)先檢查 Docker 服務(wù)狀態(tài)。
三、鏡像相關(guān)的常用命令
鏡像相關(guān)命令建議放在前面記,因?yàn)楹芏嗖僮鞫家獜溺R像開(kāi)始。
1. 查看本地鏡像
docker images
作用:查看當(dāng)前機(jī)器上已經(jīng)下載好的鏡像。
常見(jiàn)輸出字段含義如下:
REPOSITORY:鏡像名TAG:版本標(biāo)簽IMAGE ID:鏡像 IDCREATED:創(chuàng)建時(shí)間SIZE:鏡像大小
比如下面這些都屬于鏡像名稱:
nginx:1.20.2 mysql:8 redis:7
這里要注意,鏡像名和版本之間用的是 :,不是 -。
2. 拉取鏡像
docker pull redis:7
作用:從 Docker 倉(cāng)庫(kù)把鏡像下載到本地。
如果本地沒(méi)有某個(gè)鏡像,直接 docker run 時(shí) Docker 也可能自動(dòng)去拉取,但在學(xué)習(xí)階段,我更建議先手動(dòng)執(zhí)行 docker pull,這樣思路更清晰。
3. 刪除本地鏡像
docker rmi nginx:1.20.2
作用:刪除本地鏡像。
這個(gè)命令一般在以下場(chǎng)景比較常見(jiàn):
- 鏡像拉錯(cuò)版本了
- 本地磁盤(pán)空間緊張
- 需要清理不再使用的鏡像
4. 導(dǎo)出鏡像
docker save -o nginx-1.20.2.tar nginx:1.20.2
作用:把鏡像導(dǎo)出成一個(gè) tar 文件,便于備份或者拷貝到其他機(jī)器。
這個(gè)命令里有兩個(gè)容易出錯(cuò)的點(diǎn):
- 子命令必須是
save - 鏡像名必須寫(xiě)成
鏡像名:標(biāo)簽
也就是說(shuō),下面這種寫(xiě)法是錯(cuò)的:
docker save -o nginx-1.20.2.tar nginx-1.20.2
錯(cuò)因就在于把 nginx:1.20.2 寫(xiě)成了 nginx-1.20.2。
5. 導(dǎo)入鏡像
docker load -i nginx-1.20.2.tar
作用:把之前導(dǎo)出的鏡像文件重新導(dǎo)入 Docker。
這個(gè)命令通常和 docker save 配套使用,尤其適合離線環(huán)境或者需要跨機(jī)器傳鏡像的場(chǎng)景。
四、容器相關(guān)的常用命令
相比鏡像,容器命令在日常使用中更高頻,因?yàn)槲覀兤綍r(shí)真正操作的大多是“運(yùn)行起來(lái)的容器”。
1. 創(chuàng)建并運(yùn)行容器
docker run nginx:1.20.2
作用:基于指定鏡像創(chuàng)建并啟動(dòng)一個(gè)容器。
如果你只寫(xiě):
docker run
那肯定會(huì)報(bào)錯(cuò),因?yàn)?run 后面至少要跟一個(gè)鏡像名。
2. 后臺(tái)運(yùn)行容器并指定名稱和端口
docker run -d --name nginx -p 80:80 nginx:1.20.2
這是非常常用的一條命令,建議重點(diǎn)記住。
參數(shù)說(shuō)明:
-d:后臺(tái)運(yùn)行--name nginx:給容器起一個(gè)名字-p 80:80:端口映射
其中端口映射格式是:
-p 宿主機(jī)端口:容器端口
也就是說(shuō),上面的 -p 80:80 表示訪問(wèn)宿主機(jī)的 80 端口,本質(zhì)上是在訪問(wèn)容器里的 80 端口。
3. 查看正在運(yùn)行的容器
docker ps
作用:查看當(dāng)前正在運(yùn)行的容器。
這個(gè)命令適合用來(lái)快速判斷:
- 容器有沒(méi)有啟動(dòng)成功
- 當(dāng)前有哪些容器正在跑
- 容器暴露了哪些端口
4. 查看所有容器
docker ps -a
作用:查看所有容器,包括正在運(yùn)行的和已經(jīng)停止的。
這個(gè)命令特別實(shí)用。因?yàn)楹芏鄷r(shí)候不是容器“沒(méi)了”,而是容器“停了”。如果你只看 docker ps,可能會(huì)誤以為容器不存在。
5. 停止容器
docker stop nginx
作用:停止一個(gè)正在運(yùn)行的容器。
要注意,停止容器不代表刪除容器,它只是從“運(yùn)行中”變成了“已停止”。
6. 啟動(dòng)已停止的容器
docker start nginx
作用:重新啟動(dòng)一個(gè)已經(jīng)存在但當(dāng)前處于停止?fàn)顟B(tài)的容器。
這里很多初學(xué)者容易把 run 和 start 混掉,實(shí)際上它們的區(qū)別很清楚:
docker run:創(chuàng)建并啟動(dòng)容器docker start:?jiǎn)?dòng)已有容器
7. 重啟容器
docker restart nginx
作用:重啟容器。
這個(gè)命令在修改配置、重載服務(wù)或者排查臨時(shí)問(wèn)題時(shí)很常見(jiàn),屬于日常維護(hù)中的高頻命令。
8. 查看容器日志
docker logs nginx
作用:查看容器運(yùn)行日志。
如果想持續(xù)跟蹤日志,可以這樣寫(xiě):
docker logs -f nginx
很多問(wèn)題,比如 Nginx 啟動(dòng)失敗、Spring Boot 容器報(bào)錯(cuò)、端口沖突等,第一時(shí)間都應(yīng)該先去看日志。
9. 進(jìn)入容器內(nèi)部
docker exec -it nginx bash
作用:進(jìn)入正在運(yùn)行的容器,并打開(kāi)一個(gè)交互式終端。
參數(shù)說(shuō)明:
exec:在容器內(nèi)執(zhí)行命令-i:保持標(biāo)準(zhǔn)輸入開(kāi)啟-t:分配終端bash:進(jìn)入 bash 環(huán)境
不過(guò)并不是所有鏡像里都有 bash。如果沒(méi)有,可以改成:
docker exec -it nginx sh
這個(gè)命令在排查容器內(nèi)文件、查看配置、手動(dòng)測(cè)試服務(wù)時(shí)特別有用。
10. 查看容器詳細(xì)信息
docker inspect nginx
作用:查看容器的詳細(xì)配置。
常見(jiàn)能看到的信息包括:
- 容器 IP
- 端口映射
- 掛載目錄
- 啟動(dòng)參數(shù)
- 網(wǎng)絡(luò)信息
如果你在查“容器到底映射到哪個(gè)端口了”“文件到底掛載到哪里了”,inspect 非常有幫助。
11. 宿主機(jī)和容器之間復(fù)制文件
docker cp nginx:/etc/nginx/nginx.conf .
作用:把容器里的文件復(fù)制到宿主機(jī)。
反過(guò)來(lái)也可以把宿主機(jī)文件復(fù)制進(jìn)容器,這在調(diào)試配置文件時(shí)很常見(jiàn)。
12. 查看資源占用
docker stats
作用:實(shí)時(shí)查看容器的 CPU、內(nèi)存、網(wǎng)絡(luò)等資源占用情況。
如果你發(fā)現(xiàn)某個(gè)容器特別卡,或者懷疑內(nèi)存吃得太多,可以先用這個(gè)命令看一眼。
13. 刪除容器
docker rm -f nginx
作用:強(qiáng)制刪除容器。
參數(shù)說(shuō)明:
rm:刪除容器-f:如果容器還在運(yùn)行,就先停掉再刪除
這個(gè)命令適合做快速清理,但在正式環(huán)境里還是建議先確認(rèn)再刪,避免誤操作。
五、用一條主線把命令串起來(lái)
如果只是一條一條背命令,其實(shí)很容易忘。更好的方式是按操作流程去記:
1. 先確認(rèn) Docker 服務(wù)正常
systemctl start docker
2. 查看本地有沒(méi)有需要的鏡像
docker images
3. 如果沒(méi)有,就先拉取鏡像
docker pull nginx:1.20.2
4. 基于鏡像啟動(dòng)容器
docker run -d --name nginx -p 80:80 nginx:1.20.2
5. 查看容器是否正常運(yùn)行
docker ps docker ps -a
6. 需要排錯(cuò)時(shí)看日志、進(jìn)容器
docker logs -f nginx docker exec -it nginx bash
7. 需要暫停、恢復(fù)或重啟時(shí)執(zhí)行控制命令
docker stop nginx docker start nginx docker restart nginx
8. 最后做清理或者備份
docker rm -f nginx docker save -o nginx.tar nginx:1.20.2 docker load -i nginx.tar
這樣記憶就不是一堆零散命令,而是一條完整的 Docker 使用流程。
六、初學(xué)者最容易踩的幾個(gè)坑
1. Docker 服務(wù)沒(méi)啟動(dòng)
錯(cuò)誤信息:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock
解決方式:
systemctl start docker
2. 命令拼寫(xiě)錯(cuò)誤
錯(cuò)誤寫(xiě)法:
docker iamges
正確寫(xiě)法:
docker images
這類(lèi)錯(cuò)誤看起來(lái)很小,但在剛開(kāi)始練命令的時(shí)候特別常見(jiàn)。
3. 把鏡像名和版本標(biāo)簽寫(xiě)錯(cuò)
錯(cuò)誤寫(xiě)法:
docker save -o nginx-1.20.2.tar nginx-1.20.2
正確寫(xiě)法:
docker save -o nginx-1.20.2.tar nginx:1.20.2
記住一點(diǎn)就行:鏡像版本前面用的是冒號(hào) :。
4. 少寫(xiě)了子命令
錯(cuò)誤寫(xiě)法:
docker -o nginx-1.20.2.tar nginx:1.20.2
正確寫(xiě)法:
docker save -o nginx-1.20.2.tar nginx:1.20.2
因?yàn)?-o 是 docker save 的參數(shù),不是 docker 根命令的參數(shù)。
七、Docker 常用命令速記版
如果你是為了復(fù)習(xí)或者考試前快速過(guò)一遍,可以直接記下面這組:
systemctl start docker docker images docker pull nginx:1.20.2 docker run -d --name nginx -p 80:80 nginx:1.20.2 docker ps docker ps -a docker stop nginx docker start nginx docker restart nginx docker logs -f nginx docker exec -it nginx bash docker inspect nginx docker cp nginx:/etc/nginx/nginx.conf . docker stats docker rm -f nginx docker rmi nginx:1.20.2 docker save -o nginx.tar nginx:1.20.2 docker load -i nginx.tar
八、結(jié)語(yǔ)
Docker 命令剛開(kāi)始看起來(lái)很多,但真正常用的其實(shí)就集中在幾類(lèi):
- 鏡像管理
- 容器創(chuàng)建與運(yùn)行
- 容器狀態(tài)查看
- 日志與排錯(cuò)
- 清理與備份
我的建議是,不要只死記命令本身,而是按照“鏡像 -> 容器 -> 查看狀態(tài) -> 進(jìn)入排查 -> 清理備份”這條主線去記。這樣學(xué)起來(lái)會(huì)更順,也更接近真實(shí)開(kāi)發(fā)和部署時(shí)的使用方式。
如果你剛開(kāi)始學(xué) Docker,可以先把本文里的 run、ps、logs、exec、rm 這幾條命令練熟,后面再補(bǔ) save、load、inspect、stats 這些命令,效果會(huì)更好。
以上就是從入門(mén)到實(shí)戰(zhàn)詳解Docker中的常用命令的詳細(xì)內(nèi)容,更多關(guān)于Docker常用命令的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 一文系統(tǒng)梳理Docker中容器的常用命令
- 2026年Docker常用命令及示例代碼大全
- Docker核心知識(shí)點(diǎn)和常用指令(命令)速通
- Docker啟動(dòng)常用容器命令及配置詳細(xì)說(shuō)明
- 2026年Docker常用命令速查表(收藏這一篇就夠了)
- Docker 安裝與常用命令實(shí)戰(zhàn)示例(超詳細(xì)版)
- 常用Docker命令總結(jié)大全
- Docker常用命令之拉取鏡像運(yùn)行鏡像詳解
- 服務(wù)器上使用 Docker 的常用命令清單完整流程
- Docker?Compose最常用命令(直接復(fù)制用)
- 從入門(mén)到實(shí)戰(zhàn)全面解析Docker鏡像常用命令
- Docker 命令使用說(shuō)明及常用組合命令示例
相關(guān)文章
Docker Push常見(jiàn)報(bào)錯(cuò)及解決方案總結(jié)
這篇文章主要介紹了Docker Push常見(jiàn)報(bào)錯(cuò)及解決方案,包括HTTP響應(yīng)、insecure-registries配置、Registry使用HTTPS以及connection refused問(wèn)題的詳細(xì)分析和解決方法,需要的朋友可以參考下2026-03-03
Docker安裝部署RabbitMQ的實(shí)現(xiàn)步驟
RabbitMQ是一款開(kāi)源的消息隊(duì)列中間件,能夠在分布式系統(tǒng)中實(shí)現(xiàn)可靠的消息傳遞,本文主要介紹了Docker安裝部署RabbitMQ的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
解決Docker刪除鏡像報(bào)錯(cuò):Error response from daemon:con
刪除Docker鏡像時(shí)遇到?jīng)_突,因?yàn)殓R像正在被一個(gè)運(yùn)行中的容器使用,解決方法是先停止并刪除該容器,然后再嘗試刪除鏡像,此外,還可以選擇強(qiáng)制刪除鏡像,但這可能會(huì)導(dǎo)致數(shù)據(jù)丟失2024-11-11
Docker學(xué)習(xí)筆記之Docker部署Java web系統(tǒng)
這篇文章主要介紹了Docker學(xué)習(xí)筆記之Docker部署Java web系統(tǒng),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
Docker跨主機(jī)容器通信overlay實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了Docker跨主機(jī)容器通信overlay實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Docker動(dòng)態(tài)添加端口不需要重新建立鏡像的方法
Docker容器在運(yùn)行期間有時(shí)可能會(huì)需要修改或者添加暴露的端口,但是有時(shí)候運(yùn)行的容器又不想再另外建立一個(gè)新的鏡像。接下來(lái)通過(guò)本文給大家分享Docker動(dòng)態(tài)添加端口不需要重新建立鏡像的方法,感興趣的朋友一起看看吧2019-07-07
Docker報(bào)錯(cuò)denied:requested access to the r
這篇文章主要為大家介紹了Docker報(bào)錯(cuò)denied:requested access to the resource is denied解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Docker部署Minio集群的實(shí)現(xiàn)步驟
本文介紹 Docker Compose 部署 Minio 集群的方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2026-05-05

