自我介绍:广州测试小哥哥一枚 28 岁 社区潜水已半年
发帖原因:期待大家一起来玩 docker,快速搭建环境,发掘 docker 的无限可能~
大神语录:Docker 只是一种非常实用的工具,不要以 Docker 为目的去学习 Docker,重要的不是 Docker 而是您用 Docker 做什么。
愿景:技术交流,无分对错~欢迎大家指正
特别鸣谢: @ycwdaaaa @hogwarts
先上成果图:
我的配置如下:
推荐观看https://testerhome.com/topics/3387 三十分钟 Docker 新手入门
以下是我三天两夜里面不断重复使用的命令,供大家参考:
过程像海淘,里面全部介绍都是英文
我选的是下面这 2 个
镜像名 = 商品名
星数 = 类似好评数
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 参数连接
参考https://hub.docker.com/r/monitoringartist/zabbix-xxl/ 启动命令
[4] 暴露的端口
启动 zabbix-xxl 镜像容器的时候需要注意暴露端口的问题,原因是组件 grafana 容器会以 container 模式连接到 zabbix-xxl 所在容器。
所以在启动 zabbix-xxl 镜像容器时需要预先暴露 grafana 的端口 3000,否则将无法对 zabbix-xxl 容器内的 grafana 进行访问。
多数摘取自https://hub.docker.com/r/monitoringartist/zabbix-xxl/docker,我还是建议大家看 hub 文档启动容器服务。
下面是我启动用到的命令,仅供参考:
docker run -d -v /var/lib/mysql --name zabbix-db-storage busybox:latest
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
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
docker run -d --name grafana -itd --net=container:zabbix grafana/grafana
在 Grafana 使用时可能会遇到的问题:
1.如何安装 zabbix 插件
2.如何配置 zabbix 数据源
3.如何在 zabbix 容器内查找连接使用 api 接口(api_jsonrpc.php)
这几个问题就留给小伙伴们自己探讨啦,百度一下基本都能够找到答案的~