1.什么是docker容器之间互联
- 以前直接在服务器部署的时候,通过服务器地址直接进行注册,比较方便。
- 但是放到docker容器中后,每个子服务都是一个容器,那么就涉及到了容器与容器之间的互相访问!
- 启动的两个容器之间本就可以互通,但是容器过多就会导致容器ip混乱。这时我们启动两个容器,让后者启动的容器关联第一个容器来实现互联。
2.docker容器互联简单例子
#启动一个名字叫kod的容器 [root@docker01 ~]# docker run -d --name kod kod:v9 9ad919342252b9ab25fed90539e33406880c24bce67a7919cb26af709a6ad668 [root@docker01 ~]# docker ps -a -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9ad919342252 kod:v9 "/bin/bash /init.sh" 11 seconds ago Up 10 seconds kod #link第一个叫kod的容器,并且起一个别名为web01 [root@docker01 ~]# docker run -it --link kod:web01 centos:7 #检测是否互联 [root@74a3024714ab /]# ping web01 PING web01 (172.17.0.2) 56(84) bytes of data. 64 bytes from web01 (172.17.0.2): icmp_seq=1 ttl=64 time=0.078 ms 64 bytes from web01 (172.17.0.2): icmp_seq=2 ttl=64 time=0.048 ms 64 bytes from web01 (172.17.0.2): icmp_seq=3 ttl=64 time=0.107 ms ^C --- web01 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 0.048/0.077/0.107/0.026 ms [root@74a3024714ab /]# #由hosts文件可见做了web01的解析 [root@74a3024714ab /]# 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 web01 9ad919342252 kod 172.17.0.3 74a3024714ab PS: 被link的容器必须是启动的 此例为单向解析,也就是说A容器只能被B容器link,A容器不需要访问其他容器
3.zabbix服务dcoker容器互联例子
#将docker包导入为镜像 [root@docker01 zabbix]# for n in `ls *.tar.gz`; do docker load -i $n;done
#启动数据库容器并传递变量 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 \ --character-set-server=utf8 --collation-server=utf8_bin #启动监控java业务所需容器 docker run --name zabbix-java-gateway -t \ -d zabbix/zabbix-java-gateway:latest #启动zabbix收集客户端信息中间件容器(关联数据库和java业务组件) 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—web容器(关联数据库和收集中间件) 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
4.检查是否正常使用
赞赏
微信赞赏
支付宝赞赏