Docker Compose 文件中定义的网络和通过命令行创建的网络的一些区别:
1. 作用域和生命周期:
- Docker Compose 文件中定义的网络:
- 作用域限于该 Compose 项目。
- 随 `docker compose up` 创建,随 `docker compose down` 删除(除非定义为外部网络)。
- 网络名称会自动加上项目名称作为前缀。
- 命令行创建的网络:
- 全局作用域,可被任何容器或 Compose 项目使用。
- 持久存在,除非手动删除。
- 网络名称就是创建时指定的名称,没有额外前缀。
2. 管理方式:
- Docker Compose 文件中的网络由 Docker Compose 管理,与项目其他部分(如服务、卷)集成。
- 命令行创建的网络需要手动管理,包括创建和删除。
3. 可重用性:
- 命令行创建的网络更容易在多个项目间共享。
- Compose 文件中的网络默认只用于当前项目,但可以通过 `external: true` 选项引用外部网络。
4. 配置灵活性:
- Compose 文件允许更详细的网络配置,如设置驱动选项、IPAM 配置等。
- 命令行创建的网络通常使用默认配置,除非在创建时指定特定选项。
5. 版本控制:
- Compose 文件中的网络定义可以版本控制,方便团队协作和环境一致性。
- 命令行创建的网络配置不容易版本控制,除非将创建命令写入脚本。
在您的情况下,如果想要在 Compose 文件中使用脚本创建的网络,您可以在 Compose 文件中将这些网络声明为外部网络:
```yaml
networks:
laravel-dev-v2-internal:
external: true
这样,Compose 将使用已存在的网络,而不是创建新的。 总的来说,除非有特殊需求(如跨项目共享网络),通常建议在 Docker Compose 文件中定义和管理网络,以保持项目的自包含性和一致性。如果确实需要预先创建的网络,最好在 Compose 文件中明确引用它们。
