zoukankan      html  css  js  c++  java
  • docker 容器间网络配置

    创建一个docker容器,docker系统会自动为该容器分配一个ip地址,通常是172.17开头。

    我们可以在主机上用 docker inspect 命令 或者进入容器用ifconfig命令来查看容器的ip地址。

    假设某个容器(假设容器的名称为myweb)被分配的地址是 172.17.0.2,该容器上启动了一个web服务,其端口号是80(注意这是容器中的端口号)。

    这时我们用docker port命令可以查看该web服务在容器的端口对应到主机端口的信息,如:

    docker port myweb

    输出
    80/tcp -> 0.0.0.0:32776

    一、这时我们在docker主机上可通过如下方式访问容器的服务

    1、方式一:

    curl  http://localhost:32776

    2、方式二:

    假设主机的ip地址为192.168.142.138

    curl  http://192.168.142.138:32776

    这样docker主机局域网内的机器就可以通过主机的地址和绑定的ip来访问到docker容器上的服务了。不过这存在的问题是,需要将容器端口与主机上端口的映射关系变成固定的。否则一旦容器重启,绑定端口就会变了。

    3、方式三:

    假设容器的ip地址为 172.17.0.2

    curl http://172.17.0.2:80

    二、其它容器访问该容器的web服务

    现在启动另外一个容器,在该容器中要访问myweb容器提供的web服务,可以用如下方式:

    1、方式一:直接通过容器的ip地址访问

    curl  http://172.17.0.2:80

    说明:这么做是可以的,但问题是容器的ip地址是自动分配的,一旦提供该web服务的容器重启后,其ip可能发生变化。这就导致原来指定的ip有问题了。

    2、方式二:通过主机地址和映射端口访问

    curl http://192.168.142.138:32776

    说明:这存在的问题是,端口的映射是自动的,容器一旦重启后会发生变化。

    总结下,如果某个容器提供了对外的服务(如web服务),则统一的访问方式可以利用docker主机的ip地址和容器映射到主机上的端口来统一访问。

    三、容器之间互联的另外一种方式

    docker提供了一种机制,可以让一个容器和另一个容器很方便的连接起来。举例:

    docker run --name test1 --link myweb:web -it ubuntu /bin/bash

    上面命令创建了一个新的容器test1。 这里引入了一个新的标记 --link,其参数部分的myweb表示要连接的容器,web是要连接的容器的别名。

    容器创建后,我们用 ping web命令发现能连接到myweb容器,这样因为用的不是ip地址,而是别名。这样即使myweb1容器重启后,上面创建的test1容器对其连接的代码或脚本也不用修改。

    假设myweb容器提供了web服务,容器内的端口是80.

    这时在test1容器内可以用如下方式访问:  curl  http://web:80

    显然,这种方式的优点是不再指定ip地址,即使 myweb容器重启后ip地址变了也没关系。

     注意:需要注意的是,如果myweb容器未启动,但有别的容器启动,test1容器利用别名web可能会关联到别的容器上,这是个问题。

  • 相关阅读:
    MongoDB的索引(六)
    DMZ原理与应用
    MongoDB的增、删、改、查操作(五)
    一分钟了解mongodb(转)
    mongodb-java-driver基本用法
    Mongodb相对于关系型数据库的优缺点(转)
    什么场景应该用 MongoDB(转)
    MongoDB使用场景和局限 (转)
    matlab7与win7不兼容
    sublime的使用
  • 原文地址:https://www.cnblogs.com/mafeng/p/10170472.html
Copyright © 2011-2022 走看看