Open qianlei90 opened 7 years ago
Tags: 印象笔记 Docker
docker官方文档Docker container networking的笔记。
[toc]
docker network ls
docker network inspect
docker run --network=<NETWORK>
docker默认提供了3种网络:bridge、host、none。
bridge
host
none
容器的网络接口跟主机一样。
除了lo接口外,容器没有任何其他网络接口。
lo
这是新建容器时默认使用的网络,也是使用得最多的网络。网络中的所有容器可以通过IP互相访问。 bridge网络通过网络接口docker0跟主机桥接,可以在主机上通过ifconfig docker0查看到该网络接口的信息。
docker0
ifconfig docker0
这是自定义网络中最简单的,跟docker提供的默认bridge相差无几。
$ docker network create --driver bridge isolated_nw 1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b $ docker network inspect isolated_nw [ { "Name": "isolated_nw", "Id": "1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Config": [ { "Subnet": "172.21.0.0/16", "Gateway": "172.21.0.1/16" } ] }, "Containers": {}, "Options": {}, "Labels": {} } ] $ docker network ls NETWORK ID NAME DRIVER 9f904ee27bf5 none null cf03ee007fb4 host host 7fca4eb8c647 bridge bridge c5ee82f76de3 isolated_nw bridge $ docker run --network=isolated_nw -itd --name=container3 busybox 8c1a0a5be480921d669a073393ade66a3fc49933f08bcc5515b37b8144f6d47c $ docker network inspect isolated_nw [ { "Name": "isolated_nw", "Id": "1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Config": [ {} ] }, # 注意"Containers"字段,跟之前相比,多了我们加进去的容器。 "Containers": { "8c1a0a5be480921d669a073393ade66a3fc49933f08bcc5515b37b8144f6d47c": { "EndpointID": "93b2db4a9b9a997beb912d28bcfc117f7b0eb924ff91d48cfa251d473e6a9b08", "MacAddress": "02:42:ac:15:00:02", "IPv4Address": "172.21.0.2/16", "IPv6Address": "" } }, "Options": {}, "Labels": {} } ]
两点限制:
link
docker_gwbridge
在下列两种情况下,docker_gwbridge网络会自动被docker创建
可以提前自己创建docker_gwbridge网络,否则docker会按默认的创建:
$ docker network create --subnet 172.30.0.0/16 \ --opt com.docker.network.bridge.name=docker_gwbridge \ --opt com.docker.network.bridge.enable_icc=false \ docker_gwbridge
overlay
可以在swarm的节点中创建overlay网络,该网络只对swarm集群的服务有效,在节点上不属于swarm集群的容器,运行docker run指令是无法使用该网络的。
docker run
# Create an overlay network `my-multi-host-network`. $ docker network create \ --driver overlay \ --subnet 10.0.9.0/24 \ my-multi-host-network 400g6bwzd68jizzdx5pgyoe95 # Create an nginx service and extend the my-multi-host-network to nodes where # the service's tasks run. $ docker service create --replicas 2 --network my-multi-host-network --name my-web nginx 716thylsndqma81j6kkkb5aus
如果overlay网络不是运行在swarm集群中,则需要一个KV存储,如Consul、Etcd、Zookeeper等。
# 创建overlay网络 docker network create --driver overlay my-multi-host-network
网络中的容器互相连通,不管是在哪台主机上。
docker运行了一个内置的DNS服务器,容器在做域名解析时先访问内置的DNS,失败后再去访问外网的DNS。
- 完 - 2017/03/13
深入Docker网络(一):概念和原理
Tags: 印象笔记 Docker
docker官方文档Docker container networking的笔记。
[toc]
1. docker自带的网络
docker network ls
:列出当前docker中已有的网络docker network inspect
:查看网络详情,比如查看网络中有哪些容器docker run --network=<NETWORK>
:指定运行容器时使用哪个网络docker默认提供了3种网络:
bridge
、host
、none
。1.1
host
网络容器的网络接口跟主机一样。
1.2
none
网络除了
lo
接口外,容器没有任何其他网络接口。1.3
bridge
网络这是新建容器时默认使用的网络,也是使用得最多的网络。网络中的所有容器可以通过IP互相访问。
bridge
网络通过网络接口docker0
跟主机桥接,可以在主机上通过ifconfig docker0
查看到该网络接口的信息。2. 用户自定义的网络
2.1
bridge
这是自定义网络中最简单的,跟docker提供的默认
bridge
相差无几。两点限制:
link
,可以通过暴露容器端口使外部网络来访问容器(?????)2.2
docker_gwbridge
在下列两种情况下,
docker_gwbridge
网络会自动被docker创建可以提前自己创建
docker_gwbridge
网络,否则docker会按默认的创建:2.3 swarm模式下的
overlay
可以在swarm的节点中创建
overlay
网络,该网络只对swarm集群的服务有效,在节点上不属于swarm集群的容器,运行docker run
指令是无法使用该网络的。2.4 外部KV存储模式下的
overlay
如果
overlay
网络不是运行在swarm集群中,则需要一个KV存储,如Consul、Etcd、Zookeeper等。网络中的容器互相连通,不管是在哪台主机上。
3. docker内置的DNS服务器
docker运行了一个内置的DNS服务器,容器在做域名解析时先访问内置的DNS,失败后再去访问外网的DNS。
- 完 - 2017/03/13