Docker 网络配置 ( bridge 模式 && host 模式 && 自定义IP )

docker网络配置

当你安装了 docker, 它会自动创建 3 个网络,可以使用 docker network ls 命令来查看
当你运行一个容器的时候,可以使用 --network 参数来指定你的容器连接到哪一个网络
docker network ls

Docker 网络配置 ( bridge 模式 && host 模式 && 自定义IP )_第1张图片

提示:
在计算机网络中,主机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 网络配置 ( bridge 模式 && host 模式 && 自定义IP )_第2张图片
Docker 网络配置 ( bridge 模式 && host 模式 && 自定义IP )_第3张图片

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

1,查看 bridge 信息
docker inspect bridge

2,打开容器

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

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

ip addr
ifconfig

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 网络配置 ( bridge 模式 && host 模式 && 自定义IP )_第4张图片

 外部访问

设置端口映射
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 网络配置 ( bridge 模式 && host 模式 && 自定义IP )_第5张图片

删除

docker network rm xx

Docker 网络配置 ( bridge 模式 && host 模式 && 自定义IP )_第6张图片

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

你可能感兴趣的:(Docker,p2p,gnu,linq)