我的Docker命令是:
docker run --rm wappalyzer/cli https://wappalyzer.com
Run Code Online (Sandbox Code Playgroud)
当我运行我的python脚本时:
#!/usr/bin/python
from subprocess import call
import json
import os
import docker
docker run --rm wappalyzer/cli "MYURL"
Run Code Online (Sandbox Code Playgroud)
它说
File "t.py", line 7
docker run --rm wappalyzer/cli "MYURL"
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我的操作系统是ubuntu 14.04,我正在使用ubuntu终端。
小智 8
更新 : 2021-03-22
我们现在有了python-on-whales Python 的 Docker 客户端。适用于 Linux、macOS 和 Windows,适用于 Python 3.7 及更高版本。
>>> from python_on_whales import docker
>>> output = docker.run("hello-world")
>>> print(output)
Hello from Docker! This message shows that your installation appears to be
working correctly.
>>> from python_on_whales import DockerClient
>>> docker = DockerClient(compose_files=["./my-compose-file.yml"])
>>> docker.compose.build()
>>> docker.compose.up()
...
>>> docker.compose.down()
Run Code Online (Sandbox Code Playgroud)
这不是有效的Python代码。如果您只是想运行一个容器并传递命令作为参数,则可以执行以下操作:
#!/usr/bin/env python
import sys
import docker
image = "wappalyzer/cli"
client = docker.from_env()
client.containers.run(image, sys.argv[1], True)
Run Code Online (Sandbox Code Playgroud)
但是,如果您要这样做的话,您应该阅读有关Python和从Python运行进程的更多信息。Python不是Shell语言,您不能仅内联使用Shell命令。
正如@AndyShinn所说,Python不是一种外壳语言,但是您可以像运行shell命令一样调用docker:
#!/usr/bin/python
import subprocess
with open("/tmp/output.log", "a") as output:
subprocess.call("docker run --rm wappalyzer/cli https://wappalyzer.com", shell=True, stdout=output, stderr=output)
Run Code Online (Sandbox Code Playgroud)
使用这种方法,您无需导入docker。
您可以使用名为的 pip 包docker并使用它来连接到 Docker。在 subProcess 中运行命令与此解决方案之间的区别在于格式。您可以管理映像、容器以及 CLI 能够执行的所有操作。
在这里查看: https: //docker-py.readthedocs.io/en/stable/
样本:
import docker
client = docker.from_env()
client.containers.run("ubuntu", "echo hello world")
# or
client.containers.run("bfirsh/reticulate-splines", detach=True)
# you can even stream your output like this:
for line in container.logs(stream=True):
print(line.strip())
Run Code Online (Sandbox Code Playgroud)
所有代码示例都可以在我提到的源 URL 中找到。
| 归档时间: |
|
| 查看次数: |
8846 次 |
| 最近记录: |