作者介紹:謝智星,貝聊自動化測試工程師,本文同時釋出於TesterHome論壇
前言
發帖原因:期待大家一起來玩docker,快速搭建環境,發掘docker的無限可能~
大神語錄:Docker 只是一種非常實用的工具,不要以 Docker 為目的去學習 Docker,重要的不是 Docker 而是您用 Docker 做什麼。
願景:技術交流,無分對錯~歡迎大家指正
先上成果圖: docker 搭建 Zabbix
docker 搭建 Grafana 採用Zabbix 資料來源
一、我的準備工作
1.購買阿里雲伺服器,我的是666一年(購買之後第三天被告知有拼團活動333,3年),淚目
我的配置如下:
2.學習docker的基本原理和操作命令
推薦觀看 三十分鐘 Docker 新手入門
以下是我三天兩夜裡面不斷重複使用的命令,供大家參考:
映象管理命令:
•1. docker pull {image_name}
(拉取映象)
•2. docker push {image_name}
(推送映象)
•3. docker images
(檢視當前機器的所有映象)
•4. docker rmi {image_name}
(刪除當前機器的一個映象)
•5. docker tag {source_images_name:tag your_image_name:tag}
(為一個映象打tag)
容器管理命令
•1. docker run --name={your_name} --d {image_name}
(執行容器)
•2. docker ps -s -a
{檢視當前所有容器}
•3. docker stop {container_name}
(停止容器)
•4. docker kill (container_name)
{殺死容器}
•5. docker rm -f {container_name}
(刪除容器)
檢視資訊相關命令
•1. docker logs -f
{容器名稱} (檢視容器日誌)
•2. docker info
(檢視docker服務的資訊)
•3. docker inspect
{容器名稱} (檢視容器的後設資料)
容器執行命令的一些引數
•1. --name
指定容器名稱
•2. -d
後臺執行
•3. -port
指定埠對映規則
•4. --network
指定容器執行的網路模式
•5. -v
指定需要掛載的資料卷
•6. -env
指定需要傳遞給容器的環境變數
理解docker的四種網路模式:
•Container
•briage
•Host
•none
3.docker hub 選購映象
過程像海淘,裡面全部介紹都是英文 我選的是下面這兩個
映象名 = 商品名
星數 = 類似好評數
pull = 拉取數 類似於購買數目
點開detail 會有這個映象的介紹
二、搭建分析
1.搭建前你需要清楚的地方:
-
[1]啟動容器數量
-
[2]容器間的依賴關係
-
[3]搭建系統元件容器間的通訊方式
2.舉個栗子: 以我的實踐(Zabbix + Grafana)為例
[1] 啟動容器的數量 3個
從上到下,第一個容器 是grafana
、第二個是zabbix-xxl
、第三個是zabbix-db-mariadb
的資料庫
[2]容器間的依賴關係
grafana
依賴 zabbix-xxl
提供資料來源,兩個容器之間需要互相通訊
zabbix-xxl
依賴 zabbix-db-mariadb
提供資料庫支援
[3]搭建系統元件容器間的通訊方式
grafana
依賴 zabbix-xxl
提供資料來源 --->因此我在啟動grafana
容器的時候使用container
模式,容器指向zabbix
執行語句:
docker run -d --name grafana -itd --net=container:zabbix grafana/grafana
複製程式碼
zabbix-xxl
依賴 zabbix-db-mariadb
提供資料庫支援--->因此zabbix-db-mariadb
容器需要在zabbix
啟動前啟動,
然後通過--link zabbix-db:zabbix.db
引數連線
啟動命令具體參考Dockerhub
[4]暴露的埠
在啟動zabbix-xxl
映象容器時需要注意暴露埠的問題,原因是元件grafana
容器會以container
模式連線到zabbix-xxl
所在容器。
所以在啟動zabbix-xxl
映象容器時需要預先暴露grafana
的埠3000
,否則將無法對zabbix-xxl
容器內的grafana
進行訪問。
-p 80:80 \ zabbix 的埠對映
-p 10051:10051 \ zabbix agent的埠對映
-p 3000:3000 預留給grafana的埠對映
複製程式碼
三、我的啟動命令
多數摘取自hub.docker.com/r/monitorin…,我還是建議大家看docker hub 文件啟動容器服務。 下面是我啟動用到的命令,僅供參考:
建立本地持久化儲存檔
create /var/lib/mysql as persistent volume storage
docker run -d -v /var/lib/mysql --name zabbix-db-storage busybox:latest
複製程式碼
啟動Zabbix-db 資料庫
start DB for Zabbix - default 1GB innodb_buffer_pool_size is used
docker run \
-d \
--name zabbix-db \
-v /backups:/backups \
-v /etc/localtime:/etc/localtime:ro \
--volumes-from zabbix-db-storage \
--env="MARIADB_USER=zabbix" \
--env="MARIADB_PASS=my_password" \
monitoringartist/zabbix-db-mariadb
複製程式碼
啟動Zabbix且連線資料庫 且新增埠3000的對映
start Zabbix linked to started DB
docker run \
-d \
--name zabbix \
-p 80:80 \
-p 10051:10051 \
-p 3000:3000\
-v /etc/localtime:/etc/localtime:ro \
--link zabbix-db:zabbix.db \
--env="ZS_DBHost=zabbix.db" \
--env="ZS_DBUser=zabbix" \
--env="ZS_DBPassword=my_password" \
monitoringartist/zabbix-xxl:latest
複製程式碼
以container
模式啟動grafana
容指向器---> zabbix
docker run -d --name grafana -itd --net=container:zabbix grafana/grafana
複製程式碼
四、收穫Zabbix+Grafana環境搭建的果實,在Web介面下盡情學習和玩耍。
在Grafana 使用時可能會遇到的問題:
-
1.如何安裝
zabbix
外掛 -
2.如何配置
zabbix
資料來源 -
3.如何在
zabbix
容器內查詢連線使用api介面(api_jsonrpc.php)
這幾個問題就留給小夥伴們自己探討啦,百度一下基本都能夠找到答案的~~