指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

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 文件中明确引用它们。