зеркало из https://github.com/microsoft/docker.git
Merge pull request #19323 from wenchma/19089-add_network_id
Add network ID to container inspect
This commit is contained in:
Коммит
812d95cdfb
|
@ -34,8 +34,8 @@ import (
|
||||||
// DefaultSHMSize is the default size (64MB) of the SHM which will be mounted in the container
|
// DefaultSHMSize is the default size (64MB) of the SHM which will be mounted in the container
|
||||||
const DefaultSHMSize int64 = 67108864
|
const DefaultSHMSize int64 = 67108864
|
||||||
|
|
||||||
// Container holds the fields specific to unixen implementations. See
|
// Container holds the fields specific to unixen implementations.
|
||||||
// CommonContainer for standard fields common to all containers.
|
// See CommonContainer for standard fields common to all containers.
|
||||||
type Container struct {
|
type Container struct {
|
||||||
CommonContainer
|
CommonContainer
|
||||||
|
|
||||||
|
@ -194,6 +194,7 @@ func (container *Container) BuildEndpointInfo(n libnetwork.Network, ep libnetwor
|
||||||
if _, ok := networkSettings.Networks[n.Name()]; !ok {
|
if _, ok := networkSettings.Networks[n.Name()]; !ok {
|
||||||
networkSettings.Networks[n.Name()] = new(network.EndpointSettings)
|
networkSettings.Networks[n.Name()] = new(network.EndpointSettings)
|
||||||
}
|
}
|
||||||
|
networkSettings.Networks[n.Name()].NetworkID = n.ID()
|
||||||
networkSettings.Networks[n.Name()].EndpointID = ep.ID()
|
networkSettings.Networks[n.Name()].EndpointID = ep.ID()
|
||||||
|
|
||||||
iface := epInfo.Iface()
|
iface := epInfo.Iface()
|
||||||
|
@ -702,7 +703,7 @@ func copyExistingContents(source, destination string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if len(srcList) == 0 {
|
if len(srcList) == 0 {
|
||||||
// If the source volume is empty copy files from the root into the volume
|
// If the source volume is empty, copies files from the root into the volume
|
||||||
if err := chrootarchive.CopyWithTar(source, destination); err != nil {
|
if err := chrootarchive.CopyWithTar(source, destination); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -116,6 +116,7 @@ This section lists each version from latest to oldest. Each listing includes a
|
||||||
* `GET /info` now includes the number of containers running, stopped, and paused.
|
* `GET /info` now includes the number of containers running, stopped, and paused.
|
||||||
* `POST /networks/create` now supports restricting external access to the network by setting the `internal` field.
|
* `POST /networks/create` now supports restricting external access to the network by setting the `internal` field.
|
||||||
* `POST /networks/(id)/disconnect` now includes a `Force` option to forcefully disconnect a container from network
|
* `POST /networks/(id)/disconnect` now includes a `Force` option to forcefully disconnect a container from network
|
||||||
|
* `GET /containers/(id)/json` now returns the `NetworkID` of containers.
|
||||||
|
|
||||||
### v1.21 API changes
|
### v1.21 API changes
|
||||||
|
|
||||||
|
|
|
@ -61,6 +61,7 @@ List containers
|
||||||
"NetworkSettings": {
|
"NetworkSettings": {
|
||||||
"Networks": {
|
"Networks": {
|
||||||
"bridge": {
|
"bridge": {
|
||||||
|
"NetworkID": "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
|
||||||
"EndpointID": "2cdc4edb1ded3631c81f57966563e5c8525b81121bb3706a9a9a3ae102711f3f",
|
"EndpointID": "2cdc4edb1ded3631c81f57966563e5c8525b81121bb3706a9a9a3ae102711f3f",
|
||||||
"Gateway": "172.17.0.1",
|
"Gateway": "172.17.0.1",
|
||||||
"IPAddress": "172.17.0.2",
|
"IPAddress": "172.17.0.2",
|
||||||
|
@ -88,6 +89,7 @@ List containers
|
||||||
"NetworkSettings": {
|
"NetworkSettings": {
|
||||||
"Networks": {
|
"Networks": {
|
||||||
"bridge": {
|
"bridge": {
|
||||||
|
"NetworkID": "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
|
||||||
"EndpointID": "88eaed7b37b38c2a3f0c4bc796494fdf51b270c2d22656412a2ca5d559a64d7a",
|
"EndpointID": "88eaed7b37b38c2a3f0c4bc796494fdf51b270c2d22656412a2ca5d559a64d7a",
|
||||||
"Gateway": "172.17.0.1",
|
"Gateway": "172.17.0.1",
|
||||||
"IPAddress": "172.17.0.8",
|
"IPAddress": "172.17.0.8",
|
||||||
|
@ -116,6 +118,7 @@ List containers
|
||||||
"NetworkSettings": {
|
"NetworkSettings": {
|
||||||
"Networks": {
|
"Networks": {
|
||||||
"bridge": {
|
"bridge": {
|
||||||
|
"NetworkID": "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
|
||||||
"EndpointID": "8b27c041c30326d59cd6e6f510d4f8d1d570a228466f956edf7815508f78e30d",
|
"EndpointID": "8b27c041c30326d59cd6e6f510d4f8d1d570a228466f956edf7815508f78e30d",
|
||||||
"Gateway": "172.17.0.1",
|
"Gateway": "172.17.0.1",
|
||||||
"IPAddress": "172.17.0.6",
|
"IPAddress": "172.17.0.6",
|
||||||
|
@ -144,6 +147,7 @@ List containers
|
||||||
"NetworkSettings": {
|
"NetworkSettings": {
|
||||||
"Networks": {
|
"Networks": {
|
||||||
"bridge": {
|
"bridge": {
|
||||||
|
"NetworkID": "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
|
||||||
"EndpointID": "d91c7b2f0644403d7ef3095985ea0e2370325cd2332ff3a3225c4247328e66e9",
|
"EndpointID": "d91c7b2f0644403d7ef3095985ea0e2370325cd2332ff3a3225c4247328e66e9",
|
||||||
"Gateway": "172.17.0.1",
|
"Gateway": "172.17.0.1",
|
||||||
"IPAddress": "172.17.0.5",
|
"IPAddress": "172.17.0.5",
|
||||||
|
@ -545,14 +549,15 @@ Return low-level information on the container `id`
|
||||||
"MacAddress": "",
|
"MacAddress": "",
|
||||||
"Networks": {
|
"Networks": {
|
||||||
"bridge": {
|
"bridge": {
|
||||||
"EndpointID": "",
|
"NetworkID": "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
|
||||||
"Gateway": "",
|
"EndpointID": "7587b82f0dada3656fda26588aee72630c6fab1536d36e394b2bfbcf898c971d",
|
||||||
"IPAddress": "",
|
"Gateway": "172.17.0.1",
|
||||||
"IPPrefixLen": 0,
|
"IPAddress": "172.17.0.2",
|
||||||
|
"IPPrefixLen": 16,
|
||||||
"IPv6Gateway": "",
|
"IPv6Gateway": "",
|
||||||
"GlobalIPv6Address": "",
|
"GlobalIPv6Address": "",
|
||||||
"GlobalIPv6PrefixLen": 0,
|
"GlobalIPv6PrefixLen": 0,
|
||||||
"MacAddress": ""
|
"MacAddress": "02:42:ac:12:00:02"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -2687,14 +2692,15 @@ Return low-level information about the `exec` command `id`.
|
||||||
"MacAddress": "",
|
"MacAddress": "",
|
||||||
"Networks": {
|
"Networks": {
|
||||||
"bridge": {
|
"bridge": {
|
||||||
"EndpointID": "",
|
"NetworkID": "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
|
||||||
"Gateway": "",
|
"EndpointID": "7587b82f0dada3656fda26588aee72630c6fab1536d36e394b2bfbcf898c971d",
|
||||||
"IPAddress": "",
|
"Gateway": "172.17.0.1",
|
||||||
"IPPrefixLen": 0,
|
"IPAddress": "172.17.0.2",
|
||||||
|
"IPPrefixLen": 16,
|
||||||
"IPv6Gateway": "",
|
"IPv6Gateway": "",
|
||||||
"GlobalIPv6Address": "",
|
"GlobalIPv6Address": "",
|
||||||
"GlobalIPv6PrefixLen": 0,
|
"GlobalIPv6PrefixLen": 0,
|
||||||
"MacAddress": ""
|
"MacAddress": "02:42:ac:12:00:02"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -174,7 +174,8 @@ Now, inspect the network resources used by `container3`.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ docker inspect --format='{{json .NetworkSettings.Networks}}' container3
|
$ docker inspect --format='{{json .NetworkSettings.Networks}}' container3
|
||||||
{"isolated_nw":{"IPAMConfig":{"IPv4Address":"172.25.3.3"},"EndpointID":"dffc7ec2915af58cc827d995e6ebdc897342be0420123277103c40ae35579103","Gateway":"172.25.0.1","IPAddress":"172.25.3.3","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:19:03:03"}}
|
{"isolated_nw":{"IPAMConfig":{"IPv4Address":"172.25.3.3"},"NetworkID":"1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b",
|
||||||
|
"EndpointID":"dffc7ec2915af58cc827d995e6ebdc897342be0420123277103c40ae35579103","Gateway":"172.25.0.1","IPAddress":"172.25.3.3","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:19:03:03"}}
|
||||||
```
|
```
|
||||||
Repeat this command for `container2`. If you have Python installed, you can pretty print the output.
|
Repeat this command for `container2`. If you have Python installed, you can pretty print the output.
|
||||||
|
|
||||||
|
@ -182,6 +183,7 @@ Repeat this command for `container2`. If you have Python installed, you can pret
|
||||||
$ docker inspect --format='{{json .NetworkSettings.Networks}}' container2 | python -m json.tool
|
$ docker inspect --format='{{json .NetworkSettings.Networks}}' container2 | python -m json.tool
|
||||||
{
|
{
|
||||||
"bridge": {
|
"bridge": {
|
||||||
|
"NetworkID":"7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
|
||||||
"EndpointID": "0099f9efb5a3727f6a554f176b1e96fca34cae773da68b3b6a26d046c12cb365",
|
"EndpointID": "0099f9efb5a3727f6a554f176b1e96fca34cae773da68b3b6a26d046c12cb365",
|
||||||
"Gateway": "172.17.0.1",
|
"Gateway": "172.17.0.1",
|
||||||
"GlobalIPv6Address": "",
|
"GlobalIPv6Address": "",
|
||||||
|
@ -193,6 +195,7 @@ $ docker inspect --format='{{json .NetworkSettings.Networks}}' container2 | pyt
|
||||||
"MacAddress": "02:42:ac:11:00:03"
|
"MacAddress": "02:42:ac:11:00:03"
|
||||||
},
|
},
|
||||||
"isolated_nw": {
|
"isolated_nw": {
|
||||||
|
"NetworkID":"1196a4c5af43a21ae38ef34515b6af19236a3fc48122cf585e3f3054d509679b",
|
||||||
"EndpointID": "11cedac1810e864d6b1589d92da12af66203879ab89f4ccd8c8fdaa9b1c48b1d",
|
"EndpointID": "11cedac1810e864d6b1589d92da12af66203879ab89f4ccd8c8fdaa9b1c48b1d",
|
||||||
"Gateway": "172.25.0.1",
|
"Gateway": "172.25.0.1",
|
||||||
"GlobalIPv6Address": "",
|
"GlobalIPv6Address": "",
|
||||||
|
@ -511,6 +514,7 @@ $ docker network disconnect isolated_nw container2
|
||||||
docker inspect --format='{{json .NetworkSettings.Networks}}' container2 | python -m json.tool
|
docker inspect --format='{{json .NetworkSettings.Networks}}' container2 | python -m json.tool
|
||||||
{
|
{
|
||||||
"bridge": {
|
"bridge": {
|
||||||
|
"NetworkID":"7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
|
||||||
"EndpointID": "9e4575f7f61c0f9d69317b7a4b92eefc133347836dd83ef65deffa16b9985dc0",
|
"EndpointID": "9e4575f7f61c0f9d69317b7a4b92eefc133347836dd83ef65deffa16b9985dc0",
|
||||||
"Gateway": "172.17.0.1",
|
"Gateway": "172.17.0.1",
|
||||||
"GlobalIPv6Address": "",
|
"GlobalIPv6Address": "",
|
||||||
|
|
|
@ -189,7 +189,8 @@ If you inspect your `my-bridge-network` you'll see it has a container attached.
|
||||||
You can also inspect your container to see where it is connected:
|
You can also inspect your container to see where it is connected:
|
||||||
|
|
||||||
$ docker inspect --format='{{json .NetworkSettings.Networks}}' db
|
$ docker inspect --format='{{json .NetworkSettings.Networks}}' db
|
||||||
{"bridge":{"EndpointID":"508b170d56b2ac9e4ef86694b0a76a22dd3df1983404f7321da5649645bf7043","Gateway":"172.18.0.1","IPAddress":"172.18.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:02"}}
|
{"my-bridge-network":{"NetworkID":"7d86d31b1478e7cca9ebed7e73aa0fdeec46c5ca29497431d3007d2d9e15ed99",
|
||||||
|
"EndpointID":"508b170d56b2ac9e4ef86694b0a76a22dd3df1983404f7321da5649645bf7043","Gateway":"172.18.0.1","IPAddress":"172.18.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:02"}}
|
||||||
|
|
||||||
Now, go ahead and start your by now familiar web application. This time leave off the `-P` flag and also don't specify a network.
|
Now, go ahead and start your by now familiar web application. This time leave off the `-P` flag and also don't specify a network.
|
||||||
|
|
||||||
|
@ -198,7 +199,8 @@ Now, go ahead and start your by now familiar web application. This time leave of
|
||||||
Which network is your `web` application running under? Inspect the application and you'll find it is running in the default `bridge` network.
|
Which network is your `web` application running under? Inspect the application and you'll find it is running in the default `bridge` network.
|
||||||
|
|
||||||
$ docker inspect --format='{{json .NetworkSettings.Networks}}' web
|
$ docker inspect --format='{{json .NetworkSettings.Networks}}' web
|
||||||
{"bridge":{"EndpointID":"508b170d56b2ac9e4ef86694b0a76a22dd3df1983404f7321da5649645bf7043","Gateway":"172.17.0.1","IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:02"}}
|
{"bridge":{"NetworkID":"7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
|
||||||
|
"EndpointID":"508b170d56b2ac9e4ef86694b0a76a22dd3df1983404f7321da5649645bf7043","Gateway":"172.17.0.1","IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"MacAddress":"02:42:ac:11:00:02"}}
|
||||||
|
|
||||||
Then, get the IP address of your `web`
|
Then, get the IP address of your `web`
|
||||||
|
|
||||||
|
|
|
@ -388,3 +388,30 @@ func (s *DockerSuite) TestInspectHistory(c *check.C) {
|
||||||
c.Assert(err, check.IsNil)
|
c.Assert(err, check.IsNil)
|
||||||
c.Assert(out, checker.Contains, "test comment")
|
c.Assert(out, checker.Contains, "test comment")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *DockerSuite) TestInspectContainerNetworkDefault(c *check.C) {
|
||||||
|
testRequires(c, DaemonIsLinux)
|
||||||
|
|
||||||
|
contName := "test1"
|
||||||
|
dockerCmd(c, "run", "--name", contName, "-d", "busybox", "top")
|
||||||
|
netOut, _ := dockerCmd(c, "network", "inspect", "--format='{{.ID}}'", "bridge")
|
||||||
|
out, err := inspectField(contName, "NetworkSettings.Networks")
|
||||||
|
c.Assert(err, checker.IsNil)
|
||||||
|
c.Assert(out, checker.Contains, "bridge")
|
||||||
|
out, err = inspectField(contName, "NetworkSettings.Networks.bridge.NetworkID")
|
||||||
|
c.Assert(err, checker.IsNil)
|
||||||
|
c.Assert(strings.TrimSpace(out), checker.Equals, strings.TrimSpace(netOut))
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *DockerSuite) TestInspectContainerNetworkCustom(c *check.C) {
|
||||||
|
testRequires(c, DaemonIsLinux)
|
||||||
|
|
||||||
|
netOut, _ := dockerCmd(c, "network", "create", "net1")
|
||||||
|
dockerCmd(c, "run", "--name=container1", "--net=net1", "-d", "busybox", "top")
|
||||||
|
out, err := inspectField("container1", "NetworkSettings.Networks")
|
||||||
|
c.Assert(err, checker.IsNil)
|
||||||
|
c.Assert(out, checker.Contains, "net1")
|
||||||
|
out, err = inspectField("container1", "NetworkSettings.Networks.net1.NetworkID")
|
||||||
|
c.Assert(err, checker.IsNil)
|
||||||
|
c.Assert(strings.TrimSpace(out), checker.Equals, strings.TrimSpace(netOut))
|
||||||
|
}
|
||||||
|
|
|
@ -72,22 +72,36 @@ To get information on a container use its ID or instance name:
|
||||||
"Image": "ded7cd95e059788f2586a51c275a4f151653779d6a7f4dad77c2bd34601d94e4",
|
"Image": "ded7cd95e059788f2586a51c275a4f151653779d6a7f4dad77c2bd34601d94e4",
|
||||||
"NetworkSettings": {
|
"NetworkSettings": {
|
||||||
"Bridge": "",
|
"Bridge": "",
|
||||||
"EndpointID": "",
|
"SandboxID": "6b4851d1903e16dd6a567bd526553a86664361f31036eaaa2f8454d6f4611f6f",
|
||||||
"Gateway": "",
|
|
||||||
"GlobalIPv6Address": "",
|
|
||||||
"GlobalIPv6PrefixLen": 0,
|
|
||||||
"HairpinMode": false,
|
"HairpinMode": false,
|
||||||
"IPAddress": "",
|
|
||||||
"IPPrefixLen": 0,
|
|
||||||
"IPv6Gateway": "",
|
|
||||||
"LinkLocalIPv6Address": "",
|
"LinkLocalIPv6Address": "",
|
||||||
"LinkLocalIPv6PrefixLen": 0,
|
"LinkLocalIPv6PrefixLen": 0,
|
||||||
"MacAddress": "",
|
"Ports": {},
|
||||||
"NetworkID": "",
|
"SandboxKey": "/var/run/docker/netns/6b4851d1903e",
|
||||||
"Ports": null,
|
|
||||||
"SandboxKey": "",
|
|
||||||
"SecondaryIPAddresses": null,
|
"SecondaryIPAddresses": null,
|
||||||
"SecondaryIPv6Addresses": null
|
"SecondaryIPv6Addresses": null,
|
||||||
|
"EndpointID": "7587b82f0dada3656fda26588aee72630c6fab1536d36e394b2bfbcf898c971d",
|
||||||
|
"Gateway": "172.17.0.1",
|
||||||
|
"GlobalIPv6Address": "",
|
||||||
|
"GlobalIPv6PrefixLen": 0,
|
||||||
|
"IPAddress": "172.17.0.2",
|
||||||
|
"IPPrefixLen": 16,
|
||||||
|
"IPv6Gateway": "",
|
||||||
|
"MacAddress": "02:42:ac:12:00:02",
|
||||||
|
"Networks": {
|
||||||
|
"bridge": {
|
||||||
|
"NetworkID": "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812",
|
||||||
|
"EndpointID": "7587b82f0dada3656fda26588aee72630c6fab1536d36e394b2bfbcf898c971d",
|
||||||
|
"Gateway": "172.17.0.1",
|
||||||
|
"IPAddress": "172.17.0.2",
|
||||||
|
"IPPrefixLen": 16,
|
||||||
|
"IPv6Gateway": "",
|
||||||
|
"GlobalIPv6Address": "",
|
||||||
|
"GlobalIPv6PrefixLen": 0,
|
||||||
|
"MacAddress": "02:42:ac:12:00:02"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
"ResolvConfPath": "/var/lib/docker/containers/d2cc496561d6d520cbc0236b4ba88c362c446a7619992123f11c809cded25b47/resolv.conf",
|
"ResolvConfPath": "/var/lib/docker/containers/d2cc496561d6d520cbc0236b4ba88c362c446a7619992123f11c809cded25b47/resolv.conf",
|
||||||
"HostnamePath": "/var/lib/docker/containers/d2cc496561d6d520cbc0236b4ba88c362c446a7619992123f11c809cded25b47/hostname",
|
"HostnamePath": "/var/lib/docker/containers/d2cc496561d6d520cbc0236b4ba88c362c446a7619992123f11c809cded25b47/hostname",
|
||||||
|
|
Загрузка…
Ссылка в новой задаче