当阿里云遇上 Docker ( 入门实战记录贴)

2,671 阅读4分钟

作者介绍:谢智星,贝聊自动化测试工程师,本文同时发布于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)

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