一、創建容器常用選項
1. 創建容器常用選項
1)常用選項
- 創建容器常用選項
- 交互式選項:
- -i:保持標準輸入打開,允許交互式操作
- -t:分配偽終端,使容器像傳統終端一樣工作
- 組合使用:-it常用于進入容器交互模式,如docker exec -it <容器> bash
- 后臺運行:
- -d:以守護進程方式運行容器
- 注意事項:純凈操作系統鏡像(如centos)直接使用-d會立即退出,因為沒有守護進程
- 終端分配原理:
- 偽終端作用:當使用-it時,偽終端會作為容器的一號進程來維持容器運行
- 對比實驗:演示了docker run -d centos會退出,而docker run -it -d centos能保持運行
- 進程保持機制:
- nginx示例:通過docker top查看nginx容器有主進程和worker進程保持運行
- centos示例:加-it后偽終端成為一號進程,防止容器退出
- 設置環境變量
- 參數格式:-e key=value
- 應用場景:
- 區分開發/測試/生產環境配置
- 傳遞數據庫連接等動態參數
- 示例:-e env=prod設置環境類型為生產環境
- 容器內驗證:通過echo$env可查看傳入的變量值
- 發布容器端口
參數格式:
- -P:自動映射所有expose端口到隨機宿主機端口
- -p 宿主機端口:容器端口:指定映射關系
- 示例:-p 88:80將容器80端口映射到宿主機88端口
- 訪問驗證:通過瀏覽器訪問宿主機IP:88測試端口映射
- 指定容器名稱
- 參數格式:--name 容器名
- 管理優勢:
- 替代難記的容器ID
- 提高可讀性和管理效率
- 示例:--name web為nginx容器命名
- 設置容器主機名
參數格式:-h 主機名
- 示例:-h web設置容器內主機名
- 驗證方法:進入容器執行hostname命令查看
- 容器重啟策略
- 參數格式:--restart=策略
- 策略類型:
- no:不自動重啟(默認)
- always:總是重啟
- on-failure:失敗時重啟
- 生產建議:使用always確保服務高可用
- 重要特性:主機重啟后docker會自動拉起配置了always的容器
- 查看容器詳細信息
- 命令:docker inspect 容器
- 輸出內容:
- 網絡配置(IP、網關等)
- 存儲驅動信息
- 掛載點詳情
- 應用場景:調試容器問題時獲取完整配置信息
- 容器讀寫層與數據持久性
- 存儲位置:/var/lib/docker/overlay2/
- 讀寫層特性:
- 容器修改保存在讀寫層(UpperDir)
- 刪除容器會同時刪除讀寫層數據
- 數據查看:
- 通過docker inspect找到UpperDir路徑
- 在宿主機可直接查看容器內文件
- 持久化建議:重要數據應使用volume或bind mount
2)資源限制
- 內存限制:
- -m/--memory: 設置容器可使用的最大內存量,如500m表示500MB,1g表示1GB
- --memory-swap: 控制允許交換到磁盤的內存量
- --memory-swappiness: 設置容器使用SWAP分區的百分比(0-100),默認-1表示繼承宿主機設置
- --oom-kill-disable: 禁用OOM Killer機制
- CPU限制:
- --cpus: 指定容器可使用的CPU核心數量,如1表示1核,1.5表示1.5核
- --cpuset-cpus: 限制容器使用特定的CPU核心編號,如"0-3"表示使用0到3號核心
- --cpu-shares: 設置CPU使用的相對權重
- 必要性:
- 防止單個容器資源耗盡影響宿主機和其他容器
- 避免"造反"現象:當某個容器異常消耗資源時,不會拖垮整個宿主機
- 在多容器環境下實現資源制衡,確保各容器公平使用資源
- 實際應用:
- 典型限制示例:docker run -m="500m" --cpus="1" -d nginx
- 內存單位支持:MB(m)、GB(g)等標準單位
- CPU核心數支持小數形式,如0.5表示半個核心
- 配置建議:
- 根據服務類型合理分配資源:Web服務通常需要更多內存,計算服務需要更多CPU
- 生產環境必須設置資源限制,開發環境可適當放寬
- 監控容器實際資源使用情況,動態調整限制參數
- 注意事項:
- 資源限制不是絕對的,極端情況下仍可能影響系統穩定性
- 設置過小的限制可能導致服務性能下降
- CPU共享權重(--cpu-shares)和核心綁定(--cpuset-cpus)通常只在特殊場景使用
二、知識小結
知識點 | 核心內容 | 考試重點/易混淆點 | 難度系數 |
創建容器常用選項 | -d后臺運行、-it分配偽終端、-e環境變量、-p端口映射、--name容器命名、--restart重啟策略 | -it組合作用:①進入容器交互界面 ②作為純凈系統守護進程 | ??? |
容器資源限制 | --memory內存限制(如500M)、--cpusCPU核數限制(如1.5核) | 關鍵區別:默認無限制 vs 顯式限制可防止資源搶占 | ???? |
容器數據持久化 | 讀寫層存儲在/var/lib/docker/containers/ID,容器刪除即丟失數據 | 易混淆點:重啟容器≠刪除容器,數據不會丟失 | ??? |
容器網絡基礎 | -p 宿主機端口:容器端口實現端口暴露(如-p 8888:80) | 重點驗證:通過宿主機IP:端口訪問容器服務 | ?? |
鏡像與容器關系 | 鏡像需包含守護進程(如nginx),否則需-it維持運行 | 典型對比:nginx鏡像(自帶進程)vs centos鏡像(需偽終端) | ???? |
容器狀態管理 | docker ps -l查看最新容器、docker top查看進程、docker inspect查看詳情 | 關鍵命令:docker exec -it ID bash進入運行中容器 | ?? |