Docker容器互相连接三种实现方法详解

 更新时间:2020年05月27日 15:47:32   作者:流年似水zlw  
这篇文章主要介绍了Docker容器互连三种实现方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

docker容器间的互连通信有三种方法:

  • docker内部网络:不够灵活强大,不推荐
  • docker networking:1.9或更新版本,推荐使用
  • docker链接:1.9之前版本适用。

1.docker内部网络

涉及docker自己的网络栈。

安装docker后,系统会创建一个新的网络接口,名字是docker0,用于连接容器和宿主机,IP范围是172.16-172.30,

每个docker容器都会在这个接口上分配一个IP地址。

docker每创建一个容器就会创建一组互联的网络接口,一端是容器里的eth0接口,另一端则在宿主机以veth开头命名,

通过把每个veth接口绑定到docker0网桥,docker创建了一个虚拟子网,这个子网由宿主机和所有的docker容器共享,

实现容器和宿主机的通信连接,注意只有容器运行时veth接口才存在。

用内部网络实现容连互联的弊端:

  • 要在容器的应用程序里对另一个容器的IP地址做硬编码;
  • 容器重启后,IP地址可能会改变;
  • 不够方便和灵活。

2.docker networking

容器之间的连接用网络创建。

允许用户创建自己的网络,容器通过这个网络互相通信;

可以跨越不同的宿主机来通信,网络配置也更灵活;

可以在无需更新连接的情况下,停止、启动或者重启容器;

不必事先创建容器再去连接它,也不必关心容器的运行顺序,可以在网络内部获得容器名解析和发现;

和docker compose以及swarm进行了集成;

在docker网络内部启动的容器,会感知到所有在这个网络下运行的容器,

并通过/etc/hosts文件将这些容器的地址保存到本地DNS中,
网络内的任何主机都可以使用hostname或hostname.netname的形式来被解析访问,

如果任何一个容器重启了,其IP地址会自动在/etc/hosts文件中更新,

测试中发现/etc/hosts文件中好像没有新增其他容器的地址,但也能互相ping通;

一个容器可以同时加入多个网络,所以可以创建非常复杂的网络模型;

  • docker network create 创建一个网络
  • docker network inspect 查看网络的详细信息
  • docker network ls 列出当前系统中的所有网络
  • docker network connect 将已有容器连接到一个网络
  • docker network disconnect 从网络中断开一个容器
  • docker network rm 删除一个或多个网络
  • docker network prune 删除所有未使用的网络

3.docker链接

在链接过程中要引用到容器的名字,且只能工作于同一台宿主机中。

在docker run启动容器时用参数 --link 创建两个容器间的 客户-服务 链接,

需要两个参数,一个是链接容器的名字,一个是链接的别名,即 --link redis:db,

被链接的容器是服务,链接让服务容器能够和客户容器通信,

客户容器可直接访问服务容器的任意公开端口,所以服务容器的端口不需要对本地宿主机公开,相对更加安全;

可以把多个客户容器链接到同一个服务容器,也可通过指定多次--link来链接到多个服务容器,

docker在容器的/etc/hosts文件和包含链接信息的环境变量里写入链接信息;

无论采用哪种方式,都可以创建一个Web应用程序栈,包含以下组件:

  • 一个Web服务器容器
  • 一个Redis数据库容器
  • 两个容器间的一个安全链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • docker swarm 集群创建过程

    docker swarm 集群创建过程

    通过docker swarm 工具将一台或者多台安装了docker的服务器组成一个完整的集群,该集群中的node节点可以通过Leader节点管理,这篇文章主要介绍了docker swarm 集群创建,需要的朋友可以参考下
    2024-03-03
  • Docker快速部署国产达梦数据库的实现示例

    Docker快速部署国产达梦数据库的实现示例

    本文主要介绍了Docker快速部署国产达梦数据库的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • docker中修改mysql最大连接数及配置文件的实现

    docker中修改mysql最大连接数及配置文件的实现

    这篇文章主要介绍了docker中修改mysql最大连接数及配置文件的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • docker-compose安装及执行命令

    docker-compose安装及执行命令

    Docker Compose是一个用来定义和运行复杂应用的Docker工具,这篇文章主要介绍了docker-compose安装方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • 如何查看docker-compose.yml所在位置

    如何查看docker-compose.yml所在位置

    这篇文章主要介绍了如何查看docker-compose.yml所在位置问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 5款超好用的开源 Docker工具强烈推荐

    5款超好用的开源 Docker工具强烈推荐

    这篇文章主要介绍了5款超好用的开源 Docker工具强烈推荐,这5个工具非常实用,有需要同学可以学习下
    2021-03-03
  • 生产环境中安全运行Docker容器

    生产环境中安全运行Docker容器

    本文是一篇译文,给大家详细介绍如何在生产环境中安全运行Docker容器,有需要的小伙伴可以参考下
    2017-01-01
  • IDEA整合Docker的实现步骤

    IDEA整合Docker的实现步骤

    本文主要介绍了IDEA整合Docker的实现步骤,主要设置了远程连接,插件以及配置信息等,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Windows Server 2016中文版安装docker的详细步骤

    Windows Server 2016中文版安装docker的详细步骤

    因业务需要所以需要安装Docker,但是在途中遇到了一些问题,所以下面这篇文章主要给大家介绍了关于Windows Server 2016中文版安装docker的详细步骤,需要的朋友可以参考下
    2022-07-07
  • Linux环境下安装docker环境(亲测无坑)

    Linux环境下安装docker环境(亲测无坑)

    大家好,本篇文章主要讲的是Linux环境下安装docker环境(亲测无坑),感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2021-12-12

最新评论