Docker版本 - v1.12 操作系统 - Ubuntu 14.04.4-LTS 聚类模式 - Swarm
创建了一个覆盖网络:
$ docker -H tcp://0.0.0.0:2375 network create --driver overlay --subnet=10.0.9.0/24 my-net
创建容器:
[POST] http://localhost:2375/container/create?name={id}
{
"Env": [
"env1=val1"
],
"Cmd": [
"/Run.sh",
"launch
],
"Image": "<image>",
"Volumes": {
"/tmp" : {}
},
"HostConfig": {
"NetworkMode": "my-net"
}
}
$docker inspect
的回复:
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "my-net",
"PortBindings": null,
"RestartPolicy": {
"Name": "",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
}
这将使用networkMode创建容器my-net
。但是当我跑步的时候
使用其余API [POST]的容器
http://localhost:2375/containers/{id}/start
networkMode更改为
default
。
$docker inspect
的回复:
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": null,
"RestartPolicy": {
"Name": "",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
}
答案 0 :(得分:0)
问题是使用docker swarm API更改来启动容器。此提交告诉要传递的有效负载结构。我需要改变的只是有效载荷:
[POST] http://localhost:2375/containers/{id}/start
有效负载:
{
"NetworkMode": "my-net"
}
所有docker容器hostConfig属性都在有效负载中。如果留空,则所有属性都将重置为默认值。应在swarm API文档中记录此API规范,以避免混淆。
答案 1 :(得分:-1)
无论如何,您应该使用网络标志运行它。看这里 https://docs.docker.com/engine/reference/run/#/network-settings