Docker network 02操作
温馨提示:
本文最后更新于 2024年04月10日
,已超过 374 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
Docker network 命令**
network基本命令操作参数
[root@app01 ~]# docker network create --help
Usage: docker network create [OPTIONS] NETWORK
Create a network
Options:
--attachable Enable manual container attachment
--aux-address map Auxiliary IPv4 or IPv6 addresses used by Network driver (default map[])
--config-from string The network from which copying the configuration
--config-only Create a configuration only network
-d, --driver string Driver to manage the Network (default "bridge")
--gateway strings IPv4 or IPv6 Gateway for the master subnet
--ingress Create swarm routing-mesh network
--internal Restrict external access to the network
--ip-range strings Allocate container ip from a sub-range
--ipam-driver string IP Address Management Driver (default "default")
--ipam-opt map Set IPAM driver specific options (default map[])
--ipv6 Enable IPv6 networking
--label list Set metadata on a network
-o, --opt map Set driver specific options (default map[])
--scope string Control the network's scope
--subnet strings Subnet in CIDR format that represents a network segment
查看网络network ls
docker network ls
创建一个网络 create name
# 基础用法
docker network create --driver=bridge --gateway=172.16.100.1 --subnet=172.16.100.0/24 mynet
# 创建网络时是可以添加一系列参数的:
# --driver:驱动程序类型,不指定任何选项的时候默认的–driver(网络模式)也是bridge(桥接)
# --gateway:主子网的IPV4和IPV6的网关,不指定自动生成
# --subnet:代表网段的CIDR格式的子网,不指定自动生成
# mynet:自定义网络名称
删除一个网络 rm name
docker network rm mynet
# 如果网络中有容器连接需要加 -f 参数强制删除,建议不要这样执行,网络中若没有任何容器连接直接执行删除即可.
查看一个网络的详情 inspect name
$ docker network inspect oneblog_oneblog
[
{
"Name": "oneblog_oneblog",
"Id": "2cb8fd6236b09b9519717d810583b124622eedad75fa7fc224548b58edc7c401",
"Created": "2023-05-25T03:30:11.600251673Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {
"com.docker.compose.network": "oneblog",
"com.docker.compose.project": "oneblog",
"com.docker.compose.version": "2.15.1"
}
}
]
删除所有未使用的网络 network prune name
docker network prune
# ps: -f 强制删除,不提供任何确认情况下删除
将一个容器加入到一个网络中 connect ,取消 disconnect
docker network connect 网络名称 容器ID/容器名称
docker network disconnect 网络名称 容器ID/容器名称
# ps : -f 强制删除参数
默认情况下,来自连接到默认网桥网络的容器的流量 不会转发到外界。要启用转发,您需要更改两个设置。这些不是Docker命令,它们会影响Docker主机的内核。
配置Linux内核以允许IP转发
# 如果下面命令的值为0,说明禁止进行IP转发;如果是1,则说明IP转发功能已经打开。
cat /proc/sys/net/ipv4/ip_forward
# 临时开启,(写入内存,在内存中开启)
echo "1" > /proc/sys/net/ipv4/ip_forward
# 永久开启,(写入内核)
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p # ----加载,使得配置文件立即生效,等同于 sysctl -p /etc/sysctl.conf
将策略的iptables FORWARD策略从更改DROP为 ACCEPT iptables -P FORWARD ACCEPT
Docker运行容器指定网络模式
docker run --name nginx0 -p 8080:80 -d nginx
docker run --net=bridge --name nginx1 -p 8081:80 -d nginx
# 绑定了主机的IP
docker run --net=host --name nginx2 -d nginx
#查看bridge网络,可以看到容器nginx0和nginx1的ip
$ docker network inspect bridge
[
{
"Name": "bridge",
"Id": "4cac0b7e0b1abe7157b0183e1c92c3ada2de897db344abdca89384f4580032ce",
"Created": "2023-04-09T23:38:32.185797849+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"1823067a3bd8b62023793287eba1377f0bd70300d05b273f6e05d411c08fca9b": {
"Name": "nginx1",
"EndpointID": "69354cde26d8a5a141c20437029c99ab328f2c76eb4d164d98ed146d90be57fa",
"MacAddress": "02:42:ac:11:00:03",
"IPv4Address": "172.17.0.3/16",
"IPv6Address": ""
},
"58702d97fd30b2d10c20de6608fc7c9c82485c48bb337dd2fbfc5812180f3cf9": {
"Name": "nginx0",
"EndpointID": "4a212c9017ea1240c749041a57733d21b3f515393da716b6f94cc4fe03290e0d",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
},
"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": "1500"
},
"Labels": {}
}
]
正文到此结束
- 本文标签: docker
- 本文链接: https://www.letcode.cn/article/29
- 版权声明: 本文由Jack.Chen原创发布,转载请遵循《 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权