一.网络模式
1.bridge:默认网络
docker启动后创建一个docker0的网桥,默认创建的容器也是添加到这个网桥中
例如:
docker run -itd 镜像名 //默认使用bridge
2.host
容器不会获得一个独立的network namespace,而是与宿主机公用一个,这就意味着容器不会有自己的网卡信息
例如:
docker run -itd --net=host 镜像名 //生成的容器和宿主机的网络一模一样,这样的容器相当于宿主机的基础上起了个应用,这样的网络性能比网桥好
3.none
获取独立的network namespace,但不为容器进程任何的网络配置,需要我们自己手动设置
例如:
docker run -itd --net=none 镜像名 //生成的容器是本地回环(127.0.0.1)
4.container
与指定的容器使用同一个network namspace,具有同样的网络配置信息,两个容器除了网络,其他都还是隔离的
例如:
docker run -itd --net=container:容器1 容器2 //这个功能就是模仿容器1的网络,所生成的容器2网络是和容器1相同的
5.自定义网络
与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名容器之间网路通信
例如:
docker network ls //查看网络
docker network create test //创建test网络
docker run -itd --name my1 --net=test nginx //用新的网桥创建容器,然后通过设置了名字my1,就可以通过my1来进行网络通信
*可以通过自定义网络来自定义网段
docker network create --driver bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 mytest1 //创建一个自定义网络,网段为192.168.0.0/24,网关为192.168.0.1,名为mytest1的网络