--链接通信
由于容器在通信时,不能固定IP地址,所以进入其他容器时,需要设置关联选项连接保证一致。
--link 选项,本质上是将关联的容器IP添加到容器的 /etc/hosts 文件中。
注意:链接是单向配置,被连接的容器必须是启动状态,可以链接多个容器。
docker container run -itd --name test --link nginx --link php alpine #设置链接容器
docker container exec -it test /bin/bash #进入容器
# cat /etc/hosts #查看容器内的解析
两种通信类型
一、单节点网络通信
docker network ls #查看容器网络类型
单机网络通信类型:
bridge—默认类型,桥接到宿主机 docker0 的网络,类似于 vm 的 nat 模式
host—使用宿主机网络,效率最高
none—没有网络,不能上外网
container—使用已存在的容器,共享网络通信
create—自定义网络
docker network --help #查看网络使用
docker container run --help #可以创建并运行指定的网络,并查看帮助
docker container run -it --network bridge/host/none --name nginx alpine #创建运行指定的网络
二、案例——基于专用网络实现 zabbix 之间的网络通信
docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 zabbix-net #创建专用网络
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" \
--network=zabbix-net \
--restart unless-stopped \
-d mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_bin \
--default-authentication-plugin=mysql_native_password #启动空的 mysql 服务器实例,此处官方文档有误,需要将启动策略调整到镜像之前。
docker run --name zabbix-java-gateway -t \
--network=zabbix-net \
--restart unless-stopped \
-d zabbix/zabbix-java-gateway:alpine-5.4-latest # 启动zabiix的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" \
--network=zabbix-net \
-p 10051:10051 \
--restart unless-stopped \
-d zabbix/zabbix-server-mysql:alpine-5.4-latest #启动Zabbix服务器实例并将该实例与创建的MySQL服务器实例链接
docker run --name zabbix-web-nginx-mysql -t \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
-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" \
--network=zabbix-net \
-p 80:8080 \
--restart unless-stopped \
-d zabbix/zabbix-web-nginx-mysql:alpine-5.4-latest #启动Zabbix Web界面并将实例与创建的MySQL服务器和Zabbix服务器实例链接
docker container ls #查看容器
docker container port 5c173216a680 #查看容器端口
web界面登录 192.168.4.7。账户Admin ,密码zabbix