前面学习的Docker一些知识真的是基础中的基础,镜像的制作过程,简单的Dockerfile你会写一些,镜像的操作和容器操作那几个常见的命令也基本上都介绍过了。如果你只是想简单了解并玩一玩Docker,到这里,差不多学习完了。
接下来几篇文章,我们重点来学习Docker里面的网络模块。学习Docker,先学习镜像操作,然后学习容器操作,剩下的网络和存储的部分,学习是有一点困难的。学习网络和存储,需要一些网络和文件系统的专业的知识,其实更加需要linux的知识。我们先学习Docker的网络部分,慢慢学习,我们毕竟只需要学习基础就好。
本篇,先介绍Docker网络有哪几种模式,然后解释多个容器之间的通信如何实现,以及一个容器为什么可以连接外部的英特网。
Docker网络
在Docker中,网络有单机网络和多机网络区分。在单机网络又有几种网络模式或者接口,请看下图。
我们重点学习单机网络,而且重点学习Bridge Network这个类型。这几种分类,这里不介绍,后面慢慢来学习。在本篇,知道有这几种网络模式就好了。
Linux网络命名空间
命名空间对应英文单词就是namespace,在linux机器上,关于网络网卡,你可能看到过eth0 eth1等,这个eth0指的是使用了eth0这块网卡,还有这个机器的IP地址和MAC地址,这些信息其实就是网络命名空间。
我们来启动一个busybox的容器,看看网络命名空间具体一些信息。
如果你Docker机器环境没有拉取busybox,你先去pull一个到本地,为了方便我们练习,这里介绍一个让容器一直运行的命令。
下面输入ip add 就能获得这个test1容器的网络命名空间信息。
这个ip是一个在busybox镜像已经安装好的软件,如果是centos,你可以通过yum install ip来安装这个组件。这个linux网络命名空间有什么用呢,就是用来隔离多个容器的网络命名空间,下篇我们来学习Docker里面的网络命名空间和本机linux网络命名空间有什么关系。