作为 docker 自动化的一部分,我尝试使用 python docker 包来自动化某些 docker 操作。好吧,我已经成功实现了大部分要求,但找不到等效的方法
docker logs <container-id>
Run Code Online (Sandbox Code Playgroud)
我的实现:
import docker
client = docker.APIClient()
client.attach(container, stdout=True, stderr=True, stream=False, logs=True, demux=False)
Run Code Online (Sandbox Code Playgroud)
然而它并没有给出预期的结果。请帮助我找出实施中缺少的内容。预先感谢您回答这个问题
#更新
import docker
z=docker.from_env()
dkg = z.containers.get('<container_id>').logs(stream = True, follow = False, tail =10)
while True:
line = next(dkg).decode("utf-8")
print(line)
Run Code Online (Sandbox Code Playgroud)
好吧,我已经通过参考链接将我的实现替换为上面的实现。尽管添加 tail 选项后它不起作用。添加 tail 命令时,它显示空白,没有任何错误。有关获得尾部结果的任何提示
我想用 docker python sdk 替换下面的命令
docker exec 6d9c9b679541 /u01/app/oracle/product/12.0.0/dbhome_1/bin/sqlplus sachin/sachin@orcl @1.sql
Run Code Online (Sandbox Code Playgroud)
这是我正在编写的代码以及我使用 python3 遇到的错误
>>> import docker
>>> client = docker.from_env()
>>> client.exec_run('6d9c9b679541',command='/u01/app/oracle/product/12.0.0/dbhome_1/bin/sqlplus sachin/sachin@orcl @1.sql')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.6/site-packages/docker/client.py", line 205, in __getattr__
raise AttributeError(' '.join(s))
AttributeError: 'DockerClient' object has no attribute 'exec_run'
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题?