Docker 网络工作原理详解

 更新时间:2016年11月16日 15:04:14   作者:小秦师傅  
这篇文章主要介绍了Docker 网络工作原理的相关资料,这里对Docker的网络工作进行了详细介绍,需要的朋友可以参考下

Docker 网络工作原理

当Docker server也就是docker daemon启动时,会自动创建一个名字是docker0的bridge,每当docker创建一个Container时,会在主机上面创建一个名字是veth*的ethernet 端口,并把这个eth*加入到docker0的bridge,在container中会自动创建一个名字是eth0的ethernet端口,这个eth0和veth*会形成一个类似管道的对,一一对应。

配置DNS

docker是如何分配每个container的hostname和DNS配置的,可以通过在contain中mount命令看出一些东西:

mount

...
/dev/disk/by-uuid/5f3d0920-98a8-434a-9c02-8163dccf6c62 on /etc/resolv.conf type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/disk/by-uuid/5f3d0920-98a8-434a-9c02-8163dccf6c62 on /etc/hostname type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/disk/by-uuid/5f3d0920-98a8-434a-9c02-8163dccf6c62 on /etc/hosts type ext4 (rw,relatime,errors=remount-ro,data=ordered)
...

docker run的-h 可以配置container的hostname,可以通过-h HOSTNAME或者--hostname=HOSTNAME来配置,docker会把HOSTNAME写入/etc/hostname

例如:

xiaogang@Ubuntu:~/shadowsocks$ sudo docker run -t -i --hostname ubuu --rm ubuntu:14.04 /bin/bash

root@ubuu:/# cat /etc/hostname
ubuu

--link=CONNTAINER_NAMEorID:ALIAS,通过这个选项会在/etc/hosts中添加一个ALIAS,指向CONTAINER_NAMEorID, 无需知道具体的IP地址,可以直接使用ALIAS代替。

例如:

--dns=IP_ADDRESS, 会在/etc/resolv.conf的server标签中添加一个IP_ADDRESS

--dns-search=DOMAIN,会在/etc/resolv.conf的search标签中添加一个DOMAIN,如果一个example.com添加到search标签中,当container需要查找一个host的IP时,host.example.com同时也会被查找。

container中的/etc/resolv.conf是从主机中的/etc/resolv.conf拷贝而来,只不过是把主机本地的nameserver过滤掉,如果过滤之后没有任何的nameserver,docker会把google公共nameserver,8.8.8.8和8.8.4.4加入namerserver中。当主机的resolv.conf修改之后会通知container修改

container之间的通信和container和外部之间的通信

1.需要设置ip_forward系统参数,必须设置为1

$ sysctl net.ipv4.conf.all.forwarding
net.ipv4.conf.all.forwarding = 0
$ sysctl net.ipv4.conf.all.forwarding=1
$ sysctl net.ipv4.conf.all.forwarding
net.ipv4.conf.all.forwarding = 1

2.需要设置iptables,允许它们之间的通信

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Docker安装Nginx问题及错误分析

    Docker安装Nginx问题及错误分析

    这篇文章主要介绍了Docker安装Nginx的问题及错误分析正确的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Docker 删除及清理镜像的方法

    Docker 删除及清理镜像的方法

    本文主要介绍了Docker 删除及清理镜像的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • docker(alpine+golang) 中 hosts 不生效问题解决方法

    docker(alpine+golang) 中 hosts 不生效问题解决方法

    这篇文章主要介绍了docker(alpine+golang) 中 hosts 不生效问题解决大全,本文给大家分享了三种解决方法,每种方法给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Docker部署SQL Server 2019 Always On集群的实现

    Docker部署SQL Server 2019 Always On集群的实现

    这篇文章主要介绍了Docker部署SQL Server 2019 Always On集群的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 定时清理docker私服镜像的方法

    定时清理docker私服镜像的方法

    这篇文章主要介绍了定时清理docker私服镜像的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • docker镜像压缩squash的实现

    docker镜像压缩squash的实现

    本文主要介绍了docker镜像压缩squash的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • CentOS 7.5下 安装Docker 教程 详解

    CentOS 7.5下 安装Docker 教程 详解

    这篇文章主要介绍了CentOS 7.5下 安装Docker 教程 ,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • 多云环境下的Docker部署策略实现

    多云环境下的Docker部署策略实现

    在多云环境下,Docker容器技术为应用程序的部署提供了高度的灵活性和可扩展性,本文就来介绍一下多云环境下的Docker部署策略实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01
  • Docker 容器编排利器Compose(起步篇)

    Docker 容器编排利器Compose(起步篇)

    这篇文章主要介绍了Docker 容器编排利器Compose(起步篇),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • docker 安装Consul的教程 (最新版2023)

    docker 安装Consul的教程 (最新版2023)

    ​consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务,内置了服务注册与 发现框 架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其 他工具,这篇文章主要介绍了最新版2023 docker 安装Consul,需要的朋友可以参考下
    2023-12-12

最新评论