运行容器时,Docker容器的networkMode更改为默认值

时间:2016-08-04 13:33:44

标签: docker

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,
}

2 个答案:

答案 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