运行 Docker 在 Azure Batch Shipyard 上编写

Running Docker Compose on Azure Batch Shipyard

我想知道是否有人知道如何 运行 在 Batch Shipyard 上进行组合,或者不直接使用组合,从而允许多个容器在作业的同一节点上协同工作。这可能吗?

澄清一下——我有几个容器一起工作来解析和处理一个文件。主容器通过网络调用使用其他服务。我要复制的撰写文件的简化示例如下:

version: "3"
services:
  primary:
    image: "primaryimage"
    depends_on:
      - secondary
    environment:
      SECONDARY_URL: secondary:8888
  secondary:
    image: secondaryimage

primary 中的代码 运行 中,调用了 SECONDARY_URL 中给出的 URL 以对数据执行一些转换,并返回响应。

Azure Batch (Shipyard) 没有 out-of-the-box 对 Docker Compose 的支持。

但如果您已经熟悉 Docker Compose,那么将其转换为 shipyard 配置文件并不难。

如果您想 运行 MPI/multi-instance 任务(一组节点合作解决部分计算),请查看 this

但是,Service Fabric 确实支持 Docker Compose。因此,如果 Docker Compose 支持是一项严格要求,您可以将 Azure Batch 设置与对 Service Fabric 集群的调用结合起来。

这里有一个解决方法可以让这个工作。请注意,作为一种解决方法,它不受官方支持,可能随时会中断。

  • 创建一个 Docker 图像,其本身具有 Docker(更具体地说,只需要客户端部分)并安装了 Docker compose。
  • 对于 jobs.yaml 中的 tasks 规范:
    • docker_image 是您在上面创建的图像
    • 使用 resource_filesinput_data 进入任务的撰写文件
    • additional_docker_run_options 应该有一个项目:
      • -v /var/run/docker.sock:/var/run/docker.sock
    • command 将是您的 docker-compose up 命令,带有您需要的任何参数
  • 确保您的 config.yaml 指定了您的 Docker 撰写文件所需的所有 Docker 图像以及包含 Docker/docker-compose 本身的 Docker 图像。