2018年6月24日日曜日

Python3 から docker を制御する

概要

試してみたのでサンプルを紹介します

環境

  • macOS 10.13.5
  • Python 3.6.5
  • docker-py 3.4.0
  • docker 18.03.1-ce

run する

import docker

client = docker.from_env()
res = client.containers.run("alpine", "echo hello world")
print(res)

バックグラウンド実行 (-d)

import docker

client = docker.from_env()
res = client.containers.run("nginx", detach=True)
print(res)

ポートを expose する (-p)

import docker

client = docker.from_env()
res = client.containers.run("nginx", detach=True, ports={'80/tcp': ('0.0.0.0', 81)})
print(res)

('0.0.0.0', 81) がホスト側のバインドアドレスとポートになります

環境変数を設定 (-e)

import docker

client = docker.from_env()
res = client.containers.run("alpine", environment=["NAME=hawksnowlog"], command="env")
print(res)

同時に削除 (--rm)

import docker

client = docker.from_env()
res = client.containers.run("alpine", environment=["NAME=hawksnowlog"], command="env", remove=True)
print(res)

コンテナの一覧を取得 (ps -a)

import docker

client = docker.from_env()
res = client.containers.list(all=True)
print(res)

ホストを指定する

import docker

docker.DockerClient(base_url='tcp://172.28.128.3:2375')
res = client.containers.list(all=True)
print(res)

もしくは docker.from_env() を使ってプログラムを実行する際に DOCKER_HOST 環境変数で指定する

最後に

Python3 から docker を操作していみました
かなり簡単に使えます

Swarm, Service あたりはカバーしているようです
Stack Deploy はまだのようです
https://github.com/docker/docker-py/issues/1173

参考サイト

0 件のコメント:

コメントを投稿