Docker系列文-----Docker的网络类型(4)
Docker里的常见文件及作用
docker常见文件的作用:
- config.v2.json---->存放着容器的配置的数据
- resolv.conf---->容器里的dns服务器的地址使用的是宿主机里的dns的配置(宿主机和容器的内容是一样的)
- hostname---->存放主机名的(容器中存放的是container的ID)
- hosts---->域名解析
- 这些文件都存放在/var/lib/docker/containers目录下
JSON(JavaScript 0bject Notation,Js对象简谱)是一种轻量级的数据交换格式
Docker 内部的网络类型
查看四种网络模式:
[root@sc-docker ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
fba19c7ace44 bridge bridge local
f6628b118aec host host local
bdd7dbdff48e none null local
创建一个网络的命名空间叫sc -create -d bridge
[root@sc-docker ~]# docker network create -d bridge sc
70d18d42e082a707aa50fd19520bdb57ebbf5beed3c97cb2ecda93c6ee2de04b
创建一个centos7的容器,使用sc这个网络命名空间 - -net
[root@sc-docker ~]# docker run -it -d --name shiyan-centos-1 --net sc centos
73c1eeddb6f4713febe2b0ddb6fd8fd9250962fe834d768f5fe3693d4bf43351
Docker网络模式 | 配置 | 说明 |
---|---|---|
host模式 | –net=host | 容器和宿主机共享Network namespace。 |
container模式 | –net=container:NAME_or_ID | 容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。 |
none模式 | –net=none | 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。 |
bridge模式 | –net=bridge | (默认为该模式) |
1.桥接模式(默认):
当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
2.host模式:
容器和宿主机共享ip地址和端口。容器不会虚拟出自己的网卡、配置自己的IP等。
host模式下,最大优势就是网络性能比较好,但是宿主机的端口一旦被使用了,那么此容器也不能够再使用此端口。(因为容器与host是共用端口的)
3.container模式
这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享。也不会虚拟出网卡和配置IP。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。这个在以后k8s的学习中十分有用。(Pod集群)
4.none模式
使用none模式,Docker容器拥有自己的Network Namespace,但是并不为Docker容器进行任何网络配置。也就是说,
这个Docker容器没有网卡、IP、路由等信息。需要我们自己配置。没办法连接外部网络,封闭的网络能很好的保证容器的安全性。
5.overlay(容器与容器之间)
Overlay网络实际上是目前最主流的容器跨节点数据传输和路由方案
overlay网络用于连接不同机器上的docker容器,允许不同机器上的容器相互通信,同时支持对消息进行加密。
-----》实现跨主机的docker容器之间的通信