docker 网络
容器要想访问外部网络,需要本地系统的转发支持。
在Linux 系统中,检查转发是否打开。
sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
如果为 0,说明没有开启转发,则需要手动打开。
sysctl -w net.ipv4.ip_forward=1
如果在启动 Docker 服务的时候设定 --ip-forward=true
, Docker 就会自动设定系统的 ip_forward 参数 为 1。
--link 同一个宿主机的容器间的通信
测试 先建立一个容器
docker run -itd --name my -p 8081:80 test
然后再建立一个容器 需要 与 my容器通信
docker run -itd --name my1 -p 8082:80 --link my test
--link my 就行 很简单
上面 这个没法测试 ping 下面来一个能测试 的
busybox 阉割版的liunx
docker pull busybox
建立连接
docker run -itd --name busybox1 busybox
docker run -itd --name busybox2 --link busybox1 busybox
现在是 busybox2 与 busybox1 建立连接
docker inspect busybox1
查看 busybox1 ip
进入 busybox2 ping busybox1 的 ip
docker exec -it busybox2 ping 172.17.0.2
ping 成功
默认docker 是有网络的 查看网络
docker network ls
bridge:桥接模式(默认)
none:不配置网络
host:和宿主机共享网络
container:容器网络连通(用得少,局限大)
如果 多个容器通信 那么 加到同一个网络中去就行了
docker run -itd --name b1 --net bridge busybox
docker run -itd --name b2 --net bridge busybox
docker run -itd --name b3 --net bridge busybox
用同样的方法
docker inspect b3
查看 b3的 ip
dokcer exec -it b2 ping 172.17.0.6
结果也是ping 通的
自建 网络
docker network create -d bridge mynet1
查看网络
docker network ls
docker run -itd --network mynet1 --name b1net busybox
查看网络是否添加成功了
docker inspect b1net