如何将 `docker network create` CLI 选项转换为 `docker stack deploy` 使用的组合格式?
How do I translate the `docker network create` CLI options into compose format for `docker stack deploy` use?
用例上下文: 我需要通过 docker run
进行一些批处理,使用群覆盖网络连接到服务。
我想使用 docker stack deploy
来部署网络和服务设置;
单个容器任务假脱机是直接通过 REST API.
完成的
因此,我想根据 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
?
"attachable property not supported in docker-compose v3 format" 有一个 github 问题。
This was added in #30742. It will be in Compose file v3.2 format in the next release.
所以这应该在 Compose 的 1.12 版本中并且可能需要 Docker 的 17+ 版本才能用于 docker stack
用例上下文: 我需要通过 docker run
进行一些批处理,使用群覆盖网络连接到服务。
我想使用 docker stack deploy
来部署网络和服务设置;
单个容器任务假脱机是直接通过 REST API.
因此,我想根据 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
?
"attachable property not supported in docker-compose v3 format" 有一个 github 问题。
This was added in #30742. It will be in Compose file v3.2 format in the next release.
所以这应该在 Compose 的 1.12 版本中并且可能需要 Docker 的 17+ 版本才能用于 docker stack