docker network ls 查看 docker 中的所有网络
docker network create test 创建名字为 test 的网桥
docker run --name=nginx --net=test -d nginx 创建容器,使用 --net=test 指定容器连接到 test 网桥
Docker可以有以下 4 种网络模式:
--net=host 指定。--net=none 指定。--net=bridge 指定,默认设置。--net=container:NAME_or_ID 指定。同时每个容器和 docker0 都建立了 veth pair 对, 来建立一个端口对,veth pair 对的一端连接的是容器通过 network namespace 隔离出来的网络空间并且命名为 eth0 另一端链接 docker0 网桥
docker0 会分配一个内网的 IP 给容器, 在宿主机内部可以通过这个 IP 来访问容器,容器之间也能够通过网桥通信
out-bound(出站):在 docker 默认安装的时在 iptable 中添加了一个转化规则,从docke0 出去的请求都做了一个NAT转换,把 docker0 转换成宿主机的 eth0 发送出去
in-bound(入站):宿主机的外部要想访问容器内部只能通过 docker-proxy 代理
查看 docker 得进程就会发现做的代理

查看容器端口映射和 docker-proxy 一致

原理图(桥接模式)

docker network create test 创建 test 网桥,发现宿主机多出来了一个网卡
docker run --name=nginx2 --net=test -d nginx)
https://www.cnblogs.com/zuxing/articles/8780661.html
https://blog.csdn.net/qq_21047625/article/details/88727611
通过 --link=xxx 参数关联容器
创建两个容器,后者关联前者

关联的原理(在声明关联关系的容器的 /etc/hosts 记录本地 dns 缓存)

因此可在 nginx-2 通过 nginx-1 访问容器 1

上边的两个容器都使用了默认的 bridge 网络,不在同一个网络中的两个容器可以关联吗?let’s check it out!

结果:并不能!说明不同网络的容器不能通过 --link 关联