繁体   English   中英

使用 docker-py 在 Azure 上运行 Docker 个容器

[英]Running Docker containers on Azure using docker-py

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

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

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

docker --context myacicontext run hello-world

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

有没有一种方法可以配置 docker-py 以提供 --context?


编辑:

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

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

这改变了 docker cmd 线路接口使用的默认上下文,所以

C:\Users\MikeSadler>docker ps -a

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

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


结论:

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

恐怕没有办法像命令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 中。 我认为这可能是一个需要修复的错误。 我不是很确定,但现在就是这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM