LoginSignup
19
21

More than 1 year has passed since last update.

pythonを使ってdockerを操作

Last updated at Posted at 2018-11-30

ゆるっとアドベントカレンダー 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()

すべてのコンテナを消し去るときは↑のようにやるといいよ

19
21
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
21