3 Oct 2019

docker-3-网络

网络

网络

docker提供了几种网络类型,它决定了容器之间,容器和外界之间 怎么样相互通信。

docker network ls
bridge 桥接网络,属于这个网络的容器相互之间可以通信,但是外界需要访问到容器需要使用这个桥接网络。我们可以使用绑定端口的方法让外界跟容器使用指定的端口进行通信
none 无网络,使用这种容器网络会完全隔离
host 主机网路,使用这种网络会和主机使用同样的网络,容器对外界是完全开放的

理解bridge网络

docker network inspect bridge
Containers 字段对应的值是 使用该网络的容器列表
创建容器的时候为其指定网络类型
docker run -d --name abc --net 网络名称 镜像名称
如果不使用--net则默认是bridge网路
我们可以先建立两个容器,然后使用一个容器去ping另外一个容器的ipport
ip addr

理解none网络

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

理解host网络

docker run -d --name abc --net host nginx 
我们可以通过 docker network inspect host 查看ip,发现它也没有ip,因为它和主机是一样的
进入容器之后 ip addr 记录下ip地址
然后退出, docker-machine ssh default 使用 ifconfig 发现和刚才ip一致
所以这个容器对于外界是开放的

端口

端口

docker inspect 镜像名字
Config下面 ExposedPorts 里面会告诉你对外开放的端口
在创建容器的时候,我们可是指定主机和容器端口的映射关系
docker run -d --name web3 --publish (简写为-p)  主机端口号:容器端口号 容器镜像
docker run -d --name web3 -p 80:80 nginx

端口绑定

查看容器和主机绑定的端口
docker inspect 容器名称
NetworkSettings下面Ports下面,查看绑定情况
docker port 容器名字 依然可以查看绑定情况
docker run -d --name web1 --publish 80 nginx 容器端口是80,主机对应端口则是随机的
docker run -d --name web1 --publish-all nginx
或者 docker run -d --name web1 -P 80 nginx
以上这两个命令会自动公布镜像需要对外公布的端口。

自定义网络

自定义网络

基于某个网络创建自定义的网络,这样属于这个网络的容器就可以单独隔离出来,他们之间可以相互通信。
但是其他的不在这些自定义网络上的容器不可以访问他们。一个容器可以属于多个网络。 在用户自定义网络上的容器他们之间可以使用各自容器的名字访问到对方,因为会用到docker内嵌的dns功能,创建新的网络我们可以使用如下命令。
docker network create --driver(指定网络类型) bridge web(网路名字)
docker network inspect web 可以查看这个网络信息

把容器放到自定义网络里

在创建容器的时候,我们可以把容器放到指定的网络里面。
docker run -d --name web5 --net web nginx
也可以把其他容器手动放到web这个网路里面
docker network connect web(网路名字) web3(要放到这个网络里的容器的名字)
docker network disconnnect

Tags:
Stats:
0 comments