背景:
Docker は、com.github.docker-java ライブラリを使用して Java で簡単に操作できます。以下は、イメージの作成、コンテナーの作成、コンテナーの開始、コンテナーの停止、コンテナーの削除の手順と各手順の手順を含む詳細なチュートリアルです。
前提:
まず、com.github.docker-java ライブラリの依存関係を Java プロジェクトに追加します。ビルド ツール (Maven や Gradle など) の構成ファイルに次の依存関係を追加できます。
|
Dockerクライアントの作成
|
withDockerHost()
Docker デーモンの接続アドレスはメソッドによって設定され、 withDockerCertPath()
TLS 証明書のパスはメソッドによって設定され、withApiVersion()
Docker API のバージョンはメソッドによって設定されます。最後に、build()
メソッドを呼び出してオブジェクトが構築されますDockerClient
。
-
DockerClientBuilder
クラスは、オブジェクトの構築と構成に使用されるDockerClient
ビルダー クラスです。これは、Docker デーモンとの通信に必要なパラメーターと構成を設定するための一連のメソッドを提供します。 -
getInstance()
DockerClientBuilder
クラスの静的メソッドです。DockerClientBuilder
このメソッドを呼び出すことでシングルトンインスタンスを取得できます。 -
DockerClientBuilder
シングルトン モードを使用する設計は、主に、グローバル共有インスタンスに Docker デーモンへのアクセスを提供することです。DockerClientBuilder
これにより、インスタンスの作成と破棄を繰り返すことがなくなり、パフォーマンスと効率が向上します。 -
DockerClientBuilder.getInstance()
メソッドで取得したインスタンスを使用した後DockerClientBuilder
、インスタンスを通じてチェーン呼び出しを行い、Docker デーモンの通信に関連するさまざまなパラメーターと構成を設定できます。 -
チェーンコール
DockerClientBuilder
方式では、Dockerデーモンの接続アドレス、認証情報、タイムアウト、TLS設定などを設定できます。これらの方法にはwithDockerHost()
、、、、などが含まれますwithDockerCertPath()
。withDockerConfig()
withApiVersion()
-
最後に、メソッドを呼び出すことによって、 Docker デーモンと対話するための
build()
オブジェクトを構築できます。DockerClient
このオブジェクトは、コンテナーの作成、コンテナーの開始、イメージの構築など、さまざまな Docker 操作を実行できます。
イメージの作成
|
withDockerfile(new File(dockerfilePath))
: イメージをビルドするための Dockerfile のパスを指定します。withTags(Collections.singleton(imageName + ":" + imageTag))
:画像のラベルを指定します。このメソッドを通じて、withTags
ミラー タグを含むコレクションを渡すことができます。ここでは、Collections.singleton()
このメソッドは、要素を 1 つだけ含むコレクションを作成するために使用されます。
withBaseDirectory(baseDirectory)
: イメージの構築に必要なすべてのファイルが含まれるベース ディレクトリを設定します。withDockerfile()
ベース ディレクトリ内の Dockerfileと一緒に使用すると、ビルド コマンドに自動的に関連付けられます。withNoCache()
: イメージをビルドするたびにキャッシュを無効にしてすべてのコマンドを再実行し、最新のファイルと依存関係が使用されるようにします。withPull(pull)
: ビルド前に最新のベース イメージをプルするかどうかを指定します。デフォルトではfalse
プルしません。withQuiet()
:サイレントモードに設定し、イメージビルド時のログ情報を出力しません。withBuildArg(buildArg)
Map<String, String>
:タイプパラメータを使用してビルドパラメータを設定します。キーと値のペアは、ビルド パラメーターの名前と値を表します。withLabels(labels)
:Map<String, String>
タイプパラメータを使用して画像のラベルを設定します。キーと値のペアは、タグのキーと値を表します。withBuildArgs(buildArgs)
Map<String, String>
:タイプパラメータを使用してビルドパラメータを設定します。に似ていますwithBuildArg()
が、複数のビルド パラメータを一度に設定できます。withPull()
:ビルド前に最新のベースイメージを取得するかどうかを設定します。withProgressHandler(progressHandler)
: イメージの構築の進行状況を処理するように設定しますProgressHandler
。
コンテナの作成
|
上記のコードでは、 はimageName
使用するイメージの名前とcontainerName
作成するコンテナの名前を表します。hostPort
とcontainerPort
はそれぞれ、ポート マッピングに使用されるホスト ポートとコンテナ ポートを表します。ボリュームのマウントに使用されるホスト パスとコンテナ パスを表しますvolumeHostPath
。volumeContainerPath
このうち、CreateContainerResponse
オブジェクトには、コンテナの ID や名前など、新しく作成されたコンテナに関する情報が含まれます。コンテナの起動や停止などの後続の操作に使用します。
withName(containerName)
: コンテナの名前を指定します。withPortBindings(portBindings)
:コンテナのポートバインディングを指定します。ホスト ポートをコンテナ内のポートにマッピングするために使用されるオブジェクトportBindings
です。PortBinding
withBinds(bindings)
: コンテナのボリュームバインディングを指定します。ホストのディレクトリまたはボリュームをコンテナ内のパスにマウントするために使用されるオブジェクトbindings
です。Bind
コンテナの起動
1 |
|
コンテナの停止と削除
|
上記のコードでは、container.getId()
取得されるのはコンテナのIDです。
最後に、私の記事を注意深く読んでくださった皆さんに感謝します。互恵性は常に必要です。それほど価値のあるものではありませんが、使用できる場合は、直接受け取ることができます。
この情報は、[ソフトウェア テスト] の友人にとって最も包括的かつ完全な準備倉庫となるはずです。この倉庫は、最も困難な旅を乗り越える何万人ものテスト エンジニアにも同行してきました。また、皆さんのお役に立てれば幸いです。