我有一台 Windows 10 主机,使用 docker 桌面 4.6.1。我有一个docker-compose.yml
包含两个服务 vpn 和 app 的。我想要实现的是,docker 的构建过程已经使用了 vpn 容器网络连接。
version: "3.8"
services:
vpn:
...
app:
...
network_mode: service:vpn
应用程序容器本身正确使用了 vpn 容器连接,我可以通过测试来验证这一点。但构建过程似乎使用了主机网络。Dockers build 命令有一个network
或者networkmode
允许使用特定容器网络的参数。但它给出了一个错误:
docker-compose.yml
version: "3.8"
services:
vpn:
...
app:
build:
network: container:vpn
network_mode: service:vpn
docker compose up -d
buildkit 不支持网络模式“container:vpn”。您可以使用 buildx create 中的网络驱动程序选项为您的构建器定义自定义网络。
我如何在我的示例中使用 buildx?我对讨论上下文和端点的文档感到非常困惑。
答案1
1.)将这两项服务拆分为两个单独的撰写文件
docker-compose-vpn.yml
version: "3.8"
services:
vpn:
...
docker-compose-app.yml
version: "3.8"
services:
app:
image: username:app
container_name: app
depends_on:
- vpn
network_mode: container:vpn
2.) 创建并启动 vpn 容器
docker compose -f docker-compose-vpn.yml up -d
3.) 创建一个新的 VPN 构建器实例
docker buildx create --name vpn-builder --driver docker-container --driver-opt network=container:vpn --use
4.) 使用您的 buildx vpn 实例创建图像并将其发布(--load
)到 docker。
docker buildx b -f Dockerfile-app --load --no-cache --tag username:app .
5.)启动新的应用容器
docker compose -f docker-compose-app.yml up -d