當阿里雲遇上 Docker ( 入門實戰記錄貼)

貝聊科技發表於2018-04-17

作者介紹:謝智星,貝聊自動化測試工程師,本文同時釋出於TesterHome論壇

前言

發帖原因:期待大家一起來玩docker,快速搭建環境,發掘docker的無限可能~

大神語錄:Docker 只是一種非常實用的工具,不要以 Docker 為目的去學習 Docker,重要的不是 Docker 而是您用 Docker 做什麼。

願景:技術交流,無分對錯~歡迎大家指正


先上成果圖: docker 搭建 Zabbix

當阿里雲遇上 Docker ( 入門實戰記錄貼)

docker 搭建 Grafana 採用Zabbix 資料來源

當阿里雲遇上 Docker ( 入門實戰記錄貼)


一、我的準備工作

1.購買阿里雲伺服器,我的是666一年(購買之後第三天被告知有拼團活動333,3年),淚目

我的配置如下:

當阿里雲遇上 Docker ( 入門實戰記錄貼)


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 選購映象

過程像海淘,裡面全部介紹都是英文 我選的是下面這兩個

當阿里雲遇上 Docker ( 入門實戰記錄貼)

當阿里雲遇上 Docker ( 入門實戰記錄貼)

映象名 = 商品名

星數 = 類似好評數

pull = 拉取數 類似於購買數目

點開detail 會有這個映象的介紹


二、搭建分析

1.搭建前你需要清楚的地方:

  • [1]啟動容器數量

  • [2]容器間的依賴關係

  • [3]搭建系統元件容器間的通訊方式

2.舉個栗子: 以我的實踐(Zabbix + Grafana)為例

[1] 啟動容器的數量 3個

當阿里雲遇上 Docker ( 入門實戰記錄貼)
從上到下,第一個容器 是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)

這幾個問題就留給小夥伴們自己探討啦,百度一下基本都能夠找到答案的~~

相關文章