Docker 容器间的单向连接

前言

a. 本文主要为 Docker的视频教程 笔记。

b. 环境为 CentOS 7.0 云服务器

c. 上一篇:Dockerfile 自动制作 Docker 镜像(三)—— 镜像的分层与 Dockerfile 的优化

1. 基本参数 --link

容器间使用 --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

Docker 容器间的单向连接的更多相关文章

  1. Docker容器的跨主机连接

    Docker容器的跨主机连接 Docker容器的跨主机连接 使用网桥实现跨主机容器连接 网络拓扑 网络连接使用的是Bridge 操作 修改/etc/network/interfaces文件,分配静态I ...

  2. Docker容器的使用和连接

    在上一篇文章<Docker从安装部署到Hello World>介绍了如何在CentOS7上安装Docker.这篇文章主要介绍一下Docker容器的使用和连接. vDocker 容器使用 1 ...

  3. 从Docker容器内部,如何连接到本机的本地主机?

    原文 从Docker容器内部,如何连接到本机的本地主机? 编辑:如果您使用的是Docker-for-mac或Docker-for-Windows 18.03+,只需使用主机连接到您的mysql服务即可 ...

  4. Docker学习(15) Docker容器的跨主机连接

    Docker容器的跨主机连接 Docker使用网桥跨主机容器连接 Docker使用Open cSwitch实现跨主机容器连接 Docker使用weave实现跨主机容器连接

  5. docker容器间通信

    现在在我们的docker中已经有了三个容器,分别是DB/API/UI三个容器,三个容器间肯定是要进行互相通信的 可以查看docker的官方文档,https://docs.docker.com/engi ...

  6. docker 容器间网络配置

    创建一个docker容器,docker系统会自动为该容器分配一个ip地址,通常是172.17开头. 我们可以在主机上用 docker inspect 命令 或者进入容器用ifconfig命令来查看容器 ...

  7. Docker 容器的跨主机连接

    使用网桥实现跨主枳容器连接 不推荐 使用OpenvSwitch实现跨主机容器连接 OpenvSwitch: OpenvSwitch是一个高质量的.多层虚拟交换枳,使用开源Apache2.0许可协议,由 ...

  8. Docker容器间网络互联原理,讲不明白算我输....

    @ 目录 一.今天我们要搞明白的实验 二.前置网络知识 2.1.docker默认为我们创建的网络 2.2.怎么理解docker0网桥 2.3.什么是veth-pair技术? 三.同一个局域网中不同主机 ...

  9. docker ——从docker容器的内部,连接本机的mysql

    所以我有一个Nginx运行在一个docker容器,我有一个mysql运行在localhost,我想连接到我的Nginx内的MySql. MySql在localhost上运行,并且不将端口暴露给外部世界 ...

随机推荐

  1. TCP拥塞控制详解

    1. 拥塞原因与代价 拥塞的代价 当分组的到达速率接近链路容量时,分组经历巨大的排队时延. 发送方必须执行重传以补偿因为缓存溢出而丢弃的分组. 发送方在遇到大时延时进行的不必要重传会引起路由器利用其链 ...

  2. system V信号量和Posix信号量

    一.函数上的区别 信号量有两种实现:传统的System V信号量和新的POSIX信号量.它们所提供的函数很容易被区分:对于所有System V信号量函数,在它们的名字里面没有下划线.例如,应该是sem ...

  3. SSM集成FastJson

    FastJson Json数据格式回顾 什么是json JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于 ECMAScript( ...

  4. shell 获取当前路径 和 2>&1 &的作用

    #!/bin/bash current_path=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) nohup $curren ...

  5. docker 实现redis主从复制

    目录 一.概览 二.安装master库 三.安装slave从库 四.错误分析 五.参考网址 一.概览 主库:192.168.3.13:6380 从库一:192.168.3.14:6381 从库二:19 ...

  6. 教你IO流来便利电脑磁盘所有文件,把图片放到一个文件夹里(会发现什么不可告人的密码)

    一.需求 我要把C盘下面的所有图片都拿出来,放到一个新文件夹中.今天小编一身正气,看看有没有什么意外发现!!学会看看自己的盘,悄悄的哦!!! 二.代码展示(运行时间可能有点长) import java ...

  7. prism 的学习网站

    C#的学习网址: https://www.cnblogs.com/zh7791

  8. Vue实现在前端导出Excel 方法2

    也可以去看下我的方法1:https://www.cnblogs.com/yingyigongzi/p/10915382.html ----------------------------------- ...

  9. Redis5.0 配置文件中文参考

    Redis 5.0 配置文件#是否在后台执行,yes:后台运行:no:不是后台运行daemonize yes#是否开启保护模式,默认开启.要是配置里没有指定bind和密码.开启该参数后,redis只会 ...

  10. 【REST】使用RestSharp 库消费Restful Service

    使用RestSharp 库消费Restful Service   现在互联网上的服务接口都是Restful的,SOAP的Service已经不是主流..NET/Mono下如何消费Restful Serv ...