使用python脚本启动docker容器

使用python脚本启动docker容器,python,python-2.7,docker,Python,Python 2.7,Docker,我想从python脚本启动docker容器。当我通过代码调用docker映像时,我无法启动docker容器 import subprocess import docker from subprocess import Popen, PIPE def kill_and_remove(ctr_name): for action in ('kill', 'rm'): p = Popen('docker %s %s' % (action, ctr_name), shell

我想从python脚本启动docker容器。当我通过代码调用docker映像时,我无法启动docker容器

import subprocess
import docker


from subprocess import Popen, PIPE


def kill_and_remove(ctr_name):
    for action in ('kill', 'rm'):
        p = Popen('docker %s %s' % (action, ctr_name), shell=True,
                  stdout=PIPE, stderr=PIPE)
        if p.wait() != 0:
            raise RuntimeError(p.stderr.read())


def execute():
    ctr_name = 'sml/tools:8' # docker image file name
    p = Popen(['docker', 'run', '-v','/lib/modules:/lib/modules',
               '--cap-add','NET_ADMIN','--name','o-9000','--restart',
               'always', ctr_name ,'startup',' --base-port',
               9000,' --orchestrator-integration-license',
               ' --orchestrator-integration-license','jaVl7qdgLyxo6WRY5ykUTWNRl7Y8IzJxhRjEUpKCC9Q='
               ,'--orchestrator-integration-mode'],
              stdin=PIPE)
    out = p.stdin.write('Something')

    if p.wait() == -20:  # Happens on timeout

        kill_and_remove(ctr_name)

    return out
以下是docker容器的详细信息,供您参考

dev@dev-VirtualBox:sudo docker ps -a
[sudo] password for dev: 
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS               NAMES
79b3b9d215f3        sml/tools:8   "/home/loadtest/st..."   46 hours ago        Up 46 hours                             pcap_replay_192.168.212.131_9000_delay_dirty_1
有人能告诉我为什么我不能通过我的程序启动我的容器吗

docker py
()应该用来通过Python控制docker

这将启动一个运行
sleep infinity
的Ubuntu容器

import docker

client = docker.from_env()
client.containers.run("ubuntu:latest", "sleep infinity", detach=True)

查看更多详细信息(功能、卷等)。

感谢您的回复,我知道docker py,它看起来很复杂,我使用了简单的子流程。Popen用于运行docker容器,您能告诉我代码中的错误吗?我在docker py中运行时遇到以下错误:raise ConnectionError(e,request=request)requests.exceptions.ConnectionError:UnixHTTPConnectionPool(host='localhost',port=None):url超过最大重试次数:/v1.30/containers/create(由:[Errno 13]拒绝权限引起)
[Errno 13]拒绝权限
。将您的用户添加到docker组。如何将用户添加到docker组#