title: Running interactive commands in docker in Python subprocess
body: <p>When I use docker run in interactive mode I am able to run the commands I want to test some python stuff. </p>
  
  <pre><code>root@pydock:~# docker run -i -t dockerfile/python /bin/bash
  [ root@197306c1b256:/data ]$ python -c "print 'hi there'"
  hi there
  [ root@197306c1b256:/data ]$ exit
  exit
  root@pydock:~#
  </code></pre>
  
  <p>I want to automate this from python using the subprocess module so I wrote this:</p>
  
  <pre><code>run_this = "print('hi')"
  random_name = ''.join(random.SystemRandom().choice(string.ascii_uppercase + string.digits) for _ in range(20))
  command = 'docker run -i -t --name="%s" dockerfile/python /bin/bash' % random_name
  subprocess.call([command],shell=True,stderr=subprocess.STDOUT)
  command = 'cat &lt;&lt;\'PYSTUFF\' | timeout 0.5 python | head -n 500000 \n%s\nPYSTUFF' % run_this
  output = subprocess.check_output([command],shell=True,stderr=subprocess.STDOUT)
  command = 'exit'
  subprocess.call([command],shell=True,stderr=subprocess.STDOUT)
  command = 'docker ps -a | grep "%s" | awk "{print $1}" | xargs --no-run-if-empty docker rm -f' % random_name
  subprocess.call([command],shell=True,stderr=subprocess.STDOUT)
  </code></pre>
  
  <p>This is supposed to create the container, run the python command on the container and exit and remove the container. It does all this except the command is run on the host machine and not the docker container. I guess docker is switching shells or something like that. How do I run python subprocess from a new shell?</p>