Tag: dockerpy

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

我试图在Python 3中构build自己的pipe道。我的问题,似乎一切都很好,jenkins总是给我一个绿色的泡沫,但有时docker构build无法执行。 所以,如果构build因为某种原因而中断, client.build不会引发错误: try: self.client.build(path=self.arguments.projectPath, pull=True, rm=False, tag=self.arguments.dockerImageTag) except: print("Error: Docker did not build) raise 如果构build失败,不会引发错误。 有人可以帮助我find正确的方法,我怎么能确定我的构build完成,如果没有得到一个有效的消息? 我完全迷失了。 最好的问候Mirco

如何检测docker-py client.build()失败

我使用docker-py来构build和运行Docker镜像。 从阅读文档 ,我不清楚如何build立图像是否有错误。 当出现错误时, build()不会引发exception。 这让我觉得我必须调查回应的回应。 什么是确定是否docker-py的client.build()失败的最佳方法?

在没有特权模式的Docker环境中操作Docker中的容器之间的networkingstream量?

在Docker容器在其他Docker容器内部运行的环境中(通过安装Docker套接字,而不是以特权运行),是否有任何方式来操纵networking来执行如下操作: 引入延迟 丢弃数据包的百分比 带宽上限 我只对docker-py容器中的docker-dockerstream量感兴趣。 我不在乎操纵其他stream量,如docker到本地或docker到互联网。 在很多方面,只有操纵docker泊车networkingstream量才是理想的。 在以下情况下运行时,即使在Docker容器中也有很多方法可以执行此操作: 特权模式 传递–cap-add=NET_ADMIN标志运行时 一些实用程序(iptables,tc和使用它们实现的各种库)允许这样做。 但是,由于“主机”容器没有以特权模式启动,所有这些都需要比我的环境中更高的权限。 我无法控制系统configuration。 我必须在另一个容器内运行这些容器,而不是以特权模式启动。 如果我能改变这一点,这将是直截了当的,因为我可以使用上面列出的任何工具。 所有的容器都连接到一个由docker network create foobar创build的docker network create foobar 。 我的应用程序,用Python3.4编写,在OSX上使用docker-py。 是否有任何方法来操纵docker到dockernetworking的特性,以引入延迟,数据包丢弃等networking?

使用docker-py执行shell命令

我试图在已经运行的容器上用docker-py运行一个shell命令,但是得到一个错误: exec: "export": executable file not found in $PATH 以下是我编写脚本的方法: exe = client.exec_create(container=my_container, cmd='export MYENV=1') res = client.exec_start(exec_id=exe) 所以我的问题是如何使用docker-py运行一个shell命令(在容器内)?

无法使用pip安装docker-compose,“ImportError:No module named dockerpycreds”

我试图用pip安装docker-compose但是我得到这个错误: $ docker-compose Traceback (most recent call last): File "/usr/local/bin/docker-compose", line 7, in <module> from compose.cli.main import main File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 17, in <module> from . import errors File "/usr/local/lib/python2.7/dist- packages/compose/cli/errors.py", line 11, in <module> from docker.errors import APIError File "/usr/local/lib/python2.7/dist-packages/docker/__init__.py", line 2, in <module> from .api import APIClient File "/usr/local/lib/python2.7/dist- packages/docker/api/__init__.py", line 2, in […]

Dockerpytesting容器在数据库可用之前超时?

我已经在Docker容器中加载了一个数据库(Neo4J),但是我认为我的unit testing在加载数据库之前碰到了容器。 def setUp(self): client = docker.from_env() self.container = client.containers.run("neo4j", detach=True, environment={'NEO4J_AUTH':'none'}, ports={7474:7474, 7687:7687}, volumes={'/Users/myuser/neo4j/data': {'bind': '/data', 'mode': 'rw'}} ) self.container.start() def test_database_loads(self): r = requests.get(self.database_url) self.assertEqual(r.status_code, 400) 我得到这个错误: ====================================================================== ERROR: test_database_loads (backend.api.tests.test_base.BaseTestCase) ———————————————————————- Traceback (most recent call last): File "/Users/aljabear/.pyenv/versions/visualist/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", line 386, in _make_request six.raise_from(e, None) File "<string>", line 2, in raise_from File "/Users/aljabear/.pyenv/versions/visualist/lib/python3.5/site-packages/requests/packages/urllib3/connectionpool.py", […]

连接拒绝cassandra和docker-py的错误

所以基本上我试图运行一个cassandradocker实例(2.1),并按照https://hub.docker.com/_/cassandra/中的说明运行cqlsh命令。 $ docker run –name some-cassandra -d cassandra:2.1 $ docker run -it –link some-cassandra:cassandra –rm cassandra sh -c 'exec cqlsh "$CASSANDRA_PORT_9042_TCP_ADDR"' 要么 $ docker run -it –link some-cassandra:cassandra –rm cassandra cqlsh cassandra 手动一切正常工作正常,但是当试图用docker-py自动化这个stream程时,我遇到了运行cqlsh shell的问题。 我无法执行cqlsh shell,并对我的链接容器运行的cassandra docker容器运行命令。 下面,我已经提供了代码和我得到的各种命令组合的响应,我试图让cqlsh shell工作。 任何提示/build议/答案是高度赞赏。 这是我正在使用的代码。 import docker host_config = client.create_host_config(port_bindings={ 9042: 9042, 7199: 7199, 7001: 7001 } ) ctr […]

在同一个docker-compose中列出容器

我正在研究一个利用docker-compose的应用程序。 其中一个容器是一个看门狗组件,它定期运行一个小型的python脚本来获取兄弟容器的状态,并在其中一个容器停止时采取行动。 到目前为止,我使用了应该被监视的所有容器名称的列表,但是现在我想知道它可以只监视由同一个docker-compose命令创build的所有容器。 以前,代码看起来像这样: watched_containers = ["component-a", "component-b"] def inspect_containers(): containers = { (container["Names"][0].lstrip("/"), container) for container in docker.Client().containers(all=True) } for container_name in watched_containers: if containers.get(container_name, {}).get("State") != "running": alert_container_stopped(container_name) 我发现dockerpy不知道dockerpy docker-compose ,所以我创build了一个基于com.docker.compose.project -compose项目名称标签( com.docker.compose.project )过滤容器的函数,但现在我有一个硬编码的项目名称而不是容器名。 有没有办法获得当前的项目名称,或者有其他方式来获取相同的组成的容器列表? 谢谢

用Ansible构buildDocker docker_image

我正在使用Ansible的docker_image模块在一台机器上构build一堆docker 。 我构build了1个“基础”泊坞窗图像,用作所有后续泊坞窗图像中的FROM图像。 这在手动发布构build命令时起作用: sudo docker build -t base . sudo docker build -t postgres . 但是,当我试图做与Ansible模块相同的第二个图像(以及所有使用“基本”图像的后续图像)失败,并出现以下错误: TASK: [Docker | Build postgres] ************************************ failed: [192.168.1.120] => {"changed": true, "failed": true, "image_id": null} msg: Error: Error: image base:latest not found Log:Step 0 : FROM base FATAL: all hosts have already failed — aborting 我的Playbook中的条目是: – name: […]

运行docker的Python脚本

Python脚本的stream程: 我想从Python脚本运行docker图像。 运行docker映像后,我需要执行一个shell脚本,它在docker容器中创build一个tar文件。 我需要将该tar文件从docker容器复制到主机。 然后python脚本应该继续在主机上执行一些东西。 使用docker-py模块,我能够做到以下几点: pip install docker-py docker version Client: Version: 1.12.1 API version: 1.24 Go version: go1.6.3 Git commit: 23cf638 Built: Thu Aug 18 05:22:43 2016 OS/Arch: linux/amd64 Server: Version: 1.12.1 API version: 1.24 Go version: go1.6.3 Git commit: 23cf638 Built: Thu Aug 18 05:22:43 2016 OS/Arch: linux/amd64 >>> import docker >>> […]