$ cat > bridge.conf << EOF
{
"cniVersion": "0.4.0",
"name": "mybridge",
"type": "bridge",
"bridge": "mybridge0",
"isDefaultGateway": true,
"forceAddress": false,
"ipMasq": true,
"hairpinMode": true,
"ipam": {
"type": "host-local",
"subnet": "10.10.0.0/16"
}
}
EOF
$ contid=71ad9b005af450ee7d40e0959b6b340f0c929824cd9ae7a2f6f3c1f5a369241d # 容器ID
$ pid=23986
$ netnspath=/proc/$pid/ns/net
$ CNI_COMMAND=ADD CNI_CONTAINERID=$contid CNI_NETNS=$netnspath CNI_IFNAME=eth0 CNI_PATH=./bin ./bin/bridge < bridge.json
{
"cniVersion": "0.4.0",
"interfaces": [
{
"name": "mybridge0",
"mac": "e2:7e:f2:88:bf:3a"
},
{
"name": "veth495fddad",
"mac": "5a:1e:2d:ff:b5:2f"
},
{
"name": "eth0",
"mac": "5a:79:9c:b9:76:b6",
"sandbox": "/proc/23986/ns/net"
}
],
"ips": [
{
"version": "4",
"interface": 2,
"address": "10.10.0.6/16",
"gateway": "10.10.0.1"
}
],
"routes": [
{
"dst": "0.0.0.0/0",
"gw": "10.10.0.1"
}
],
"dns": {}
}
$ nsenter -t 23986 -n ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 5a:79:9c:b9:76:b6 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.10.0.6/16 brd 10.10.255.255 scope global eth0
valid_lft forever preferred_lft forever
$ ip a
4: mybridge0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether e2:7e:f2:88:bf:3a brd ff:ff:ff:ff:ff:ff
inet 10.10.0.1/16 brd 10.10.255.255 scope global mybridge0
valid_lft forever preferred_lft forever
inet6 fe80::e07e:f2ff:fe88:bf3a/64 scope link
valid_lft forever preferred_lft forever
5: veth495fddad@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master mybridge0 state UP group default
link/ether 5a:1e:2d:ff:b5:2f brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::581e:2dff:feff:b52f/64 scope link
valid_lft forever preferred_lft forever