Fut*_*e32 5 networking docker docker-compose
过去几天我一直在玩Docker-Compose,看看它是否会简化我的Docker容器和网络构建过程.
我对此感到非常满意,但是当我想创建一些未被任何"服务"使用的"网络"时遇到了问题.
我想要这种行为的原因是有一个Docker-Compose文件来创建我的本地"私人"网络和"公共"网络结构.还有一个单独的Docker-Compose,用于我的每个项目,利用那些已经创建的"外部"网络.
我注意到我只能指定一个虚拟容器来初始化网络的创建,但似乎没必要.例如.
version: '2'
services:
# Dummy Service
dummy:
image: busybox
container_name: dummy
hostname: dummy
networks:
private:
networks:
# Private Network for all Services (across Projects)
private:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.18.0.0/24
gateway: 172.18.0.1
Run Code Online (Sandbox Code Playgroud)
是否有我忽略的设置/标志,或者目前没有办法使用Docker-Compose创建没有容器的网络.
另外,我刚接近这个错误吗?
从本质上讲,我希望有一个网络可以存在,无论哪个容器加入/离开它.
在docker-compose中有一个检查是否使用了网络,如果它未被使用,它会跳过创建网络:
$ cat docker-compose.net-only.yml
version: '2'
networks:
test1:
test2:
$ docker-compose -f docker-compose.net-only.yml --verbose up
.....
WARNING: compose.network.from_services: Some networks were defined but are not used by any service: test1, test2
.....
$ docker network ls | grep test
$
Run Code Online (Sandbox Code Playgroud)
我建议将其作为一个小的shell脚本,调用docker network create而不是尝试使用docker-compose来执行此任务.
docker-compose-networks.yml:
version: '3.7'
services:
works:
image: scratch
restart: always
container_name: net_works
deploy:
placement:
constraints:
- "node.hostname==scratch"
networks:
- mynet1
- mynet2
networks:
mynet1:
name: mynet1
driver: overlay
attachable: false
mynet2:
name: mynet2
driver: overlay
attachable: true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4701 次 |
| 最近记录: |