问题标签 [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 回答
2128 浏览

python - 如何在 docker-py 中运行基本的 Web 应用程序容器?

我正在尝试模拟运行在某个端口公开的容器化 Web 应用程序

在 Python 中使用docker-py。到目前为止,我得到了这个代码来启动实例:

但我无法访问公共端口 1338 上的容器(与第一个命令一起正常工作) - 我收到连接被拒绝错误。有谁知道我是否缺少一些选项来使 Python 调用创建功能性、可访问的容器?

检查容器告诉我端口已按应有的方式设置:

我还尝试ports=[1337]了通话中的选项create_container,但它也没有帮助。

更新:似乎这是某种错误。解决方法是明确指定 TCP:

0 投票
3 回答
8560 浏览

python - 如何在 docker-py 中绑定卷?

我认为这在几个月前还有效。常规命令行泊坞窗:

按预期工作,但我无法让它在 docker-py 中工作:

..总是告诉我新的不存在。docker-py 应该怎么volumes-from做?

0 投票
1 回答
2846 浏览

python - docker-py:访问在 ENTRYPOINT 命令中运行的 python 脚本的输出

我无法使用 Python 中的 docker-py 模块获取在 docker 容器中运行的 Python 脚本的输出。

首先,一些背景:

我创建了一个 Dockerfile 并通过命令行docker build -t myimage /path/to/dockerfile( Python 脚本作为ENTRYPOINTDockerfile 中的命令执行:

包含脚本的目录在运行时被添加(绑定)到容器中。

当我通过通常的 docker 命令行(在 Ubuntu 中)执行此操作时,使用:

我将预期的 Python 脚本输出打印到标准输出(显示在终端中 - 脚本以print result命令结尾)。这正是我在 Python 中执行此操作时想要获得的输出。

但是,当尝试使用 docker-py 包从 Python 中执行此操作时,我无法查看结果 - 该logs方法返回一个空字符串。这是我正在使用的 Python 代码:

我只是得到一个空字符串。我尝试将脚本的输出通过管道传输到echo命令cat中,ENTRYPOINT但无济于事。如何在ENTRYPOINT命令中获取 script.py run 的输出作为该容器日志的一部分,以便我可以使用 docker-py Python 方法读取它?我也尝试了 docker-pyattach方法(我认为logs这只是一个包装版本),结果相同。

我考虑过将脚本输出写入文件而不是标准输出,但不清楚我将如何使用 docker-py 方法访问和读取该文件。

任何见解或建议将不胜感激!

0 投票
2 回答
19104 浏览

python - 捕获在 docker 容器内运行的 python 脚本的输出

这里的目的是使用 docker 容器作为安全沙箱来运行不受信任的 python 脚本,但要在 python 中使用 docker-py 模块执行此操作,并且能够捕获该脚本的输出。

我在 docker 容器中运行 python 脚本 foo.py(它ENTRYPOINT在我的 Dockerfile 中设置为命令,因此在容器运行后立即执行)并且无法捕获该脚本的输出。当我通过普通 CLI 运行容器时,使用

host_dirpath是包含 foo.py 的目录)我将 foo.py 的预期输出打印到标准输出,这只是一个键值对字典。但是,我正在尝试使用 docker-py 模块从 python 中执行此操作,并且不知何故,该logs方法没有捕获脚本输出。这是我正在使用的python代码:

这只会导致“Docker 日志:” - 日志中没有捕获任何内容,无论是 stdout 还是 stderr (我尝试在 foo.py 中引发异常来测试这一点)。

我追求的结果是由 foo.py 计算的,目前只是用 pythonprint语句打印到标准输出。如何将其包含在 docker 容器日志中,以便我可以从 python 中读取它?或者以其他方式从容器外部捕获此输出?

任何帮助将不胜感激。提前致谢!

编辑:

docker-py 仍然没有运气,但是在使用 subprocess.Popen 使用普通 CLI 运行容器时它运行良好 - 执行此操作时,输出确实被 stdout 正确抓取。

0 投票
3 回答
785 浏览

docker - Ansible 错误:KeyError: 'ApiVersion'

我正在使用 Ansible 1.7 (devel) 和 Docker 0.9.1 build 3600720,但我遇到了这个错误:

有任何想法吗?是否有任何有效的版本组合?我需要 Ansible 1.7,因为为 docker 容器添加了“运行”状态。

0 投票
1 回答
6900 浏览

python - 如何使用 docker-py(官方 docker 客户端)启动 bash shell?

我正在尝试使用 docker-py 运行 docker 容器并将我放入该容器中的 bash shell 中。我尽可能运行容器(我可以看到它docker ps,并且可以使用本机 docker 客户端很好地附加到它),但是当我attach()从官方 Python 库中使用时,它只会给我一个空字符串作为响应。如何附加到我的 bash shell?

0 投票
2 回答
9311 浏览

docker - Docker 远程 api 从 Docker 集线器私有注册表中提取

我正在尝试使用 docker 远程 API从托管在 Docker 中心https://registry.hub.docker.com/u/myname/myapp中的私有存储库中提取 docker 映像。文档不清楚如何在这样的 POST 请求中指定身份验证凭据

也没有详细说明 authconfig 是如何生成的。

讨论了发送具有如下结构的 base 64 编码 json:

但没有解释什么是 index_url 和 serveraddress。他们是

上面的配置给了我 404,可能注册表中心私有 repo 没有被识别。

我还尝试使用 base 64 对 ~/.dockercfg 的内容进行编码

您能告诉我如何生成 base64 编码的 authconfig 对象并使上述 curl 命令正常工作吗?

提前致谢

码头工人版本

0 投票
1 回答
315 浏览

docker - Docker 中的数据容器:未填充数据

这是我的问题。

我需要从容器内的卷中读取数据。我不需要在我的 docker 文件中使用 ADD 命令将这些数据直接复制到我的容器中,而是需要从数据占位符(即保存数据的容器)中查找这些数据。

所以,我创建了这个数据容器,

docker run -d -v /var/lib/ABC --name ABC_datastore busybox true。

据我了解,这应该创建一个容器 ABC_datastore,该容器将包含我从中运行此命令的主机的目录 /var/lib/ABC 中的数据?我错了吗?

所以如果我的理解是正确的,我可以在我的主容器中使用这个容器, docker run -i -t --volumes-from ABC_datastore --name="ABC_ins" -d ABC_img

这应该用正确的值填充我的 ABC-ins 中的 /var/lib/ABC。但它没有发生。我的 ABC-ins 中的文件夹 /var/lib/ABC 是空的。

我还尝试使用 docker run -d -v /var/lib/ABC --name ABC_datastore busybox true;填充数据。tar -c /var/lib/ABC | docker run -a stdin -i --volumes-from ABC_datastore busybox tar -xC /var/lib/ABC 这里也没有运气。

任何帮助将不胜感激。我的最终目标是创建一个数据容器,该容器将包含 /var/lib/ABC 中的实际数据,这些数据可以在给定路径中的容器内使用。

0 投票
1 回答
2180 浏览

docker - 使用 docker-py 获取正在运行的 docker 容器列表

我正在使用docker-py来管理我的一个应用程序的 docker 容器。我想检索所有正在运行的容器的列表,与docker ps. 但是该containers方法只返回一个空列表。

但是,当然,做$ docker ps给了我这个:

我在这里错过了什么?

0 投票
1 回答
200 浏览

jenkins - 如何运行 Docker 监听特定端口以与 Jenkins 集成

我正在尝试使用Jenkins Docker plugin. 不幸的是,我还不能在 RHEL 上运行 Docker 来监听特定端口。

我知道我必须补充:

但是在我的 RHEL 安装中找不到该/etc/init/docker.conf文件。

那么修改哪个文件呢?