0

I want to write a python script that run docker containers and then show logs for that particular container, I have use some functions that are working and starting or stoping containers for me. Can somebody help me to show logs for the containers ?? I tried to use container.logs() function, but it is not working for me, i am also trying to study docker-py library ! I don't know much about python, any help will be highly appreciated !

#!/usr/bin/python
import docker
c = docker.Client(base_url='unix://var/run/docker.sock',version='1.12',timeout=10)
ctr = c.create_container('ubuntu:16.04') 
c.start(ctr)
2
  • which version of docker are you using? You are using old python client it seems Commented Sep 11, 2017 at 7:38
  • Docker version 17.05.0-ce, build 89658be Python 2.7.12 Commented Sep 11, 2017 at 8:44

2 Answers 2

4

You are using a old docker client. Run below to fix that

pip uninstall docker-py
pip install docker

Once done you can use something like below

import docker

c = docker.DockerClient(base_url='unix://var/run/docker.sock',timeout=10)
ctr = c.containers.run('ubuntu:16.04',command="bash -c ' for((i=1;i<=10;i+=2)); do echo Welcome $i times; sleep 10; done'", detach=True) 
logs = ctr.logs(stream=True)

for line in logs:
    print(line)
Sign up to request clarification or add additional context in comments.

5 Comments

Not running properly, will you please help a little ! ======>> Traceback (most recent call last): File "pydoc.py", line 3, in <module> c = docker.DockerClient(base_url='unix://var/run/docker.sock',timeout=10) AttributeError: 'module' object has no attribute 'DockerClient' <============
That means you still are on old client
Tarun, i have upgraded all the packages ... using this but still getting this error ! i have upgrade it using, pip install --upgrade docker-py pip install --upgrade docker
yes obviously i have first uninstalled it then i have again installed it ! But still it is not working fine !
Please test it in a fresh new virtual environment, the code has been tested on my end and then only shared. The code has nothing wrong. Please us virtualenvwrapper.readthedocs.io/en/latest
1

@Tarun , i come through it and it solved my problem , its easy ! by the way thanks for your help man !

import docker
import dockerpty

client = docker.Client()
container = client.create_container(
image='busybox:latest',
   stdin_open=True,
   tty=True,
   command='/bin/sh',
)
client.start(container)
dockerpty.PseudoTerminal(client, container).start()

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.