docker网络
网络
服务器
- io:本机回环地址 127.0.0.1
- eth0:服务器的内网地址 172.16.0.17
- docker0:172.17.0.1 【只要安装docker,该网卡会自动安装,用于桥接外网】
容器内
docker run -it --name=centos01 IMAGES-ID /bin/bash
docker exec -it centos01 ip addr
结论
- 每启动一个容器,docker就会给容器分配一个ip. 跟docker0的网段保持一致(即: 172.17.x.x),宿主机可以ping通容器网络.
- docker0起着桥接各容器网卡的作用, 因此容器之间分配的ip可以互ping. 如果需要ping容器名, 则需要使用--link命令(已不推荐使用)
Docker四种网络模式
bridge模式(默认)
会为每个容器分配一个独立的Network Namespace()
同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的
bridge为默认模式,不需要使用参数--net去指定
host模式
docker run时指定参数 --net=host,容器将不会虚拟出IP/端口,而是使用宿主机的IP和端口【-p参数将无效】
none模式
docker run时指定参数 –-net=none 指定,容器没有网卡、IP、路由等信息
docker run时指定参数 –net=container 指定,新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享