如何将`docker network create` CLI选项翻译为`docker stack deploy`的组合格式?

用例上下文:我需要通过使用swarm overlaynetworking连接到服务的docker run进行一些批处理。 我想使用docker stack deploydocker stack deploynetworking和服务设置; 单个容器任务后台处理是通过REST API直接完成的。

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

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

检查这个networking给出了如何解释参数的细节。

 $ 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}}" 

…到达一个密切的configuration结果:

 $ 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": [ ... ] }] 

问题 :有没有办法设置"Attachable": truedocker stack deploy命令中为"Attachable": true

docker-compose v3格式不支持的可附加属性有一个github问题。

这是在#30742中添加的。 它将在下一版本中使用Compose文件v3.2格式。

所以应该在1.12版本的Compose中,可能需要一个17+版本的Docker for docker stack