docker提供几种网络,它决定容器之是以及外界和容器之间怎么样去通讯。
能够经过以下方法查看docker的网络:web
docker network ls
查看bridge网络信息:docker
docker network inspect bridge
会列出bridge网络的相关信息,containers表示使用了这网络的容器。网络
建立一个使用bridge网络的容器:code
docker run -d --name web1 --net bridge nginx
建立一个使用none网络的容器:dns
docker run -d --name web_none --net none nginx
查看none网络信息:it
docker network inspect none
建立一个使用host网络的容器:class
docker run -d --name web_host -net host nginx
能够看到该容器没有IP地址,由于它直接使用宿主机IP地址容器
若是想让外界能够访问到基于bridge网络建立的容器提供的服务,则必需要告诉docker要使用的端口。
能够经过以下方法查看镜像会使用哪些端口:sed
docker inspect nginx | jq .[]."ContainerConfig"."ExposedPorts"
在建立容器的时候能够指定这个容器的端口与主机端口的映射关系:
docker run -d --name web -p 8888:80 nginx -p,--publis: 能够指定主机与容器的端口关系,冒号左边是主机的端口,右边是映射到容器中的端口 -P:该参数会分配镜像中全部的会使用的端口,并映射到主机上的随机端口
查看容器的端口状况:
docker port web
若是建立容器时,-p参数后面只一个指定端口,意思是主机会随机一个端口,映射到容器的该指定端口:
docker run -d --name web -p 80 nginx
能够基于某一个类型的网络去建立一些自定义的网络,这样属于这个网络的容器就能够单独隔离出来,它们之间能够相互通讯,而不在这个网络的容器就不能直接访问到它们。一个容器能够属于多个网络,同一个自定义网络下的容器能够经过各自的容器名访问到对方,由于会使用到docker内嵌的一个dns功能。
建立一个自定义网络:
docker network create --driver bridge custom #--driver用于指定网络类型
能够经过docker network ls
查看到新建立的custom网络相关信息,Subnet表示这个网络下的子网IP段,那么基于custom自定义网络建立的容器IP都会以该IP段开头。
基于custom网络建立容器:
docker run -d --name web2 --net custom nginx
若是想将已经建立的容器放到自定义网络中,使用以下指令:
docker network connect custom web
将web从bridge网络中移除:
docker network disconnect bridge web