问题标签 [dockerpy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何从 Python 访问 google cloud docker regystry
我想通过https://gcr.io http API 从 Google Cloud Docker Registry 中检索图像列表。
我找到了一种从命令行执行此操作的方法,如下所示:
但我想在 Python 中以编程方式完成它。这是我到目前为止所尝试的:
下面的工作,但我找不到不调用gcloud
shell cmd 来检索身份验证令牌的方法。
此外,我还尝试使用经过身份验证的 httplib2 执行请求:
结果是b'{"errors":[{"code":"UNAUTHORIZED","message":"Not Authorized."}]}'
有人可以和我分享他在这方面的经验吗?
python - 使用 docker python API 链接容器
我想使用 docker python API ( pip install docker-py
) 创建一个容器并将其链接到我使用 docker-compose 创建的现有容器。
使用命令行很容易:
docker run --link EXISTING_CONTAINER:LINK_NAME mycontainer:mytag
但是使用 docker API 我被卡住了。我认为我必须使用该docker.Client().create_container()
方法,该方法采用 -undocumented-parameter links=
。(我强烈认为文档非常不完整......)。
我尝试阅读 docker-compose 代码,这似乎使用了links=
参数,但我不知道如何。
我最初的尝试没有奏效:
client_obj.create_container(..., links=(('EXISTING_CONTAINER', 'LINK_NAME'),))
...这就是我认为 docker-compose 代码正在做的事情。
有人可以帮我吗?
python - 在没有特权模式的 Docker 环境中操纵 Docker 中容器之间的网络流量?
在 docker 容器在其他 docker 容器中运行的环境中(通过安装 docker 套接字,而不是以特权身份运行),有没有办法操纵网络来执行以下操作:
- 引入延迟
- 丢弃数据包的百分比
- 带宽上限
我只对来自容器的 docker-to-docker 流量感兴趣,我开始使用 docker-py(在环境中)。我不关心操纵其他流量,例如 docker 到 localhost 或 docker 到 Internet。在许多方面,只操纵 docker-docker 网络流量是理想的。
即使在 docker 容器中,当它在以下情况之一下运行时,也有很多方法可以做到这一点:
- 特权模式
- 传递
--cap-add=NET_ADMIN
标志运行时
一些实用程序(iptables、tc 和使用它们实现的各种库)允许这样做。但是所有这些都需要比我的环境更高的权限,因为“主机”容器不是以特权模式启动的。
我无法控制系统配置。我必须在另一个容器中运行这些容器,而不是在特权模式下启动。如果我可以更改它会很简单,因为我可以使用上面列出的任何实用程序。
所有容器都连接到由docker network create foobar
.
我的应用程序是用 Python3.4 编写的,在 OSX 上使用 docker-py。
- 有没有办法操纵 docker 到 docker 的网络特性来引入延迟、丢包等?
curl - 从远程主机上的私有注册表中提取 docker 图像?
我已将 docker 映像推送到在 host1 上运行的私有注册表。但是,当我尝试从远程主机 (host2) 获取图像时,我确实看到以下错误:
Docker 命令:docker pull <host1>:5000/alpine:latest
结果:Error response from daemon: Get https://<host1>:5000/v1/_ping: EOF
我怎样才能用调用而不是docker pull
获取图像?http
https
我已经探索了所有选项,包括使用--insecure-registry
标志启动 docker daemon。他们似乎都没有对我在这里想要实现的目标产生任何影响。
来自远程主机的以下 curl 命令获取数据
与 https 相同的 curl 命令:似乎在获取数据时出现问题
python - 使用 docker-py 执行 shell 命令
我正在尝试在已经运行的容器上使用 docker-py 运行 shell 命令,但出现错误:
这是我编写脚本的方式:
所以我的问题是如何使用 docker-py 运行 shell 命令(在容器内)?
python - docker-py:如何检查构建是否成功?
我正在尝试在 Python 3 中为自己构建一个简洁的管道。我的问题,一切似乎都运行良好,Jenkins 总是给我一个绿色气泡,但有时 docker build 无法执行。
因此client.build
,如果由于某种原因构建中断,则不会引发错误:
如果构建失败,则不会引发错误。
有人可以帮我找到正确的方法,我如何确定我的构建已经完成,如果没有收到有效的消息?我完全迷路了。
最好的问候米尔科
docker - docker-compose 有没有办法保存和打开 docker 镜像?
使用本机 docker 客户端守护程序,您可以将图像保存到文件中,然后加载它们。
例如,来自文档:
我想使用 docker-compose 做同样的功能。但是,在他们的文档中似乎不支持保存/加载。
我想这样做的原因是我在一个环境中运行 docker-compose,它通过 docker sock 进行通信,但没有安装 docker 本身。我无法在此环境中安装 docker 客户端(但已安装 docker-compose)。未安装 Docker,也不必安装 docker-compose 即可工作。所有 docker-compose 需要的是与 /var/run/docker.sock 的连接,它使用docker-py来讨论这个问题。
我想我可以编写一个简单的脚本docker-py
来执行此操作,但我希望通过 docker-compose 本身来执行此操作。
有没有办法docker-compose
加载保存的图像文件docker save
或执行等效命令?
python - 通过 docker-py 将消息作为文件传递
有没有办法通过 docker 将消息作为文件传递并在 docker shell 上执行?
例如,如果 x = "print 12345",我可以将 x 的值作为 python 文件传递并将其复制到我的容器中。然后用shell来运行这个python文件?
python - docker-py getarchive 目标文件夹
我正在按照此链接中给出的 get_archive()链接的说明进行操作, 但我没有创建我的容器,而是尝试使用在我的情况下已经运行的容器“docker-nginx”作为输入字符串以及我的内容所在的目标文件夹在 nginx 服务器中作为 '/usr/share/nginx/html' 并获得了文件夹统计信息的输出 我无法弄清楚我的文件是在哪里下载的
这是我的代码
strm,stat=c.get_archive(container_name,'/usr/share/nginx/html')
我的 print(strm) 输出是<requests.packages.urllib3.response.HTTPResponse object at 0x7fe3581e1250>
我的 print(stat) 输出是{u'linkTarget': u'', u'mode': 2147484157, u'mtime': u'2016-10-05T09:37:17.928258508-05:00', u'name': u'html', u'size': 4096}
python - 运行 docker 的 Python 脚本
python脚本流程:
- 我想从 python 脚本运行 docker 映像。
- 运行 docker 映像后,我需要执行一个 shell 脚本,该脚本在 docker 容器内创建一个 tar 文件。
- 我需要将该 tar 文件从 docker 容器复制到主机。
- 然后python脚本应该继续在主机上执行一些东西。
使用 docker-py 模块,我能够做到以下几点:
我看到 docker 映像和容器在主机上运行,但是现在如果我想在 docker 容器中运行 shell 脚本,我该怎么做?之后,我还需要将 tar 从容器复制到主机。有人可以建议如何做到这一点吗?