zoukankan      html  css  js  c++  java
  • docker互联机制实现便捷互访

    何为容器互联 & 为何需要容器互联

    容器的互联是一种让多个容器中应用进行快速交互的方式,它会在源和接收容器之间创建连接关系,接收容器可以通过容器名快速访问到源容器,而不用指定具体的 ip 地址。

    容器互联实现示例

    使用 --link 参数可以让容器之间安全进行交互;--link参数的格式--link name:alias, 其中 name 是要连接的容器名称, alias 是这个连接的别名.

    首先创建一个新的容器,命名为redis,并让其处于运行状态

    docker run -itd --name redis docker.io/redis:latest /bin/bash
    

    创建一个新的 web 容器, 并将它连接到 redis 容器

    docker run -d -p 8080:8080 --name web --link redis:aliasRedis docker.io/centos:latest /bin/bash
    

    注意:建立互联关系的时候,源容器必须处于运行状态,及容器redis必须处于运行状态。

    使用docker ps --no-trunc来查看容器的连接


    可以看到自定义命名的容器,redis和web,redis容器的names列有redis也有web/aliasRedis;这表示web容器连接到redis容器,这允许web容器访问redis容器的信息。
    docker相当于在两个互联的容器之间创建了一个虚拟通道,而且不用映射它们的端口到宿主主机上。在启动redis容器的时候并没有使用-p和-P标记,从而避免了暴露redis服务端口到外部网络上。

    docker为容器公开连接信息的方式

    方法一:通过添加host信息到父容器的/etc/hosts文件

    下面是父容器web的hosts文件:

    这里有两个hosts信息,第一个是web容器,web 容器用自己的id作为默认主机名(172.17.0.3 6b076bb7fa71),第二个是redis容器的ip、别名、容器id和主机名(172.17.0.2 aliasRedis 1e9335f91497 redis)。
    用ping来测试redis(aliasRedis)容器,它会解析成172.17.0.2;用户可以连接多个子容器到父容器,比如可以连接多个web到同一个redis容器上。

    方法二:更新环境变量

    使用 env 命令来查看 web 容器的环境变量

  • 相关阅读:
    C#获取MD5哈希字符串
    C#序列化和反序列化Json数据
    C# Http请求
    C#DAL数据访问层
    C# ThreadPool.QueueUserWorkItem()之线程池异步
    C#以文件夹共享方式实现2G以上大文件传输
    该进程不具有执行此操作所需的“SeSecurityPrivilege”特权
    IIS绑定网站用域名进行访问的过程
    js获取url指定参数值
    js闭包(for循环内给元素添加事件)
  • 原文地址:https://www.cnblogs.com/wholj/p/10559848.html
Copyright © 2011-2022 走看看