Docker容器网络基础概述

 更新时间:2023年09月26日 11:39:18   作者:Mr_csc  
这篇文章主要介绍了Docker容器网络基础概述,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

开放容器端口

当使用docker create或者docker run创建并运行一个容器的时候,默认不会开放容器端口。

可以使用--publish或者-p选项来开放容器的端口,这时Docker就会创建一条防火墙规则,将宿主机的端口和容器的端口关联起来,宿主机的这个端口接收和发出的所有数据都会被转发到容器的端口中,这样的话外界或者宿主机上的其他容器和进程就可以通过宿主机的端口访问容器的端口。

将容器的端口开放其实是一种不安全的行为,如果只是想让同一台宿主机之间的容器可以通过网络相互通信的话,不需要开放它们的端口,只需要借助Docker网络(Docker Network)即可。

Docker网络(Docker Network)

Docker可以创建各种类型的虚拟网络,例如可以是bridge网络,也可以是overlay网络等等。
可以通过docker network创建、查看当前宿主机上的Docker Network,让一个容器加入Docker Network等等。
一个容器可以加入多个Docker Network。

容器在Docker网络中的IP地址和hostname

默认情况下,当一个容器加入了一个Docker Network之后,Docker会自动分配给这个容器一个IP地址。也可以在容器加入Docker Network的时候,指定一个ip地址给它。
容器的hostname默认是该容器的ID。也可以在容器加入Docker Network的时候指定一个hostname给它。

DNS服务

默认情况下,Docker会通过bind mount的方式把宿主机的\etc\resolv.conf挂载到每一个容器中去。因此,每一个容器的DNS配置都和宿主机的是一样的。

如果容器加入的是用户通过docker network create创建出来的自定义网络,那么容器将会使用的Docker内置的DNS服务器,内置的DNS服务器将会把外部IP地址的查找转发给宿主机上配置的DNS服务器。

也可以在docker create或者docker run的时候指定容器的DNS配置。

需要注意的是:容器并不会共享宿主机上的\etc\hosts文件,可以在运行docker run时指定要加入容器的\etc\hosts文件中的内容。

Docker Network Drivers

Docker支持以下不同类型的Docker Network:

Network DriverDescript
bridge使用docker network create创建网络时创建出来的默认网络类型。当同一台宿主机上的多个容器之间需要相互通信的时候,通常会使用这种网络。在这种网络中的容器无法和宿主机以及别的网络的容器进行通信
host将宿主机和容器之间相连接的网络类型,容器可以直接使用宿主机的网络
overlay将多个Docker daemon连接在一起,允许Swarm服务和容器跨节点(主机)进行网络通信
ipvlan这种网络允许用户对IPv4和IPv6的寻址有着完全的控制
macvlan允许将一个MAC地址分配给容器,Docker daemon会根据容器的MAC地址对数据进行路由。一般来说这种类型的网络用于部署那些古老的遗留应用程序,这些程序面向的是物理网络开发,而不是网络协议栈
none将一个容器和宿主机以及其他容器完全隔离开来的网络类型,这种网络在Swarm服务中不可使用

代理服务器

可以给Docker Client或者Docekr Daemon设置代理服务器(proxy server)。

包过滤

当把某一个容器的端口开放了之后,为了安全起见一般会需要对这个端口的数据包进行过滤。在Linux中,Docker是通过iptables规则来进行包过滤的。

Docker会在iptables中插入两条iptables chain,分别叫做DOCKER-USERDOCKER,并且会保证所有的网络包都会先通过这两个chain的检查,它们都属于FORWARD chain的一部分。

所有容器的iptables规则都会被自动加入到DOCKER chain中。

不要手动添加或修改或删除DOCKER chain中的内容,但是可以向DOCKER-USER chain中添加规则,这些规则会比DOCKER chain中的规则优先级更高。事实上,Docker总会保证在FORWARD chain中,DOCKER-USER chain的优先级是最高的,其次就是DOCKER chain,其他的iptables chain中的规则,不管是手动添加的,还是防火墙添加的,优先级都不会比它们两个高。

防火墙

如果运行Docker的系统使用了firewalld并且开启了--iptables,Docker就会自动创建一个名为dockerfirewalld zone,并把所有由Docker创建的网络接口(例如docker0)放入到这个zone里面。

Debian和Ubuntu自带的防火墙ufw使用的是iptables里面的INPUTOUTPUT chain,而Docker会在nat表中处理容器的网络流量,因此Docker容器的流量实际上并不会经过ufw的过滤。

参考 https://docs.docker.com/network/

以上就是Docker容器网络基础概述的详细内容,更多关于Docker容器网络的资料请关注脚本之家其它相关文章!

相关文章

  • 详解使用docker搭建hadoop分布式集群

    详解使用docker搭建hadoop分布式集群

    本篇文章主要介绍了详解使用docker搭建hadoop分布式集群,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • 详解挂载运行的docker容器中如何挂载文件系统

    详解挂载运行的docker容器中如何挂载文件系统

    这篇文章主要给大家介绍了如何在挂载运行中的docker容器中挂载文件系统,文中通过一步步的实践过程介绍的很详细,相信对有需要的朋友们来说具有一定的参考借鉴价值,感兴趣的朋友们下面来一起看看吧。
    2016-12-12
  • docker已启动容器修改添加端口映射的两种方法

    docker已启动容器修改添加端口映射的两种方法

    最近工作中遇到一个问题,docker容器启动后怎么修改端口映射?通过查找相关资料解决了,这篇文章主要给大家介绍了关于docker已启动容器修改添加端口映射的两种方法,需要的朋友可以参考下
    2022-08-08
  • 详解使用 docker compose 部署 golang 的 Athens 私有代理问题

    详解使用 docker compose 部署 golang 的 Athens 私有代理问题

    这篇文章主要介绍了使用 docker-compose 部署 golang 的 Athens 私有代理,帮助大家快速学习athens 如何构建私有代理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • 使用Docker 安装 Jenkins的方法

    使用Docker 安装 Jenkins的方法

    这篇文章主要介绍了使用Docker 安装 Jenkins的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Docker Compose与Docker镜像仓库详解

    Docker Compose与Docker镜像仓库详解

    Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器,这篇文章主要介绍了Docker Compose与Docker镜像仓库,需要的朋友可以参考下
    2023-03-03
  • docker中容器运行时如何将目录和宿主机进行挂载

    docker中容器运行时如何将目录和宿主机进行挂载

    对于一个已经运行的容器,如果后续需要新挂载一个目录怎么办?下面这篇文章主要给大家介绍了关于docker中容器运行时如何将目录和宿主机进行挂载的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-05-05
  • Docker创建nacos容器的方法

    Docker创建nacos容器的方法

    这篇文章主要介绍了Docker创建nacos容器的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2024-03-03
  • Docker镜像多架构构建介绍

    Docker镜像多架构构建介绍

    这篇文章主要介绍了Docker镜像多架构构建介绍,文章围绕主题展开详细的介绍,具有一点定的参考价值,感兴趣的小伙伴可以参考一下
    2022-09-09
  • Docker使用nodejs镜像构建express服务的方法

    Docker使用nodejs镜像构建express服务的方法

    这篇文章主要介绍了Docker使用nodejs镜像构建express服务,主要包括nodejs容器的启动,安装nodejs第三方依赖模块及启动nodejs服务的相关操作,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-07-07

最新评论