docker的网络模式
文章中会通过busybox镜像,通过创建不同的网络模式,作出不同的效果:
root@test:~# docker pull busybox
四种网络模式:
· bridge: --net=bridge
默认网络,Docker启动后默认创建一个docker网桥,默认模式启动后,会为容器生成两张网卡:
· host:--net=host
容器不会获得一个独立的network namespace,而是与宿主机共享,即容器没有自己的网卡信息,而是使用宿主机的网卡,容器除了网络,其他全部隔离
该容器启动后,查看到的网卡信息与宿主机相同
· none:-net=none
获取独立的network namespace,但需要手动配置网卡信息
· container:-net=container:Name/ID
与制定的容器使用同一个network namespace,具备同样的网络配置信息,两个容器除了网络,其他都是隔离的。
root@test:~# docker run -it --name bs --rm -p 99:80 busybox ##busybox容器为一个非常简单的系统,无任何服务。
root@test:~# docker run --name nginx1 --rm -it --net container:bs nginx ##busybox容器的80端口映射到nginx
可通过宿主机的99端口,访问到nginx
· 自定义网络:
具备内部DNS发现,可以通过容器名或者主机名容器之间网络通信
一、创建一个网络:
root@test:~# docker network create bs_test
二、把需要相互通信的容器加入到同一个网络(主机名、ip):
root@test:~# docker run -it --name bs1 --rm --net bs_test ubuntu
root@test:~# docker run --rm -it --name bs2 --net bs_test ubuntu
这两个容器之间可通过IP、主机名、容器名ping通