如何创建docker network 如何修改docker network inspect myn...

\u5982\u4f55\u521b\u5efadocker network

\u4f7f\u7528docker network create\u547d\u4ee4\u6765\u521b\u5efa\uff0c\u53ea\u80fd\u521b\u5efadocker\u5185\u5efa\u7684\u7f51\u7edc\u6a21\u5f0f
\u4f7f\u7528docker plugin\uff0c\u521b\u5efa\u81ea\u5b9a\u4e49\u7f51\u7edc

\u4f7f\u7528docker\u547d\u4ee4\u521b\u5efa\u7f51\u7edc

Docker\u4e2d\u5185\u7f6e\u7684\u7f51\u7edc\u6a21\u5f0f\u5305\u62ec\u5982\u4e0b\u51e0\u79cd:

bridge \u6211\u4eec\u57fa\u4e8e\u8be5\u7f51\u7edc\u6a21\u5f0f\u521b\u5efa\u4e86mynet\u7f51\u7edc
host \u672c\u5730\u7f51\u7edc\u6a21\u5f0f
macvlan \u8fd9\u4e2a\u6a21\u5f0f\u8c8c\u4f3c\u662f\u6700\u65b0\u52a0\u7684
null \u65e0\u7f51\u7edc
overlay \u7528\u4e8eswarm\u96c6\u7fa4\u4e2d\u5bb9\u5668\u7684\u8de8\u4e3b\u673a\u7f51\u7edc\u8bbf\u95ee

docker create network\u547d\u4ee4\u5305\u542b\u4ee5\u4e0b\u53c2\u6570\uff1a
Flag shorthand -h has been deprecated, please use --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[])
-d, --driver string Driver to manage the Network (default "bridge")
--gateway stringSlice IPv4 or IPv6 Gateway for the master subnet
--help Print usage
--internal Restrict external access to the network
--ip-range stringSlice 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 (default [])
-o, --opt map Set driver specific options (default map[])
--subnet stringSlice Subnet in CIDR format that represents a network segment

\u521b\u5efaoverlay\u6a21\u5f0f\u7684\u5168\u5c40\u7f51\u7edc\uff0c\u6211\u4eec\u53ef\u4ee5\u770b\u5230\u65b0\u521b\u5efa\u7684mynet1\u7684scope\u662fswarm\uff0c\u5373\u96c6\u7fa4\u8303\u56f4\u53ef\u89c1\u7684\u3002

172.18.0.1:root@sz-pg-oam-docker-test-001:/root]# docker network create -d overlay mynet1
x81fu4ohqot2ufbpoa2u8vyx3
172.18.0.1:root@sz-pg-oam-docker-test-001:/root]# docker network ls
NETWORK ID NAME DRIVER SCOPE
ad3023f6d324 bridge bridge local
346c0fe30055 crane_default bridge local
4da289d8e48a docker_gwbridge bridge local
3d636dff00da host host local
tx49ev228p5l ingress overlay swarm
x81fu4ohqot2 mynet1 overlay swarm
cc14ee093707 none null local
172.18.0.1:root@sz-pg-oam-docker-test-001:/root]# docker network inspect mynet1
[
{
"Name": "mynet1",
"Id": "x81fu4ohqot2ufbpoa2u8vyx3",
"Created": "0001-01-01T00:00:00Z",
"Scope": "swarm",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": []
},
"Internal": false,
"Attachable": false,
"Containers": null,
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "4097"
},
"Labels": null
}
]

\u719f\u6089 Linux \u6280\u672f\u7684\u4eba\u90fd\u77e5\u9053\uff0c\u5bb9\u5668\u53ea\u662f\u5229\u7528\u540d\u5b57\u7a7a\u95f4\u8fdb\u884c\u9694\u79bb\u7684\u8fdb\u7a0b\u800c\u5df2\uff0cDocker \u5728\u5bb9\u5668\u5b9e\u73b0\u4e0a\u4e5f\u662f\u5229\u7528\u4e86 Linux \u81ea\u8eab\u7684\u6280\u672f\u3002
\u6709\u65f6\u5019\uff0c\u6211\u4eec\u9700\u8981\u5728\u5bbf\u4e3b\u673a\u4e0a\u5bf9\u5bb9\u5668\u5185\u8fdb\u884c\u4e00\u4e9b\u64cd\u4f5c\uff0c\u5f53\u7136\uff0c\u8fd9\u79cd\u7ed5\u8fc7 Docker \u7684\u64cd\u4f5c\u65b9\u5f0f\u5e76\u4e0d\u63a8\u8350\u3002
\u5982\u679c\u4f60\u4f7f\u7528\u7684\u662f\u6bd4\u8f83\u65b0\u7684 Docker \u7248\u672c\uff0c\u4f1a\u5c34\u5c2c\u7684\u53d1\u73b0\uff0c\u76f4\u63a5\u4f7f\u7528\u7cfb\u7edf\u547d\u4ee4\uff0c\u4f1a\u65e0\u6cd5\u8bbf\u95ee\u5230\u5bb9\u5668\u540d\u5b57\u7a7a\u95f4\u3002
\u8fd9\u91cc\uff0c\u9996\u5148\u4ecb\u7ecd\u4e0b\u9017 ip netns\u5730 \u7cfb\u5217\u547d\u4ee4\u3002\u8fd9\u4e9b\u547d\u4ee4\u8d1f\u8d23\u64cd\u4f5c\u7cfb\u7edf\u4e2d\u7684\u7f51\u7edc\u540d\u5b57\u7a7a\u95f4\u3002
\u9996\u5148\uff0c\u6211\u4eec\u4f7f\u7528 \u9017add\u5730 \u547d\u4ee4\u521b\u5efa\u4e00\u4e2a\u4e34\u65f6\u7684\u7f51\u7edc\u540d\u5b57\u7a7a\u95f4\u3002
ip netns add test

\u7136\u540e\uff0c\u4f7f\u7528 show \u547d\u4ee4\u6765\u67e5\u770b\u7cfb\u7edf\u4e2d\u7684\u7f51\u7edc\u540d\u5b57\u7a7a\u95f4\uff0c\u4f1a\u770b\u5230\u521a\u521b\u5efa\u7684 test \u540d\u5b57\u7a7a\u95f4\u3002
ip netns show test

\u53e6\u5916\uff0c\u4e00\u4e2a\u5f88\u6709\u7528\u7684\u547d\u4ee4\u662f exec\uff0c\u4f1a\u5728\u5bf9\u5e94\u540d\u5b57\u7a7a\u95f4\u5185\u6267\u884c\u547d\u4ee4\u3002\u4f8b\u5982
ip netns exec test ifconfig

\u4f7f\u7528 del \u547d\u4ee4\u5220\u9664\u521a\u521b\u5efa\u7684 test \u540d\u5b57\u7a7a\u95f4\u3002
ip netns del test

\u63a5\u4e0b\u6765\u8fd0\u884c\u4e00\u4e2a Docker \u5bb9\u5668\uff0c\u4f8b\u5982
docker run -it ubuntu

\u518d\u6b21\u6267\u884c ip netns show\u547d\u4ee4\u3002\u5f88\u9057\u61be\uff0c\u8fd9\u91cc\u4ec0\u4e48\u8f93\u51fa\u90fd\u6ca1\u6709\u3002
\u539f\u56e0\u5728\u4e8e\uff0cDocker \u542f\u52a8\u5bb9\u5668\u540e\u4ecd\u7136\u4f1a\u4ee5\u8fdb\u7a0b\u53f7\u521b\u5efa\u65b0\u7684\u540d\u5b57\u7a7a\u95f4\uff0c\u4f46\u5728\u8f83\u65b0\u7684\u7248\u672c\u91cc\u9762\uff0c\u9ed8\u8ba4\u5220\u9664\u4e86\u7cfb\u7edf\u4e2d\u7684\u540d\u5b57\u7a7a\u95f4\u4fe1\u606f\u6587\u4ef6\u3002
\u7f51\u7edc\u540d\u5b57\u7a7a\u95f4\u6587\u4ef6\u4f4d\u4e8e /var/run/netns \u4e0b\u9762\uff0c\u6bd4\u5982\u6211\u4eec\u4e4b\u524d\u521b\u5efa\u7684 test \u540d\u5b57\u7a7a\u95f4\uff0c\u5219\u5728\u8fd9\u4e2a\u76ee\u5f55\u4e0b\u6709\u4e00\u4e2a test \u6587\u4ef6\u3002\u8bf8\u5982 netns \u7c7b\u4f3c\u7684\u7cfb\u7edf\u547d\u4ee4\u4f9d\u9760\u8fd9\u4e9b\u6587\u4ef6\u624d\u80fd\u83b7\u5f97\u540d\u5b57\u7a7a\u95f4\u7684\u4fe1\u606f\u3002
\u5728\u5bb9\u5668\u542f\u52a8\u540e\uff0c\u67e5\u770b\u8fd9\u4e2a\u76ee\u5f55\uff0c\u4f1a\u53d1\u73b0\u4ec0\u4e48\u90fd\u6ca1\u6709\u3002
OK\uff0c\u90a3\u8ba9\u6211\u4eec\u624b\u52a8\u91cd\u5efa\u5b83\u3002
\u9996\u5148\uff0c\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u67e5\u770b\u5bb9\u5668\u8fdb\u7a0b\u4fe1\u606f\uff0c\u6bd4\u5982\u8fd9\u91cc\u76841234\u3002
docker inspect --format='{{. State.Pid}} ' container_id 1234

\u63a5\u4e0b\u6765\uff0c\u5728 /proc \u76ee\u5f55\uff08\u4fdd\u5b58\u8fdb\u7a0b\u7684\u6240\u6709\u76f8\u5173\u4fe1\u606f\uff09\u4e0b\uff0c\u628a\u5bf9\u5e94\u7684\u7f51\u7edc\u540d\u5b57\u7a7a\u95f4\u6587\u4ef6\u94fe\u63a5\u5230 /var/run/netns \u4e0b\u9762
ln -s /proc/1234/ns/net /var/run/netns/

\u7136\u540e\uff0c\u5c31\u53ef\u4ee5\u901a\u8fc7\u6b63\u5e38\u7684\u7cfb\u7edf\u547d\u4ee4\u6765\u67e5\u770b\u6216\u8bbf\u95ee\u5bb9\u5668\u7684\u540d\u5b57\u7a7a\u95f4\u4e86\u3002\u4f8b\u5982
ip netns show 1234 ip netns exec 1234 ifconfig eth0 172.16.0.10/16...

使用docker network create命令来创建,只能创建docker内建的网络模式
使用docker plugin,创建自定义网络

使用docker命令创建网络

Docker中内置的网络模式包括如下几种:

bridge 我们基于该网络模式创建了mynet网络
host 本地网络模式
macvlan 这个模式貌似是最新加的
null 无网络
overlay 用于swarm集群中容器的跨主机网络访问

docker create network命令包含以下参数:
Flag shorthand -h has been deprecated, please use --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[])
-d, --driver string Driver to manage the Network (default "bridge")
--gateway stringSlice IPv4 or IPv6 Gateway for the master subnet
--help Print usage
--internal Restrict external access to the network
--ip-range stringSlice 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 (default [])
-o, --opt map Set driver specific options (default map[])
--subnet stringSlice Subnet in CIDR format that represents a network segment

创建overlay模式的全局网络,我们可以看到新创建的mynet1的scope是swarm,即集群范围可见的。

172.18.0.1:root@sz-pg-oam-docker-test-001:/root]# docker network create -d overlay mynet1
x81fu4ohqot2ufbpoa2u8vyx3
172.18.0.1:root@sz-pg-oam-docker-test-001:/root]# docker network ls
NETWORK ID NAME DRIVER SCOPE
ad3023f6d324 bridge bridge local
346c0fe30055 crane_default bridge local
4da289d8e48a docker_gwbridge bridge local
3d636dff00da host host local
tx49ev228p5l ingress overlay swarm
x81fu4ohqot2 mynet1 overlay swarm
cc14ee093707 none null local
172.18.0.1:root@sz-pg-oam-docker-test-001:/root]# docker network inspect mynet1
[
{
"Name": "mynet1",
"Id": "x81fu4ohqot2ufbpoa2u8vyx3",
"Created": "0001-01-01T00:00:00Z",
"Scope": "swarm",
"Driver": "overlay",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": []
},
"Internal": false,
"Attachable": false,
"Containers": null,
"Options": {
"com.docker.network.driver.overlay.vxlanid_list": "4097"
},
"Labels": null
}
]

注意,overlay模式的网络只能在swarm的manager节点上创建,如果在work节点上创建overlay网络会报错:

172.18.0.1:root@sz-pg-oam-docker-test-002:/root]# docker network create -d overlay mynet1
Error response from daemon: Cannot create a multi-host network from a worker node. Please create the network from a manager node.

如果不使用-d指定driver将默认创建本地bridge网络。

自定义网络

创建自定义网络需要设置网络的driver和ipam。

熟悉 Linux 技术的人都知道,容器只是利用名字空间进行隔离的进程而已,Docker 在容器实现上也是利用了 Linux 自身的技术。
有时候,我们需要在宿主机上对容器内进行一些操作,当然,这种绕过 Docker 的操作方式并不推荐。
如果你使用的是比较新的 Docker 版本,会尴尬的发现,直接使用系统命令,会无法访问到容器名字空间。
这里,首先介绍下逗 ip netns地 系列命令。这些命令负责操作系统中的网络名字空间。
首先,我们使用 逗add地 命令创建一个临时的网络名字空间。
ip netns add test

然后,使用 show 命令来查看系统中的网络名字空间,会看到刚创建的 test 名字空间。
ip netns show test

另外,一个很有用的命令是 exec,会在对应名字空间内执行命令。例如
ip netns exec test ifconfig

使用 del 命令删除刚创建的 test 名字空间。
ip netns del test

接下来运行一个 Docker 容器,例如
docker run -it ubuntu

再次执行 ip netns show命令。很遗憾,这里什么输出都没有。
原因在于,Docker 启动容器后仍然会以进程号创建新的名字空间,但在较新的版本里面,默认删除了系统中的名字空间信息文件。
网络名字空间文件位于 /var/run/netns 下面,比如我们之前创建的 test 名字空间,则在这个目录下有一个 test 文件。诸如 netns 类似的系统命令依靠这些文件才能获得名字空间的信息。
在容器启动后,查看这个目录,会发现什么都没有。
OK,那让我们手动重建它。
首先,使用下面的命令查看容器进程信息,比如这里的1234。
docker inspect --format='{{. State.Pid}} ' container_id 1234

接下来,在 /proc 目录(保存进程的所有相关信息)下,把对应的网络名字空间文件链接到 /var/run/netns 下面
ln -s /proc/1234/ns/net /var/run/netns/

然后,就可以通过正常的系统命令来查看或访问容器的名字空间了。例如
ip netns show 1234 ip netns exec 1234 ifconfig eth0 172.16.0.10/16...

安装好docker并启动swarm集群后,会在集群的每个node中找到如下network

扩展阅读:github免费入口 ... docker启动容器如何能进入 ... java windowbuilder ... docker官网下载 ... github资源网站 ... docker创建容器的几种办法 ... 安卓手机上装docker ... github官网进入 ... docker常用的十个命令 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网