docker网络配置
当你安装了 docker, 它会自动创建 3 个网络,可以使用 docker network ls 命令来查看
当你运行一个容器的时候,可以使用 --network 参数来指定你的容器连接到哪一个网络
docker network ls
提示:
在计算机网络中,主机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 模式
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 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 network rm xx
OK!到这就结束了,希望能帮到你!!!