在 Azure 中部署容器集群
Deploying a cluster of containers in Azure
我有一个 Docker 应用程序,它在 Windows 我的笔记本电脑上运行良好,使用 compose 并启动容器的多个实例作为 Dask 集群。
服务的名称是“worker”,我启动了两个容器实例,如下所示:
docker compose up --scale worker=2
我在 Azure 上部署了图像,当我 运行 docker 组合时(使用我在 Windows 中使用的相同命令)仅 一个 容器已启动。
如何在Azure中部署容器集群?我可以使用 docker compose 还是我需要采用不同的方法,例如使用模板或 Kubernetes 进行部署?
这是 docker-compose.yml
文件:
version: "3.0"
services:
web:
image: sofacr.azurecr.io/pablo:job2_v1
volumes:
- daskvol:/code/defaults_prediction
ports:
- "5000:5000"
environment:
- SCHEDULER_ADDRESS=scheduler
- SCHEDULER_PORT=8786
working_dir: /code
entrypoint:
- /opt/conda/bin/waitress-serve
command:
- --port=5000
- defaults_prediction:app
scheduler:
image: sofacr.azurecr.io/pablo:job2_v1
ports:
- "8787:8787"
entrypoint:
- /opt/conda/bin/dask-scheduler
worker:
image: sofacr.azurecr.io/pablo:job2_v1
depends_on:
- scheduler
environment:
- PYTHONPATH=/code
- SCHEDULER_ADDRESS=scheduler
- SCHEDULER_PORT=8786
volumes:
- daskvol:/code/defaults_prediction
- daskdatavol:/data
- daskmodelvol:/model
entrypoint:
- /opt/conda/bin/dask-worker
command:
- scheduler:8786
volumes:
daskvol:
driver: azure_file
driver_opts:
share_name: daskvol-0003
storage_account_name: sofstoraccount
daskdatavol:
driver: azure_file
driver_opts:
share_name: daskdatavol-0003
storage_account_name: sofstoraccount
daskmodelvol:
driver: azure_file
driver_opts:
share_name: daskmodelvol-0003
storage_account_name: sofstoraccount
我也是 docker 的新手。但据我所知,编排容器或扩大容器通常使用
docker 群或 kubernetes。在 Azure kuberenetes 集群中是 AKS。
docker compose up --scale worker=2
我在这个 link 中遇到了缩放容器的问题
https://github.com/docker/compose/issues/3722
How to simply scale a docker-compose service and pass the index and count to each?
希望这可能有所帮助。
现在 ACI 支持从 docker-compose.yaml 文件部署,但它不支持扩展到同一容器的多个副本。因为ACI不支持端口映射,一个端口只能为一个容器暴露一次。所以只能通过docker-compose在一个容器组中创建多个容器。 yaml 文件,每个容器有一个副本。
如果你想拥有一个容器的多个副本,那我推荐你使用AKS,它更适合你的目的。
这里你需要的是 Azure Kubernetes Service 或 Azure Webapps for Containers。两者都将负责从 ACR 获取 Docker 图像,然后分发到一组机器上。
这是一个决策树来选择你的 compute service
容器实例 - 小型、快速、无服务器容器托管服务 - 通常适合小型容器部署,我倾向于使用它来生成临时后台作业
AKS - 大规模容器部署,其中很大一部分是多容器编排平台。看看这个example
我有一个 Docker 应用程序,它在 Windows 我的笔记本电脑上运行良好,使用 compose 并启动容器的多个实例作为 Dask 集群。
服务的名称是“worker”,我启动了两个容器实例,如下所示:
docker compose up --scale worker=2
我在 Azure 上部署了图像,当我 运行 docker 组合时(使用我在 Windows 中使用的相同命令)仅 一个 容器已启动。
如何在Azure中部署容器集群?我可以使用 docker compose 还是我需要采用不同的方法,例如使用模板或 Kubernetes 进行部署?
这是 docker-compose.yml
文件:
version: "3.0"
services:
web:
image: sofacr.azurecr.io/pablo:job2_v1
volumes:
- daskvol:/code/defaults_prediction
ports:
- "5000:5000"
environment:
- SCHEDULER_ADDRESS=scheduler
- SCHEDULER_PORT=8786
working_dir: /code
entrypoint:
- /opt/conda/bin/waitress-serve
command:
- --port=5000
- defaults_prediction:app
scheduler:
image: sofacr.azurecr.io/pablo:job2_v1
ports:
- "8787:8787"
entrypoint:
- /opt/conda/bin/dask-scheduler
worker:
image: sofacr.azurecr.io/pablo:job2_v1
depends_on:
- scheduler
environment:
- PYTHONPATH=/code
- SCHEDULER_ADDRESS=scheduler
- SCHEDULER_PORT=8786
volumes:
- daskvol:/code/defaults_prediction
- daskdatavol:/data
- daskmodelvol:/model
entrypoint:
- /opt/conda/bin/dask-worker
command:
- scheduler:8786
volumes:
daskvol:
driver: azure_file
driver_opts:
share_name: daskvol-0003
storage_account_name: sofstoraccount
daskdatavol:
driver: azure_file
driver_opts:
share_name: daskdatavol-0003
storage_account_name: sofstoraccount
daskmodelvol:
driver: azure_file
driver_opts:
share_name: daskmodelvol-0003
storage_account_name: sofstoraccount
我也是 docker 的新手。但据我所知,编排容器或扩大容器通常使用 docker 群或 kubernetes。在 Azure kuberenetes 集群中是 AKS。
docker compose up --scale worker=2
我在这个 link 中遇到了缩放容器的问题 https://github.com/docker/compose/issues/3722
How to simply scale a docker-compose service and pass the index and count to each? 希望这可能有所帮助。
现在 ACI 支持从 docker-compose.yaml 文件部署,但它不支持扩展到同一容器的多个副本。因为ACI不支持端口映射,一个端口只能为一个容器暴露一次。所以只能通过docker-compose在一个容器组中创建多个容器。 yaml 文件,每个容器有一个副本。
如果你想拥有一个容器的多个副本,那我推荐你使用AKS,它更适合你的目的。
这里你需要的是 Azure Kubernetes Service 或 Azure Webapps for Containers。两者都将负责从 ACR 获取 Docker 图像,然后分发到一组机器上。
这是一个决策树来选择你的 compute service
容器实例 - 小型、快速、无服务器容器托管服务 - 通常适合小型容器部署,我倾向于使用它来生成临时后台作业
AKS - 大规模容器部署,其中很大一部分是多容器编排平台。看看这个example