docker(14):docker的容器互联和zabbix样例

docker(14):docker的容器互联和zabbix样例

https://www.zabbix.com/documentation/3.4/zh/manual/installation/containers

https://www.cnblogs.com/luoahong/p/10283016.html

Docker容器都是独立的,互相隔离的环境。然而,它们通常只有互相通信时才能发挥作用。

容器互联大体有以下三种方式,使用link进行容器互联:

  • 基于volume的互联
  • 基于link的互联
  • 基于网络的互联

使用--link参数让容器间进行交互:单方向的

注意:--link参数格式为--link name:alias,其中name是要链接的容器名称,alias是这个连接的名称。

1 docker容器间的互联 

1.1  创建两个容器

[root@docker-136 ~]# docker run -d --name vm-1 centos7-ssh:v1 
a5dd0cf5f7626e42e60500bef89693744ecddf942034eabd2cf526ba6e3c4a3f
[root@docker-136 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
a5dd0cf5f762        centos7-ssh:v1      "/usr/sbin/init"    8 seconds ago       Up 5 seconds        22/tcp              vm-1
[root@docker-136 ~]#
[root@docker-136 ~]# docker run -d --link vm-1:web-1 --name vm-2 centos7-ssh:v1 
3a38a74ffcc4b6a43a409862143e93e7ee6112fab7167418f718c392c7c66ef4
[root@docker-136 ~]# docker ps -a    
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
3a38a74ffcc4        centos7-ssh:v1      "/usr/sbin/init"    2 seconds ago       Up 1 second         22/tcp              vm-2
a5dd0cf5f762        centos7-ssh:v1      "/usr/sbin/init"    2 minutes ago       Up 2 minutes        22/tcp              vm-1
[root@docker-136 ~]#

 

1.2 容器互访

[root@3a38a74ffcc4 ~]# cat /etc/hosts
127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2      web-1 a5dd0cf5f762 vm-1
172.17.0.3      3a38a74ffcc4
[root@3a38a74ffcc4 ~]# ssh root@web-1
ssh: connect to host web-1 port 22: Connection refused
[root@3a38a74ffcc4 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
后启动的容器可以根据主机名,连接名,ip的方式连接先启动的容器。因为—link做了hosts解析
[root@3a38a74ffcc4 ~]# ssh root@web-1
The authenticity of host 'web-1 (172.17.0.2)' can't be established.
ECDSA key fingerprint is SHA256:NBG7epRah23e9e7OgIgiFbXf5elVIi8OhTi3KTYbUP8.
ECDSA key fingerprint is MD5:2c:e7:9d:e6:58:68:e6:56:d2:7b:82:9f:bd:d8:c0:20.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'web-1,172.17.0.2' (ECDSA) to the list of known hosts.
root@web-1's password: 
Last login: Thu Aug  8 07:38:35 2019 from 192.168.0.137
[root@a5dd0cf5f762 ~]# ls
anaconda-ks.cfg
[root@a5dd0cf5f762 ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 07:24 ?        00:00:00 /usr/sbin/init
root         19      0  0 07:32 pts/0    00:00:00 /bin/bash
root         36     19  0 07:34 pts/0    00:00:00 /usr/sbin/sshd -D
root         37     36  0 07:34 ?        00:00:00 sshd: root@pts/1
root         39     37  0 07:34 pts/1    00:00:00 -bash
root         54     39  0 07:34 pts/1    00:00:00 ps -ef

先启动的容器只能同过IP的方式连接
[root@a5dd0cf5f762 /]# ssh root@172.17.0.3
ssh: connect to host 172.17.0.3 port 22: Connection refused
[root@a5dd0cf5f762 /]# ssh root@172.17.0.3
The authenticity of host '172.17.0.3 (172.17.0.3)' can't be established.
ECDSA key fingerprint is SHA256:NBG7epRah23e9e7OgIgiFbXf5elVIi8OhTi3KTYbUP8.
ECDSA key fingerprint is MD5:2c:e7:9d:e6:58:68:e6:56:d2:7b:82:9f:bd:d8:c0:20.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.17.0.3' (ECDSA) to the list of known hosts.
root@172.17.0.3's password: 
Last login: Thu Aug  8 07:38:35 2019 from 192.168.0.137
[root@3a38a74ffcc4 ~]#

 

1.3 link总结

l   先启动的容器无法连接后启动的容器

l   但是后启动的容器可以连接新启动的容器

l   容器间互联的方法:--link  单方向的

 

2 docker容器间互联的应用zabbix

https://www.zabbix.com/documentation/3.4/zh/manual/installation/containers

运行支持MySQL数据库的Zabbix server,基于Nginx web服务器运行Zabbix web接口,以及Zabbix Java gateway。

2.1  启动zabbix相关容器

1. 启动一个空的MySQL服务器实例

docker run --name mysql-server -t \

      -e MYSQL_DATABASE="zabbix" \

docker run --name mysql-server -t \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -d mysql:5.7

 

2. 启动Zabbix Java gateway实例

docker run --name zabbix-java-gateway -t \
      -d zabbix/zabbix-java-gateway:latest

 

 

3. 启动Zabbix server实例,并关联这个实例到已创建的MySQL服务器实例

docker run --name zabbix-server-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
      --link mysql-server:mysql \
      --link zabbix-java-gateway:zabbix-java-gateway \
      -p 10051:10051 \
      -d zabbix/zabbix-server-mysql:latest

 

Zabbix server实例暴露10051/TCP端口(Zabbix trapper)给主机。

4. 启动Zabbix web 接口,并将它与MySQL服务器实例和Zabbix server实例关联

docker run --name zabbix-web-nginx-mysql -t \
      -e DB_SERVER_HOST="mysql-server" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="zabbix_pwd" \
      -e MYSQL_ROOT_PASSWORD="root_pwd" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:80 \
      -d zabbix/zabbix-web-nginx-mysql:latest

 

 Zabbix web 接口暴露80/TCP端口(HTTP)给主机。

 

[root@docker-136 ~]# docker images | grep -E "zabbix*|mysql"
zabbix/zabbix-server-mysql      latest              58c63c14e553        13 days ago         65.6MB
zabbix/zabbix-web-nginx-mysql   latest              27cfff7ef9a8        13 days ago         149MB
zabbix/zabbix-java-gateway      latest              705715c1c074        13 days ago         78.3MB
mysql                           5.7                 f6509bac4980        3 weeks ago         373MB
[root@docker-136 ~]# docker ps -a                              
CONTAINER ID        IMAGE                                  COMMAND                  CREATED              STATUS              PORTS                         NAMES
c0157be0d8da        zabbix/zabbix-web-nginx-mysql:latest   "docker-entrypoint.sh"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 443/tcp   zabbix-web-nginx-mysql
fbb8488ecdd4        zabbix/zabbix-server-mysql:latest      "/sbin/tini -- /usr/…"   2 minutes ago        Up About a minute   0.0.0.0:10051->10051/tcp      zabbix-server-mysql
30ea677e88a2        zabbix/zabbix-java-gateway:latest      "docker-entrypoint.sh"   2 minutes ago        Up 2 minutes        10052/tcp                     zabbix-java-gateway
a008337eb10c        mysql:5.7                              "docker-entrypoint.s…"   3 minutes ago        Up 2 minutes        3306/tcp, 33060/tcp           mysql-server

 

 

 

2.2  zabbix服务器监控客户端

安装zabbix客户端

[root@docker-137 ~]#  rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.2-1.el7.x86_64.rpm
获取https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.2-1.el7.x86_64.rpm
警告:/var/tmp/rpm-tmp.1bTRC7: 头V4 RSA/SHA512 Signature, 密钥 ID a14fe591: NOKEY
准备中...                          ################################# [100%]
正在升级/安装...
   1:zabbix-agent-4.0.2-1.el7         ################################# [100%]
[root@docker-137 ~]# vim /etc/zabbix/zabbix_agentd.conf #修改zabbix-server地址
[root@docker-137 ~]# 
[root@docker-137 ~]# 
[root@docker-137 ~]# systemctl restart zabbix-agent
[root@docker-137 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      6807/sshd           
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      15890/zabbix_agentd 
tcp6       0      0 :::22                   :::*                    LISTEN      6807/sshd           
tcp6       0      0 :::10050                :::*                    LISTEN      15890/zabbix_agentd 
[root@docker-137 ~]# 

 

zabbix web界面添加监控主机

 

 

 

 

 

 

重启zabbix-server服务

[root@docker-136 ~]# docker ps -a    
CONTAINER ID        IMAGE                                  COMMAND                  CREATED             STATUS              PORTS                         NAMES
c0157be0d8da        zabbix/zabbix-web-nginx-mysql:latest   "docker-entrypoint.sh"   29 minutes ago      Up 29 minutes       0.0.0.0:80->80/tcp, 443/tcp   zabbix-web-nginx-mysql
fbb8488ecdd4        zabbix/zabbix-server-mysql:latest      "/sbin/tini -- /usr/…"   30 minutes ago      Up 4 minutes        0.0.0.0:10051->10051/tcp      zabbix-server-mysql
30ea677e88a2        zabbix/zabbix-java-gateway:latest      "docker-entrypoint.sh"   30 minutes ago      Up 30 minutes       10052/tcp                     zabbix-java-gateway
a008337eb10c        mysql:5.7                              "docker-entrypoint.s…"   31 minutes ago      Up 31 minutes       3306/tcp, 33060/tcp           mysql-server
[root@docker-136 ~]# docker restart zabbix-server-mysql         
zabbix-server-mysql
[root@docker-136 ~]#

 

posted on 2019-08-13 17:12  光阴8023  阅读(320)  评论(0编辑  收藏  举报