Docker提供了四种网络模式:
host模式:
如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace 而是和宿主机器共用一个Network Namespace 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的ip和端口,但是容器的其他方面,如文件系统,进程列表等还是和宿主机器隔离的
container模式:
Container模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机器共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP,端口范围等。同样,两个容器除了网络方面,其他的如文件系统,进程列表等还是隔离的。两个容器的进程可以通过localhost网卡设备通信
none模式:
使用none模式,docker容器拥有自己的Network Namespace,但是,并不为docker容器进行任何网络配置,也就是说,这个docker容器没有网卡,ip,路由等信息。需要我们自己为docker容器添加网卡,配置ip等
bridge模式:
bridge模式是Dokcer默认的网络设置,此模式会为每一个容器分配Network Namespace,设置ip等,并将一个主机上的docker容器连接到一个虚拟网桥上
桥接网络详解:
当docker server启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的docker容器会连接到这个虚拟网桥上,虚拟网桥的工作方式和物理交换机类似,这样主机上所有容器就通过交换机连在了一个二层网络中
外界访问容器:
-P:将外界端口映射到容器的某个端口上
①docker run -it -P XXXX /bin/bash
②这里我们可以看到 外界32771端口映射到容器8080端口
③访问明哥副武器的32771端口
-p:与大P不同的是,小P则可以指定要映射的端口,并且,在一个指定端口上只可以绑定一个容器
使用hostPort:containerPort格式本地的5000端口映射到容器的5000端口,可以执行
docker run -d -p 5000:5000 trainiing/webapp python app.py (宿主机端口:容器端口)
网络配置的查看:
①docker inspect --format '{{.NetworkSettings}}' 容器id (毕竟不直观)
②docker inspect 容器id