實踐)
1. Docker 核心指令體系解析作為現(xiàn)代應用容器化的標準解決方案Docker 指令體系構成了開發(fā)者日常工作的基礎工具鏈。這套指令系統(tǒng)主要分為五個功能維度生命周期管理從鏡像拉取到容器啟停的全流程控制系統(tǒng)監(jiān)控實時掌握容器運行狀態(tài)和資源占用網(wǎng)絡配置構建容器間通信的虛擬網(wǎng)絡環(huán)境數(shù)據(jù)持久化解決容器臨時存儲特性的數(shù)據(jù)管理方案集群編排多容器協(xié)同工作的管理工具集提示所有指令都支持 --help 參數(shù)獲取詳細用法說明這是比任何速查表都權威的實時文檔。1.1 容器生命周期指令容器作為 Docker 的核心運行單元其管理指令使用頻率最高# 經(jīng)典容器啟停組合 docker run -it --name my_container -p 8080:80 -v /host/path:/container/path image_name docker stop my_container docker start my_container docker restart my_container # 容器清理操作 docker rm -f my_container # 強制刪除運行中的容器 docker container prune # 清理所有停止的容器關鍵參數(shù)解析-it開啟交互終端i: interactive, t: tty-p端口映射主機端口:容器端口-v卷掛載主機路徑:容器路徑--name指定容器別名否則自動生成隨機名稱1.2 鏡像管理指令鏡像是容器的靜態(tài)模板其管理指令直接影響部署效率# 鏡像全生命周期操作 docker pull ubuntu:20.04 # 拉取指定版本鏡像 docker build -t custom_image . # 構建自定義鏡像 docker push username/repository:tag # 推送至鏡像倉庫 docker rmi old_image # 刪除本地鏡像 docker image prune -a # 清理懸空鏡像 # 鏡像逆向分析 docker history image_name # 查看鏡像構建歷史 docker inspect image_name # 獲取鏡像元數(shù)據(jù) docker save image backup.tar # 鏡像導出為文件 docker load backup.tar # 從文件恢復鏡像注意生產(chǎn)環(huán)境務必指定鏡像版本標簽避免默認使用 latest 導致版本漂移問題。2. 系統(tǒng)監(jiān)控與調(diào)試指令2.1 實時狀態(tài)監(jiān)控docker ps -a # 顯示所有容器包括停止的 docker stats # 實時資源監(jiān)控CPU/內(nèi)存/網(wǎng)絡 docker top container_name # 查看容器內(nèi)進程 docker logs -f --tail 100 container # 實時日志顯示最后100行2.2 高級調(diào)試技巧# 進入運行中容器 docker exec -it container_name /bin/bash # 容器內(nèi)外文件互傳 docker cp container:/path /host_path docker cp /host_path container:/path # 網(wǎng)絡連通性測試 docker run --rm busybox ping 8.8.8.83. 網(wǎng)絡與存儲配置3.1 虛擬網(wǎng)絡管理docker network ls # 列出所有網(wǎng)絡 docker network create my_network # 創(chuàng)建自定義網(wǎng)絡 docker network inspect bridge # 查看網(wǎng)絡詳情 # 容器加入指定網(wǎng)絡 docker run --networkmy_network image_name3.2 數(shù)據(jù)持久化方案# 卷管理指令 docker volume create my_volume docker volume ls docker run -v my_volume:/data image_name # 綁定掛載開發(fā)常用 docker run -v $(pwd)/code:/app code_image4. 生產(chǎn)環(huán)境必備指令4.1 資源限制配置# 啟動資源受限容器 docker run -it --cpus1 --memory512m image_name # 動態(tài)調(diào)整資源限制 docker update --memory1g container_name4.2 容器健康檢查# 定義健康檢查Dockerfile HEALTHCHECK --interval30s --timeout3s \ CMD curl -f http://localhost/ || exit 1 # 查看健康狀態(tài) docker inspect --format{{.State.Health.Status}} container5. 組合指令實戰(zhàn)案例5.1 開發(fā)環(huán)境快速重建# 一鍵清理并重建 docker stop $(docker ps -aq) docker rm $(docker ps -aq) docker rmi $(docker images -q) docker-compose up --build5.2 生產(chǎn)環(huán)境日志收集# 導出所有容器日志到按日期命名的文件 docker ps -aq | xargs -I {} sh -c docker logs {} $(date %Y%m%d)_{}.log6. 常見問題速查表現(xiàn)象排查指令解決方案端口沖突netstat -tulnp | grep 8080修改主機端口或停止占用進程磁盤空間不足docker system df執(zhí)行docker system prune -a容器啟動失敗docker logs container_id根據(jù)日志修正啟動參數(shù)網(wǎng)絡不通docker network inspect network_name檢查防火墻和路由規(guī)則7. 性能優(yōu)化參數(shù)# 啟用SWAP限制防止容器耗盡宿主機內(nèi)存 docker run -it --memory-swap1g image_name # 調(diào)整I/O優(yōu)先級 docker run --blkio-weight500 image_name # 限制設備讀寫速率 docker run --device-read-bps/dev/sda:1mb image_name8. 安全加固實踐# 以非root用戶運行容器 docker run -u 1000:1000 image_name # 啟用只讀文件系統(tǒng) docker run --read-only image_name # 設置容器權限白名單 docker run --cap-drop ALL --cap-add NET_BIND_SERVICE image_name9. 常用指令組合技巧# 批量操作容器 docker ps -aq | xargs docker stop # 鏡像導出導入組合 docker save image \| gzip image.tar.gz zcat image.tar.gz \| docker load # 跨主機容器通信 docker run --nameagent --restartalways -d \ -v /var/run/docker.sock:/var/run/docker.sock \ portainer/agent10. 進階監(jiān)控方案# 容器資源使用率統(tǒng)計JSON格式 docker stats --no-stream --format \ {container:{{.Container}},cpu:{{.CPUPerc}},mem:{{.MemUsage}}} # 生成容器依賴圖 docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ nate/dockviz images -t經(jīng)驗分享在長期使用中發(fā)現(xiàn)將常用指令封裝成shell函數(shù)能顯著提升工作效率。例如在~/.bashrc中添加dcls() { docker ps --format table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}; }