ゆるっとアドベントカレンダー Advent Calendar の1日目です
Pythonでdockerを操作するためのライブラリ
基本的にはここを見れば解ると思います
$ pip install docker
をやったあとに
import docker
をやれば読み込めると思う
使い方
cli = docker.DockerClient(base_url="tcp://<dockerが動いてるホスト>")
これで使うことができる
あとはcli
のメソッドを呼んで行く
docker images
dockerのimageを取得する
cli.images.list()
# [<Image: 'sasenomura/nginx:latest'>]
ちなみにオブジェクトがリストで渡ってくるため
各コンテナに対して操作をしたいときは
下の例ではtagを撮ってきている
object_list = cli.images.list()
for i in iobjects_list:
print(i.tags)
# ['python:latest']
# ['sasenomura/nginx:latest']
idを取りたいときはi.id
とすれば取得することができる
docker ps
コンテナの一覧を取得したいときは下の例
オブジェクトのリストが取得できる
cli.containers.list()
すべてのコンテナを取得したいときは引数に'all=True'を入れて上げると'docker ps -a'のような結果になる
ちなみにコンテナのIDを取得したいときは
container_list = cli.containers.list()
for i in container_list:
container = print(i.id)
で取得することができる
docker run
cli.containers.run(image="sasenomura/nginx:latest",
auto_remove=True, name="user_name_nginx")
引数を説明する
imageにはdocker imageを指定してあげる
auto_removeにTrueを入れると--rm
をつけたのと一緒になる
docker exec
container = cli.containers.get(<コンテナのid or コンテナのname>)
container.exec_run(cmd=cmd)
コンテナ内でコマンドを実行するにはあらかじめcli.containers.get
でコンテナのオブジェクトを取得しておく必要がある
オブジェクトからexec_run(cmd=cmd)をすることでコマンドを実行することができる
cmdには以下のようにするといいだろう
cmd = "コマンド"
docker rm
container = cli.containers.get(<コンテナのid or コンテナのname>)
container.stop()
container.remove()
上と同様にコンテナのオブジェクトを取得してオブジェクトのremoveを呼び出す
念の為stopを呼び出している
以上です.
おまけ
docker rm $(docker ps -aq)
container_list = cli.containers.list(all=True)
for i in container_list:
container = cli.containers.get(i.id)
container.stop()
container.remove()
すべてのコンテナを消し去るときは↑のようにやるといいよ