Docker网络管理
网络相关命令
docker network create #自定义网络
docker network connect #连接完了
docker network ls #查看网络列表
docker network rm #移除网络
docker network disconnect #断开完了
docker network inspect #查看网络详细信息
默认网络
docker安装完成会默认创建3个网络,可以听歌docker network ls
(版本在1.9及以上)命令查看。
$ docker network ls
NETWORK ID NAME DRIVER
7fca4eb8c647 bridge bridge
9f904ee27bf5 none null
cf03ee007fb4 host host
bridge 是默认的容器网络在系统只为docker0
(可以通过ifconfig 或ip addr 查看),默认启动容器连接到docker0上,你可以再启动容器是通过–net参数docker run --net=<NETWORK>
指定容器连接网络。
none 表示容器没有网络功能,当你连接到容器(例:docker exec -it container_name /bin/bash
)时通过ifconfig
或ip addr
是查看不到其他网络适配器,只有本地环回网络。
host 当使用host网络时,container将使用主机的网络栈。
查看网络详细信息docker network inspect bridge
,可以通过inspect 查看 ls 列出的所有网络详细信息。
$ docker network inspect bridge
[
{
"Name": "bridge",
"Id": "f7ab26d71dbd6f557852c7156ae0574bbf62c42f539b50c8ebde0f728a253b6f",
"Scope": "local",
"Driver": "bridge",
"IPAM": {
"Driver": "default",
"Config": [
{
"Subnet": "172.17.0.1/16",
"Gateway": "172.17.0.1"
}
]
},
"Containers": {},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "9001"
}
}
]
这里不详细介绍所有参数,基本一看就可以了解其中`container`参数内容为属于这个网络的容器信息。
自定义网络
创建自定网络很简单docker network create --driver bridge mnet
,创建一个叫mnet
的bridge网络,
$ docker network inspect mnet
[
{
"Name": "mnet",
"Id": "50650309e0813bdad175b6c486168a3cdbcdc171adde3b21428c262943f5221b",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1/16"
}
]
},
"Internal": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
注意 自定义网络不支持link。
多主机网络
docker 多主机网络依赖分布式存储系统和docker 的libkv
库。后面不齐