docker网络配置


当你安装了 docker, 它会自动创建 3 个网络,可以使用 docker network ls 命令来查看



当你运行一个容器的时候,可以使用 --network 参数来指定你的容器连接到哪一个网络



docker network ls

docker shellcrash 旁路由_IP


提示:



在计算机网络中,主机ID全部为0的地址为网络地址,而主机ID全部为1的地址为广播地址
这2个地址是不能分配给主机用的


一,bridge 模式



当 Docker 进程启动时,会在主机上创建一个名为 docker0 的虚拟网桥,此主机上启动的 Docker 容器会连接到这个虚拟网桥上


虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中


从 docker0 子网中分配一个 IP 给容器使用,并设置 docker0 的 IP 地址为容器的默认网关。 在主机上创建一对虚拟网卡 veth pair 设备, Docker 将 veth pair 设备的一端放在新创建的容器中,并命名为eth0 (容器的网卡),另一端放在主机中,以 vethxxx 这样类似的名字命名,并将这个网络设备加入到docker0 网桥中


bridge 模式是 docker 的默认网络模式,不写 --net 参数,就是 bridge 模式

 

docker shellcrash 旁路由_IP_02



docker shellcrash 旁路由_linq_03



docker0就像是一个路由器,容器就像是路由器下的设备,它们在同一个网段内,可以互相ping通

1,查看 bridge 信息



docker inspect bridge

2,打开容器

docker run -itd --net=bridge --name cname iname

3,查看docker0网桥         查看容器网络

ip addrifconfig



1,创建一个镜像

docker build -t spring:1.0 .

2,在镜像中创建一个容器

docker run -itd --name bridge01 spring:1.0

4,当我们在创建一个容器bridge02 用01去 ping 01,镜像内容器类都是可以互相 ping 通的

进入 02 容器 ping 01 的端口[root@izbp19vnkmsiw1q26cemqmz zking]# docker exec -it bridge02 sh/usr/local/java # ping 172.17.0.2

docker shellcrash 旁路由_gnu_04

外部访问

设置端口映射



docker run -itd --name bridge03 -p 8081:8080 spring:1.0

-p 参数可以出现多次,绑定多个端口号



docker run -itd --name bridge05 -p 8082:8080 -p 8083:8080 spring:1.0



二,host模式

如果启动容器的时候使用 host 模式,那么这个容器将不会获得一个独立的 Network Namespace ,而是和宿主机共用一个Network Namespace


容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口


但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的


docker run -itd --name host01 --net=host spring:1.0

三,自定义IP

创建

docker network create --subnet 127.18.0.0/16 mynet

docker shellcrash 旁路由_linq_05

删除

docker network rm xx

docker shellcrash 旁路由_docker_06

OK!到这就结束了,希望能帮到你!!!