Docker 容器间的单向连接

Docker 容器间的单向连接

前言

a. 本文主要为 Docker的视频教程 笔记。
b. 环境为 CentOS 7.0 云服务器
c. 上一篇:Dockerfile 自动制作 Docker 镜像(三)—— 镜像的分层与 Dockerfile 的优化

容器间使用 --link 参数单向连接,命令格式为:

docker run --link <CONTAINER_NAME>:<CUSTOM_ALIAS>

如:先启动一个容器

[root@VM_0_2_centos ~]# docker run -it -d --name host1 centos:7

再启动一个容器,单向连接之前的容器(对之前的容器使用了名为“test”的别名)

[root@VM_0_2_centos ~]# docker run -it -d --name host2 --link host1:test centos:7

此时在容器 host2 中使用 ping 命令访问 host1 容器:

[root@7691dc4a8473 /]# ping host1
PING test (172.17.0.2) 56(84) bytes of data.
64 bytes from test (172.17.0.2): icmp_seq=1 ttl=64 time=0.071 ms
64 bytes from test (172.17.0.2): icmp_seq=2 ttl=64 time=0.091 ms
64 bytes from test (172.17.0.2): icmp_seq=3 ttl=64 time=0.075 ms

使用别名 test 访问:

[root@7691dc4a8473 /]# ping test
PING test (172.17.0.2) 56(84) bytes of data.
64 bytes from test (172.17.0.2): icmp_seq=1 ttl=64 time=0.058 ms
64 bytes from test (172.17.0.2): icmp_seq=2 ttl=64 time=0.067 ms
64 bytes from test (172.17.0.2): icmp_seq=3 ttl=64 time=0.066 ms

均可访问成功。

2. 应用,以安装 zabbix 为例

提前 pull 了 mysql:5.7, zabbix/zabbix-java-gateway,zabbix/zabbix-server-mysql,zabbix/zabbix-web-nginx-mysql 的镜像

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

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

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 连接 mysql
      --link zabbix-java-gateway:zabbix-java-gateway  # 此处使用了 --link 连接 zabbix-java-gateway
      -p 10051:10051 
      -d zabbix/zabbix-server-mysql:latest

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 连接 mysql
      --link zabbix-server-mysql:zabbix-server 	# 此处使用了 --link 连接 zabbix-server-mysql
      -p 8080:8080 	# 注意此处
      -d zabbix/zabbix-web-nginx-mysql:latest

比较奇怪的是, 启动 zabbix-web-nginx-mysql 时,官网和视频教程都是映射80端口,但无法访问。通过查看容器内部的端口监听,发现只监听了 8080 端口。因此删除容器后重新改为映射 8080 端口,可以访问。用户名为 Admin,密码为 zabbix。

后记

zabbix([`zæbiks])是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix 能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
zabbix 由2部分构成,zabbix server 与可选组件 zabbix agent。
zabbix server 可以通过 SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视,数据收集等功能,它可以运行在 Linux,Solaris,HP-UX,AIX,Free BSD,Open BSD,OS X 等平台上。

这应该是Docker系列里面最短的一篇了QAQ。

参考

zabbix 是什么:https://baike.baidu.com/item/zabbix/6780368

原文地址:https://www.cnblogs.com/battor/p/unidirection_connect_between_containers.html