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 容器的环境变量

  • 相关阅读:
    Codeforces 812E Sagheer and Apple Tree ——(阶梯博弈)
    2017年浙江省赛总结
    UVALive 3716 DNA Regions ——(扫描法)
    UVALive 3716 DNA Regions ——(式子变形)
    2016-2017 ACM-ICPC Northwestern European Regional Programming Contest (NWERC 2016)
    Egyptian Collegiate Programming Contest (ECPC 2015) C题 Connecting Graph
    UVALive 4726 Average ——(斜率优化DP)
    CodeForces 494B Obsessive String ——(字符串DP+KMP)
    [BUUOJ记录] [极客大挑战 2019]RCE ME
    [BUUOJ记录] [GXYCTF2019]BabySQli
  • 原文地址:https://www.cnblogs.com/wholj/p/10559848.html
Copyright © 2011-2022 走看看