20 個 Docker 基本命令,讓你成為更好的開發(fā)者
Docker 已成為現(xiàn)代開發(fā)和運(yùn)維流程中的核心工具。無論是在開發(fā)、測試,還是生產(chǎn)環(huán)境,熟練掌握 Docker 命令可以極大提升開發(fā)效率,幫助你高效管理容器化應(yīng)用。本文將介紹 20 個常用的 Docker 命令,讓你成為容器管理的高手。
1. docker run —— 啟動容器
docker run 是 Docker 中最常用的命令之一,用于從鏡像啟動一個新容器。你可以通過不同的選項(xiàng)自定義容器的行為。
docker run -it ubuntu bash
常用選項(xiàng):
- -it :以交互模式啟動容器,并連接到終端。
- --name :為容器指定一個自定義名稱,方便管理。
- -d :以后臺(分離)模式運(yùn)行容器,適合生產(chǎn)環(huán)境。
實(shí)戰(zhàn)案例:
啟動一個 Ubuntu 容器并進(jìn)入 Bash 終端,執(zhí)行交互式命令。
2. docker ps —— 查看容器狀態(tài)
- docker ps:列出當(dāng)前正在運(yùn)行的容器。
- docker ps -a:列出所有容器,包括已停止的容器。
docker ps -a
用途:
- docker ps 適用于查看當(dāng)前正在運(yùn)行的容器。
- docker ps -a 則可以查看所有容器,包括歷史記錄,方便調(diào)試和管理。
3. docker images —— 查看本地鏡像
此命令列出當(dāng)前 Docker 主機(jī)上存儲的所有鏡像。
docker images
用途:
- 顯示鏡像的名稱、標(biāo)簽、ID 和創(chuàng)建時間。
- 使用 docker image prune 可以清理未使用的鏡像,釋放磁盤空間。
4. docker pull —— 下載鏡像
docker pull 用于從 Docker Hub 或私有鏡像倉庫下載鏡像。
docker pull nginx
用途:
- 下載官方鏡像或自定義鏡像,支持 Docker Hub 和私有倉庫。
5. docker build —— 從 Dockerfile 構(gòu)建鏡像
使用 docker build 命令,根據(jù) Dockerfile 文件構(gòu)建鏡像。
docker build -t my-app .
示例 Dockerfile 配置:
FROM node:14
WORKDIR /app
COPY . .
RUN npm install
CMD ["node", "server.js"]
EXPOSE 3000
用途:
- 通過編寫 Dockerfile 定義應(yīng)用環(huán)境和構(gòu)建步驟,使用 docker build 構(gòu)建鏡像。
6. docker exec —— 在容器內(nèi)執(zhí)行命令
使用 docker exec 在運(yùn)行中的容器內(nèi)執(zhí)行命令。
docker exec -it container_id bash
用途:
- 進(jìn)入容器并執(zhí)行命令,適合調(diào)試和交互式操作。
7. docker stop/start/restart —— 啟動與停止容器
說明:
- docker stop:停止一個運(yùn)行中的容器。
- docker start:啟動已停止的容器。
- docker restart:啟動已停止的容器。
docker stop container_id
docker start container_id
docker restart container_id
用途:
- docker stop 用于停止容器,docker start 則用于重啟已停止的容器,適合在開發(fā)過程中頻繁操作。
8. docker rm —— 刪除容器
刪除已停止的容器以釋放資源。
docker rm container_id
用途:
- 刪除不再需要的容器,保持系統(tǒng)清潔。使用 docker rm -f container_id 可以強(qiáng)制刪除正在運(yùn)行的容器。
9. docker rmi —— 刪除鏡像
刪除本地鏡像,釋放存儲空間。
docker rmi image_id
用途:
- 清理不再使用的鏡像,避免浪費(fèi)磁盤空間。
10. docker logs —— 查看容器日志
查看容器的輸出日志,幫助調(diào)試應(yīng)用。
docker logs container_id
用途:
- 通過容器日志查看運(yùn)行錯誤和狀態(tài),快速定位問題。
11. docker network ls —— 查看網(wǎng)絡(luò)配置
列出 Docker 主機(jī)上的所有網(wǎng)絡(luò)。
docker network ls
用途:
- 管理容器之間的網(wǎng)絡(luò)通信,幫助你查看和管理 Docker 網(wǎng)絡(luò)配置。
12. docker-compose up/down —— 管理多容器應(yīng)用
docker-compose 是管理和啟動多個容器應(yīng)用的工具。
docker compose up -d
docker compose down
docker-compose.yml 示例配置:
services:
web:
image:nginx
ports:
-"8080:80"
app:
build:.
volumes:
-.:/app
ports:
-"3000:3000"
用途:
- docker-compose 是處理多容器應(yīng)用的利器,docker-compose up 啟動所有容器,docker-compose down 停止并刪除容器。
13. docker volume ls —— 查看卷
列出所有數(shù)據(jù)卷,這些卷用于存儲容器的數(shù)據(jù)。
docker volume ls
用途:
- 管理和查看容器的數(shù)據(jù)存儲,保證數(shù)據(jù)的持久性。
14. docker inspect —— 查看容器或鏡像的詳細(xì)信息
獲取容器或鏡像的詳細(xì)配置信息,幫助調(diào)試和故障排除。
docker inspect container_id
用途:
- 深入分析容器或鏡像的配置,查找問題的根源。
15. docker stats —— 查看容器的實(shí)時資源使用
實(shí)時查看所有運(yùn)行中的容器的 CPU、內(nèi)存、網(wǎng)絡(luò)等資源使用情況。
docker stats
用途:
- 監(jiān)控容器資源消耗,幫助優(yōu)化性能和資源分配。
16. docker update —— 動態(tài)更新容器資源限制
在不重啟容器的情況下調(diào)整容器的資源限制。
docker update --cpus 2 --memory 1g <container_name>
用途:
- 根據(jù)需要動態(tài)調(diào)整容器的資源,幫助提升容器性能。
17. docker commit —— 創(chuàng)建鏡像
docker commit 命令允許你將容器的當(dāng)前狀態(tài)保存為一個新的鏡像。適用于在容器中進(jìn)行配置更改或安裝軟件后生成鏡像。
docker commit container_id new_image_name
用途:
- 將容器的當(dāng)前狀態(tài)保存為一個鏡像,方便以后重新部署相同環(huán)境。
18. docker cp —— 復(fù)制文件或目錄
docker cp 用于在容器和主機(jī)之間復(fù)制文件或目錄。
docker cp container_id:/path/to/file /path/on/host
用途:
- 復(fù)制容器內(nèi)部的文件到主機(jī),或者將主機(jī)文件復(fù)制到容器中,適合快速文件傳輸。
19. docker save —— 保存鏡像為 tar 包
docker save 將鏡像保存為 tar 包,方便鏡像的備份和傳輸。
docker save -o my_image.tar image_name
用途:
- 將鏡像保存為 tar 文件,便于傳輸和備份??梢酝ㄟ^ docker load 恢復(fù)鏡像。
20. docker load —— 從 tar 包加載鏡像
docker load 用于從 tar 包中加載鏡像,恢復(fù)已保存的鏡像。
docker load -i my_image.tar
用途:
- 恢復(fù)通過 docker save 保存的鏡像文件,適合離線部署和備份恢復(fù)。
其他建議
- 定期清理未使用的資源:使用 docker system prune 清理未使用的容器、網(wǎng)絡(luò)、鏡像和數(shù)據(jù)卷,保持系統(tǒng)整潔。
- 查看命令幫助信息:使用 docker command --help 查看每個命令的詳細(xì)幫助,了解更多選項(xiàng)和用法。
- 命名規(guī)范:為容器和鏡像使用有意義的名稱,便于管理和調(diào)試。
通過掌握這些基本命令,你將能大幅提升 Docker 使用效率,更好地管理容器和應(yīng)用。隨著你對 Docker 的深入了解,也能探索更多高級功能,進(jìn)一步優(yōu)化容器化應(yīng)用的性能和穩(wěn)定性。