【问题标题】:Running Docker containers on Azure using docker-py使用 docker-py 在 Azure 上运行 Docker 容器
【发布时间】:2020-10-29 01:12:26
【问题描述】:

我可以找到我想做的所有成分,但我不确定是否可以将它们放在一起。

最终,我希望 Python 进程能够创建和管理在 Azure 上运行的 Docker 实例。

此链接显示您可以使用 Docker API 在 Azure 上启动实例:https://docs.docker.com/engine/context/aci-integration/。它是 Beta,但我已经能够在登录后在 Azure 上运行我自己的容器,使用如下:

docker --context myacicontext run hello-world

我的问题的后半部分是从 docker-py 调用它。 docker-py 的普通用法很好而且很简单,但我在 docker-py 文档 (https://docker-py.readthedocs.io/en/stable/) 中找不到对标志“--context”的任何引用。

有没有办法配置 docker-py 使其提供 --context?


编辑:

感谢@CharlesXu为我指明了正确的方向,我现在发现下面的docker-py命令确实有效果:

docker.context.ContextAPI.set_current_context("myacicontext")

这会改变 docker cmd line 接口使用的默认上下文,所以

C:\Users\MikeSadler>docker ps -a

随后将列出在 Azure 中而不是本地运行的容器。

然而,docker.from_env().containers.list(all=all) 命令顽固地继续返回本地容器。即使您重新启动 Python 会话并从头开始创建新客户端也是如此。


结论:

在与 Docker 开发人员交谈后,截至 2020 年 10 月,docker-py 正式不支持云连接。他们目前正在使用 GRPC 协议来管理 Cloud 运行,而这可能将来会被合并到 docker-py 中。

【问题讨论】:

  • 似乎在构建图像时设置了上下文:docker-py.readthedocs.io/en/1.6.0/api
  • @CasperDijkstra 我相信您正在与之交谈的 Docker 守护进程所在的位置,而不是作为 --context 赋予该守护进程的位置。我已经在容器中运行这个 Python,并且 Python 正在使用主机容器的守护进程来运行 docker。我需要在这个上下文中提供 that 守护进程...

标签: python azure docker


【解决方案1】:

恐怕没有办法像命令docker --context myacicontext run hello-world 那样做。 SDK中也没有--context这样的参数。据我所知,您可以像这样使用 SDK 设置当前上下文:

import docker
docker.context.config.write_context_name_to_docker_config('context_name')

但是当你使用代码时:

client = docker.from_env()
client.containers.run('xxx')

然后它将上下文设置为default。这意味着您不能将容器运行到 ACI 中。我认为这可能是一个需要修复的错误。我不是很确定,但现在就是这样。

【讨论】:

  • 谢谢 - 我还没有找到 write_context_name_to_docker_config 函数。您是否将其报告为错误?他们完全有背景的事实表明他们打算支持它......
  • @MikeSadler 我没有将其报告为错误,因为我不太确定。还是没找到功能?
  • 谢谢,查尔斯。那里肯定有东西。 docker.context.ContextAPI.get_context("azure_context") 返回一个知道它是“aci”上下文的对象,所以看起来那里有一些真正的功能。我会尝试...
  • docker.context.ContextAPI.set_current_context("hhhoih") 也返回错误(即如果上下文不存在)。但是, docker.from_env() 仍然忽略它...
  • @MikeSadler 这就是我发现并在答案中告诉你的问题。所以我认为这可能是一个错误。
猜你喜欢
  • 2019-01-19
  • 2023-04-05
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
  • 2019-03-08
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多