docker 网络

分类

bridge 网络

创建容器的时候,如果不指定 --net 参数,则默认使用 bridge 网络,在 bridge 网络下的容器可以直接通信

none 网络

和外界完全隔离的网络环境

docker  run -d --name test_none --net none nginx

host 网络

使用主机网络,即和主机 ip 一样

命令

查看 docker 网络

docker network ls

具体查看某个网络

docker network inspect bridge

查看 docker 镜像使用端口

查找 ExposedPorts 字段:

docker inspect jenkins

查看 docker 容器所使用的端口

docker port `容器id/容器名`

端口绑定

将容器的 80 端口 绑定到本机任意端口:

docker  run -d  --name nginx --publish 80 nginx

将容器所需要绑定的端口绑定到本机的任意端口:

docker run  -d  --name nginx --publish-all nginx

或者简写:

docker run  -d  --name nginx -P nginx

自定义网络

我们可以基于某个网络创建自定义网络,属于这个网络的容器会被单独隔离出来,这些容器可以直接通信,但是不在这个自定义网络的容器不能够直接访问他们,一个容器可以使用多个网络。在自定义网络中的容器可以通过 docker 内嵌的dns 功能使用各自的名字来访问对方。

创建一个新的网络

docker network create --driver bridge nginx

把容器放入指定的网络

docker network connect `连接到的网络名` `要放到网络中的容器名`

将容器从指定网络中移除

docker network disconnect `要去掉的网络名` `要从网络中拿掉的容器名`