Docker用のPythonライブラリAPI
PythonライブラリAPIを使用して、コンテナー、イメージ、クラスター、スウォームなどのDockerオブジェクトにアクセス、管理、操作できます。 dockerコマンドでできることはほとんど何でもできます。これは、djangoやflaskなどのPythonアプリを使用していて、アプリケーションに使用するのと同じPythonスクリプトを使用してDockerコンテナーを維持する場合に非常に便利です。
docker用のpythonライブラリAPIを使用するには、docker-pyというパッケージをインストールする必要があります。次のpipコマンドを使用してこれを行うことができます。 Python 2をインストールしている場合は、pip3をpipに置き換えます。
pip3 install docker−py
次に、Docker用のPythonクライアントライブラリAPIのさまざまな機能を1つずつ見ていきます。
APIを使用してPythonスクリプト内でdockerコマンドを実行するには、最初にdockerデーモンに接続する必要があります。次のコマンドを使用してこれを行うことができます-
#import client from docker import client #create a client object to connect to the daemon myClient = client.Client(base_url='unix://var/run/docker.sock')
dockerデーモンに接続した後、次のコマンドを使用してすべてのコンテナーのリストを取得できます。権限エラーを回避するために、コマンドを実行する前にrootユーザーとしてログインしていることに注意してください。
myClient.containers()
ローカルマシンに存在するすべてのコンテナのリストと、それらのID、関連するイメージとイメージID、ラベル、ポート、ステータスなどが表示されます。
新しいコンテナを作成するには、クライアントオブジェクトからcreate_containerメソッドを使用できます。
myContainer=myClient.create_container(image='ubuntu:latest',command='/bin/bash')
上記のコマンドを使用して、ubuntuイメージからコンテナーを作成し、bashを開くコマンドまたはその他のコマンドを必要に応じて提供できます。
次のコマンドを使用してコンテナのIDを印刷することで、コンテナが作成されたことを確認できます-
print(myContainer['Id'])
特定のコンテナを検査するには、クライアントオブジェクトでinspect_containerメソッドを使用できます。
myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')
引数として、内部で検査するコンテナのコンテナIDを指定する必要があります。パス、名前、作成日などの特定のフィールドのみを検査することもできます。
myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Name'] myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Created'] myClient.inspect_container('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5')['Path']
コンテナをコミットするには、コンテナオブジェクトのcommitメソッドを使用できます。コンテナにタグを付けることもできます。
myClient.commit('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5', tag='container1')
The above command will return the Id of the container. In order to restart a container, you need to make sure the container still exists. To avoid this, what we can do is to wrap the command inside a try−catch block.
try: myClient.restart('a74688e3cf61ac11fd19bcbca1003465b03b117537adfc826db52c6430c46ba5') except Exception as e: print(e)
すべての画像のリストを取得するには、クライアントオブジェクトでimagesメソッドを使用できます。
images = myClient.images()
すべての画像のリストが返されます。最初の画像の詳細を印刷するには、-
を使用しますprint(images[0])
画像を検査するには-
myClient.inspect_image('9140108b62dc87d9b278bb0d4fd6a3e44c2959646eb966b86531306faa81b09b')
引数として画像IDを指定する必要があります。
これで、ボリュームを操作するための便利なコマンドがいくつか表示されます。すべてのボリュームのリストを取得するには、クライアントオブジェクトでvolumesメソッドを使用できます。
volumes = myClient.volumes()
すべてのボリュームのリストが返されます。第1巻の詳細を印刷するには、-
を使用できます。print(volumes['Volumes'][0])
ボリュームを作成するには、ボリューム名、ドライバー名を指定する必要があります。オプションで、他のオプションも指定できます。
volume=myClient.create_volume(name='myVolume1', driver='local', driver_opts={})
ボリュームが作成されているかどうかを確認するには、ボリュームを印刷してみてください。
print(volume)
ボリュームを検査するには、クライアントオブジェクトでinspect_volumeメソッドを使用します。
myClient.inspect_volume('myVolume1')
ボリュームがマウントされたコンテナを作成するには、次の例を使用できます-
mounted_container = myClient.create_container( 'ubuntu', 'ls', volumes=['/var/lib/docker/volumes/myVolume1'], host_config=myClient.create_host_config(binds=[ '/var/lib/docker/volumes/myVolume1:/usr/src/app/myVolume1' , ]) )
上記のコマンドは、ubuntuイメージからコンテナーを作成し、エントリポイントをlsとして指定し、ローカルマシンの/ var / lib / docker / bytes/myVolume1にあるボリュームをdockerコンテナーの/usr/ src / app/myVolume1にマウントします。
結論として、この記事では、Pythonスクリプトを使用して、Dockerコンテナー、イメージ、ボリュームなどのDockerオブジェクトを作成、検査、および管理する方法について説明しました。これは、djangoやflaskを使用するWebアプリケーションや、tkinterやその他のPythonスクリプトを使用するGUIアプリケーションなど、Pythonツールを使用してアプリケーションを構築する場合に非常に便利です。 Dockerコンテナからアプリケーションを管理する場合は、コマンドラインインターフェイスからコマンドを個別に実行するのではなく、Pythonスクリプトを使用してDockerコマンドを作成することを強くお勧めします。
-
Pythonコードの最適化のヒント?
Pythonは他の準拠言語ほど高速でも効率的でもないことは誰もが知っていますが、ただし、Pythonコードがはるかに大きなワークロードを処理できることを示している大企業はたくさんあり、それほど遅くはないことを示しています。このセクションでは、正しいPythonプログラムをさらに高速かつ効率的に実行するために、覚えておくべきヒントをいくつか紹介します。 ヒント1:組み込み関数を使用する Pythonで効率的なコードを書くことはできますが、組み込み関数(Cで書かれている)に勝るものはありません。下の画像は、Python組み込み関数のリストを示しています ヒント2:Pythonの複数の代入を
-
Docker Desktop - コンテナ管理用の使いやすいフロントエンド
直感的なソフトウェア ソリューションが好きです。使い方がとても簡単な製品は、実際にはマニュアルを必要としません。ドキュメントを参照する必要がある場合は、探している答えが必ず見つかります。私の経験では、Docker は間違いなくこの分野に適しています。 最近、私は新しい Docker のこと、Docker Desktop に出くわしました。これは、Docker コンテナー管理用の GUI であり、Docker エンジンを使用してコマンド ラインで通常実行する操作の便利なフロントエンドとして意図されています。うーん、とても面白そうですね。では、何が得られるか見てみましょう。 インストールと