2017-04-21 73 views
0

用例上下文:我需要通过docker run进行一些批处理,这些批处理通过使用群集覆盖网络连接到服务。 我想用docker stack deploy推出网络和服务设置; 单个容器任务后台处理直接通过REST API完成。如何将`docker network create` CLI选项翻译为`docker stack deploy`的组合格式?

因此,我想根据docker-compose.yml版本3+文件来表示以下shell命令。

$ docker network create \ 
    --driver overlay \ 
    --opt encrypted \ 
    --internal \ 
    --attachable \ 
    --subnet 10.42.6.0/24 \ 
    example_net 

检查该网络形成了的参数如何解释好细节。

$ docker network inspect example_net 

[{ 
    "Name": "example_net", 
    "Id": "lw689m2su19p5imljtlfsfsxy", 
    "Created": "0001-01-01T00:00:00Z", 
    "Scope": "swarm", 
    "Driver": "overlay", 
    "EnableIPv6": false, 
    "IPAM": { 
     "Driver": "default", 
     "Options": null, 
     "Config": [ 
      { 
       "Subnet": "10.42.6.0/24", 
       "Gateway": "10.42.6.1" 
      } 
     ] 
    }, 
    "Internal": true, 
    "Attachable": true, 
    "Containers": null, 
    "Options": { 
     "com.docker.network.driver.overlay.vxlanid_list": "4098", 
     "encrypted": "" 
    }, 
    "Labels": null 
}] 

翻译这些检查的结果在我的第一个切口在docker-compose.yml

version: "3.1" 
networks: 
    example_net: 
    internal: true 
    driver_opts: 
     encrypted: "" 
    ipam: 
     config: 
     - subnet: 172.16.4.0/24 

services: 
    db: 
    image: couchdb 
    networks: 
     - example_net 
    hostname: "{{.Service.Name}}-{{.Task.Slot}}-{{.Node.ID}}" 

...到达一个接近配置的结果:

$ docker stack deploy -c ./docker-compose.yml test 

Creating network test_example_net 
Creating service test_db 

$ docker network inspect example_net 

[{ 
    "Name": "test_example_net", 
    "Id": "j1ahedyfh05mpg5g52vrd9034", 
    "Created": "2017-04-21T21:00:55.656972306Z", 
    "Scope": "swarm", 
    "Driver": "overlay", 
    "EnableIPv6": false, 
    "IPAM": { 
     "Driver": "default", 
     "Options": null, 
     "Config": [ 
      { 
       "Subnet": "172.16.4.0/24", 
       "Gateway": "172.16.4.1" 
      } 
     ] 
    }, 
    "Internal": true, 
    "Attachable": false, 
    "Containers": { ... }, 
    "Options": { 
     "com.docker.network.driver.overlay.vxlanid_list": "4100", 
     "encrypted": "" 
    }, 
    "Labels": {"com.docker.stack.namespace": "test"}, 
    "Peers": [ ... ] 
}] 

问题:有没有办法来使用docker stack deploy命令设置"Attachable": true

回答