🚀 一次測試環境的探索:我如何將 CDH 集群打包成 Docker 鏡像,留給未來的自己
🧩 背景故事
最近在項目中,我們計劃上線一個基于 CDH(Cloudera Distribution Hadoop) 的大數據平臺。正式上生產環境之前,我被安排在測試環境先搭建一套完整的 CDH 集群做功能驗證與調優。
當一切配置跑通后,我意識到一個問題:
既然花了這么大力氣把 CDH 集群搭建成功了,為什么不把它打包起來,未來不論是重建、遷移、分享、還是快速啟動一套環境,都能一步到位?
于是,我決定將運行中的 CDH 集群容器 打包成鏡像,留給未來的我和團隊使用。
🧱 準備階段:集群容器已經搭建成功
我在測試環境中,通過 docker-compose
啟動了以下幾個容器:
cloudera-manager
(CM 管理端)cdh-node1
(Worker 節點)cdh-node2
(Worker 節點)
經過配置后,這些節點已經通過 Cloudera Manager 成功部署了 HDFS、YARN、Zookeeper、Hive 等組件,整個環境運行穩定。
下一步,就是把這些容器打包成鏡像。
🧰 正式開始:將容器打包為鏡像
① 查看當前運行的容器
docker ps
輸出類似:
CONTAINER ID IMAGE NAMES
a1b2c3d4e5f6 cdh-node-base cdh01.hadoop
b2c3d4e5f6g7 cdh-node-base cdh02.hadoop
c3d4e5f6g7h8 cdh-node-base cm.hadoop
② 使用 docker commit
打包容器
將運行中的容器保存為鏡像:
docker commit cdh01.hadoop cdh-node:v1.0
docker commit cm.hadoop cloudera-manager:v1.0
💡 提示:你也可以為不同角色創建不同鏡像,如 cdh-worker
、cdh-manager
。
③ 查看鏡像是否生成成功
docker images
你會看到類似:
REPOSITORY TAG IMAGE ID CREATED SIZE
cdh-node v1.0 bb8927b5208b 10 seconds ago 9.28GB
cloudera-manager v1.0 34f5886ee4df 8 seconds ago 13GB
📦 可選:導出鏡像為 .tar
文件(備份 or 遷移)
如果你希望將鏡像導出分享或備份:
docker save -o cdh-node-v1.0.tar cdh-node:v1.0
docker save -o cloudera-manager-v1.0.tar cloudera-manager:v1.0
導入方式也很簡單:
docker load -i cdh-node-v1.0.tar
🧪 驗證鏡像是否可用
你可以新建一臺測試機或容器環境,然后通過這些鏡像啟動:
docker run -it --name test-node cdh-node:v1.0 /bin/bash
在容器內檢查配置文件、服務是否存在、CM 是否能識別 agent,一切正常的話,這就是你的 “克隆模板”!
🧭 總結
這次在測試環境中構建并打包 CDH 鏡像的經歷,讓我明白了兩件事:
- 測試環境的努力不應浪費:通過鏡像,我們把環境“凍結”,未來重建無壓力;
- 運維自動化的第一步就是可復用性:只要基礎環境一致,我們可以任意克隆、部署、分發。
留給未來的自己一個打包好的環境,是對自己最溫柔的善意。
🔖 最后附上一鍵打包腳本(可選)
#!/bin/bashcontainers=("cdh01.hadoop" "cdh02.hadoop" "cm.hadoop")
for name in "${containers[@]}"; doimage_name="${name}-image:v1.0"echo "打包容器 $name 為鏡像 $image_name"docker commit "$name" "$image_name"
done