docker-py を使ってコンテナを起動する

Docker Remote API を使うために docker-py を使って動作確認.

動作確認環境

インストール

docker-py をインストール

$ sudo pip install -U git+https://github.com/dotcloud/docker-py

設定

/etc/default/docker に下記記述を追加して tcp で受けられるようにする.

DOCKER_OPTS="-H unix:///var/run/docker.sock -H 0.0.0.0:5555"

docker をリスタート

$ sudo service docker restart

動作確認

とりあえず http が使えることを確認するために下記のような Dockerfile を用意してビルドする.ここでは nise_nabe/apache というタグをつけている.

$ cat Dockerfile
FROM debian

RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y apache2

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
CMD /usr/sbin/apache2 -D FOREGROUND
$ sudo docker build -t nise_nabe/apache -rm .

下記のようなコード(ここでは test.py としている)を用意する.出力に IPアドレスを出している.

import docker
import time

c = docker.Client(base_url='http://localhost:5555', version='1.8', timeout=20)

result = c.create_container(image='nise_nabe/apache')
containerId = result['Id']
c.start(container=containerId)

time.sleep(1) # 念のため 1s 待つ

data = c.inspect_container(container=containerId)
print data['NetworkSettings']['IPAddress']

apache が起動するか確認.

$ python test.py | xargs curl
<html><body><h1>It works!</h1>
<p>This is the default web page for this server.</p>
<p>The web server software is running but no content has been added, yet.</p>
</body></html>

以上確認終わり