问题标签 [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.

0 投票
1 回答
835 浏览

python - 如何从 Python 访问 google cloud docker regystry

我想通过https://gcr.io http API 从 Google Cloud Docker Registry 中检索图像列表。

我找到了一种从命令行执行此操作的方法,如下所示:

但我想在 Python 中以编程方式完成它。这是我到目前为止所尝试的:

下面的工作,但我找不到不调用gcloudshell cmd 来检索身份验证令牌的方法。

此外,我还尝试使用经过身份验证的 httplib2 执行请求:

结果是b'{"errors":[{"code":"UNAUTHORIZED","message":"Not Authorized."}]}'

有人可以和我分享他在这方面的经验吗?

0 投票
3 回答
5579 浏览

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 代码正在做的事情。

有人可以帮我吗?

0 投票
1 回答
1032 浏览

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 的网络特性来引入延迟、丢包等?
0 投票
1 回答
1064 浏览

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获取图像?httphttps

我已经探索了所有选项,包括使用--insecure-registry标志启动 docker daemon。他们似乎都没有对我在这里想要实现的目标产生任何影响。

来自远程主机的以下 curl 命令获取数据

与 https 相同的 curl 命令:似乎在获取数据时出现问题

0 投票
2 回答
1932 浏览

python - 使用 docker-py 执行 shell 命令

我正在尝试在已经运行的容器上使用 docker-py 运行 shell 命令,但出现错误:

这是我编写脚本的方式:

所以我的问题是如何使用 docker-py 运行 shell 命令(在容器内)?

0 投票
1 回答
535 浏览

python - docker-py:如何检查构建是否成功?

我正在尝试在 Python 3 中为自己构建一个简洁的管道。我的问题,一切似乎都运行良好,Jenkins 总是给我一个绿色气泡,但有时 docker build 无法执行。

因此client.build,如果由于某种原因构建中断,则不会引发错误:

如果构建失败,则不会引发错误。

有人可以帮我找到正确的方法,我如何确定我的构建已经完成,如果没有收到有效的消息?我完全迷路了。

最好的问候米尔科

0 投票
1 回答
3253 浏览

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或执行等效命令?

0 投票
0 回答
52 浏览

python - 通过 docker-py 将消息作为文件传递

有没有办法通过 docker 将消息作为文件传递并在 docker shell 上执行?

例如,如果 x = "print 12345",我可以将 x 的值作为 python 文件传递​​并将其复制到我的容器中。然后用shell来运行这个python文件?

0 投票
3 回答
2343 浏览

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}

0 投票
2 回答
6610 浏览

python - 运行 docker 的 Python 脚本

python脚本流程:

  • 我想从 python 脚本运行 docker 映像。
  • 运行 docker 映像后,我需要执行一个 shell 脚本,该脚本在 docker 容器内创建一个 tar 文件。
  • 我需要将该 tar 文件从 docker 容器复制到主机。
  • 然后python脚本应该继续在主机上执行一些东西。

使用 docker-py 模块,我能够做到以下几点:

我看到 docker 映像和容器在主机上运行,​​但是现在如果我想在 docker 容器中运行 shell 脚本,我该怎么做?之后,我还需要将 tar 从容器复制到主机。有人可以建议如何做到这一点吗?