🎉 🎂 🍰 TesterHome 创立 9 周年纪念日 🍰 🎂 🎉

Docker 当阿里云遇上 docker (三天两夜苦战 docker 记录贴)

· 2018年04月02日 · 最后由 水乡人 回复于 2018年06月15日 · 599 次阅读
本帖已被设为精华帖!

自我介绍:广州测试小哥哥一枚 28 岁 社区潜水已半年
发帖原因:期待大家一起来玩 docker,快速搭建环境,发掘 docker 的无限可能~
大神语录:Docker 只是一种非常实用的工具,不要以 Docker 为目的去学习 Docker,重要的不是 Docker 而是您用 Docker 做什么。
愿景:技术交流,无分对错~欢迎大家指正
特别鸣谢: @ycwdaaaa @hogwarts

先上成果图:

docker 搭建 Zabbix

docker 搭建 Grafana 采用 Zabbix 数据源

一、我的准备工作

1.购买阿里云服务器,我的是 666 一年(购买之后第三天被告知有拼团活动 333 3 年)😂

我的配置如下:


2.学习 docker 的基本原理和操作命令

推荐观看https://testerhome.com/topics/3387 三十分钟 Docker 新手入门
以下是我三天两夜里面不断重复使用的命令,供大家参考:


容器管理命令

  • 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 选购镜像

过程像海淘,里面全部介绍都是英文
我选的是下面这 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 进行访问。

  • -p 80:80 \ zabbix 的端口映射
  • -p 10051:10051 \ zabbix agent 的端口映射
  • -p 3000:3000 预留给 grafana 的端口映射

三、我的启动命令

多数摘取自https://hub.docker.com/r/monitoringartist/zabbix-xxl/docker,我还是建议大家看 hub 文档启动容器服务。
下面是我启动用到的命令,仅供参考:

create /var/lib/mysql as persistent volume storage 创建本地持久化储存盘

docker run -d -v /var/lib/mysql --name zabbix-db-storage busybox:latest

start DB for Zabbix - default 1GB innodb_buffer_pool_size is used 启动 Zabbix-db 数据库

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

start Zabbix linked to started DB 启动 Zabbix 且连接数据库 且添加端口 3000 的映射

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)

这几个问题就留给小伙伴们自己探讨啦,百度一下基本都能够找到答案的~

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 28 条回复 时间 点赞

先评论,后读帖

点个赞。明天看。辛苦星仔

👍 先顶完,慢慢看

腻害的,妥妥的。

【1.购买阿里云服务器,我的是 666 一年(购买之后第三天被告知有拼团活动 333 3 年)】不错,我很喜欢👍 👍 👍 👍

最近有 279 3 年的活动,赶紧入手

terrychow 回复

刚买完腾讯,阿里那会还打电话问我为啥不买阿里云……后来就,心疼自己哈哈

写的很好,学习到了

不错, 刚学完 docker 没多久就有这样的实践了。

terrychow 回复

有购买链接吗

#11 · 2018年04月03日 Author
楚轩 回复

上阿里云官网看有没有活动,问问楼上的撒盐同学在哪里买的

terrychow 回复

😛 感谢

#14 · 2018年04月03日 Author
terrychow 回复

扎心了

思寒_seveniruby 将本帖设为了精华贴 04月03日 23:35

厉害了我的哥

最低只要 229 好么,新用户扫码就减 50
https://www.jianshu.com/p/a0b44c2f236e

John 回复

哪里扫码啊

楼主在广州哪个厂

20楼 已删除

学以致用,给你点个赞👍。

terrychow 回复

已买哈哈哈哈

啥也不说了先赞着

关闭了讨论 04月28日 12:49
重新开启了讨论 04月28日 12:49

如果可能的话,还是需要自己试试 dockerfile 镜像制作。

#28 · 2018年04月30日 Author

会的,谢谢建议

看完你的,再结合https://hub.docker.com/r/monitoringartist/zabbix-xxl/Still,搭建的跑不起来,提示” waiting for DB service...“

#30 · 2018年05月25日 Author
fqzero 回复

数据库部分的服务启动检查下,可以进容器内部看 log

回复

找到原因了,看来是内存问题

180526 13:23:03 [Note] InnoDB: Initializing buffer pool, size = 768.0M
InnoDB: mmap(838336512 bytes) failed; errno 12
180526 13:23:03 [ERROR] InnoDB: Cannot allocate memory for the buffer pool

hi 帅哥 可以 联系嘛 问下你 谢谢了 加下 qq 460482040

simple 专栏文章:[精华帖] 社区历年精华帖分类归总 中提及了此贴 12月13日 14:44
simple [精彩盘点] TesterHome 社区 2018 年 度精华帖 中提及了此贴 01月07日 12:08
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册