Help us understand the problem. What is going on with this article?

pythonを使ってdockerを操作

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

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

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away