Docker Compose 1.17.1配置自定义网络名称报错求助
解决Docker Compose 1.17.1中自定义网络
name字段报错的问题 嘿,我来帮你搞定这个问题!你遇到的错误本质上是版本不兼容导致的——听我慢慢拆解:
问题根源
你在docker-compose.yml里指定了version: "3.5"格式,还添加了networks.frontend.name字段,但你的Docker Compose版本是1.17.1,这个旧版本根本不支持name这个属性!name字段是在Compose文件格式3.5中才引入的,但对应的Compose版本至少要1.18.0才能识别它,你的1.17.1早了一个版本,自然会报错说“不允许额外的属性‘name’”。
两种解决办法任你选
办法一:升级Docker Compose(推荐)
这是一劳永逸的方案,直接把Compose升级到支持3.5格式所有特性的版本,比如1.18.0及以上(最好是最新稳定版)。以Linux系统为例,升级命令如下:
# 下载最新稳定版的docker-compose sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 给文件添加执行权限 sudo chmod +x /usr/local/bin/docker-compose # 验证升级是否成功 docker-compose --version
升级完成后,你原来的docker-compose.yml就能正常运行了。
办法二:不改版本,调整Compose文件写法
如果暂时没法升级,那我们换个思路——先手动创建好你要的自定义网络,再让Compose去引用它:
- 先用Docker命令手动创建网络:
docker network create --driver custom-driver-1 custom_frontend
- 修改你的
docker-compose.yml,把原来的网络配置改成引用外部已存在的网络:
version: "3.5" networks: frontend: external: true # 备注:如果改完还是报错,把下面的name字段删掉也可以,因为你已经手动指定了网络名custom_frontend name: custom_frontend
要是你的Compose版本连外部网络的name字段都不支持,那就简化成这样:
version: "3.5" networks: frontend: external: true
这样Compose就会自动找到你之前手动创建的custom_frontend网络,直接调用它即可。
小提醒
以后要注意,Docker Compose的版本和你用的version文件格式是要匹配的,旧版本的Compose认不出新版本格式里的新特性。
内容的提问来源于stack exchange,提问作者raju
相关产品推荐
相关产品推荐

