CircleCI是否使用Docker;主持人;用于从主容器连接到服务容器的网络?

CircleCI是否使用Docker;主持人;用于从主容器连接到服务容器的网络?,docker,networking,continuous-integration,github-actions,circleci,Docker,Networking,Continuous Integration,Github Actions,Circleci,我试图了解CI/CD提供商如何实现Docker网络。在阅读CircleCI和GitHub操作的文档时,它们描述了如何以不同的方式使用服务容器(如PostgreSQL等) CircleCI()说: 所有容器都在一个公共网络中运行,每个暴露的端口都将 可从主容器在本地主机上使用 它们有一个示例配置,显示如何从localhost上的主容器访问MongoDB服务容器: 作业: 建造: 码头工人: #运行所有步骤的主容器映像。 -图片:buildpack deps:trusty #公共网络上的次容器映像。

我试图了解CI/CD提供商如何实现Docker网络。在阅读CircleCI和GitHub操作的文档时,它们描述了如何以不同的方式使用服务容器(如PostgreSQL等)

CircleCI()说:

所有容器都在一个公共网络中运行,每个暴露的端口都将 可从主容器在本地主机上使用

它们有一个示例配置,显示如何从
localhost
上的主容器访问MongoDB服务容器:

作业:
建造:
码头工人:
#运行所有步骤的主容器映像。
-图片:buildpack deps:trusty
#公共网络上的次容器映像。
-图片:mongo:2.6.8-jessie
命令:[mongod,--smallfiles]
工作目录:~/
步骤:
#命令将在可靠的容器中执行
#并且可以在本地主机上访问mongo
-运行:sleep5&&nc-vzlocalhost 27017
GitHub Actions()表示:

在容器中运行作业时,GitHub使用Docker的用户定义网桥网络将服务容器连接到作业

他们在文档的其他地方有一些示例,展示了如何连接到容器。以下是PostgreSQL的一个示例:

name:PostgreSQL服务示例
on:推
工作:
#容器作业的标签
集装箱作业:
#容器必须在基于Linux的操作系统中运行
运行于:ubuntu最新版本
#“容器作业”在其中执行的Docker中心映像
容器:节点:10.18-jessie
#要与“容器作业”一起运行的服务容器`
服务:
#用于访问服务容器的标签
博士后:
#码头枢纽形象
图片:博士后
#为postgres提供密码
环境:
POSTGRES_密码:POSTGRES
#将健康检查设置为等待postgres开始
选项:>-
--健康cmd pg_已经准备好了
--健康间隔10秒
--运行状况超时5s
--健康重试5次
步骤:
#在运行CI测试之前,下载存储库中的代码副本
-名称:签出存储库代码
用途:行动/checkout@v2
#执行“package.json”文件中所有依赖项的干净安装
#有关详细信息,请参阅https://docs.npmjs.com/cli/ci.html
-名称:安装依赖项
运行:npm ci
-名称:连接到PostgreSQL
#运行创建PostgreSQL客户端的脚本,填充
#使用数据创建客户端,并检索数据
运行:node client.js
#`client.js`脚本用于创建新PostgreSQL客户端的环境变量。
环境:
#用于与PostgreSQL服务容器通信的主机名
POSTGRES\u主持人:POSTGRES
#默认的PostgreSQL端口
POSTGRES_端口:5432
这里,PostgreSQL容器的主机名是
postgres
(而不是
localhost
),因为该标签是在
services:
下选择的

CircleCI的文档没有明确描述他们在网络方面做了什么,但这是否意味着他们正在使用“主机”网络模式()?而且,由于Docker文档说明:

发布端口和链接到其他容器只能使用默认值(网桥)

为什么CircleCI不要求您在配置中包含要映射的端口?他们可能正在解析容器的Dockerfile并查找
EXPOSE
指令并自动执行此操作吗