はじめに
この実験では、docker context createコマンドを使用して異なる Docker エンドポイントを効果的に管理する方法を学びます。ローカルの Docker デーモンを指す新しいコンテキストを作成し、接続を明示的に定義して切り替える方法を探求します。
さらに、既存のコンテキスト設定を活用してコンテキスト作成を効率化する方法を発見します。これには、既存のコンテキストからコピーして新しいコンテキストを作成したり、別のコンテキストの Docker エンドポイント設定を利用するコンテキストを作成したりすることが含まれます。これにより、Docker 環境の管理において柔軟性と効率性が提供されます。
ローカル Docker エンドポイントでコンテキストを作成
このステップでは、ローカルの Docker デーモンを指す Docker コンテキストを作成する方法を学びます。Docker コンテキストは、異なる Docker デーモン(ローカルまたはリモート)への接続を管理する方法です。デフォルトでは、Docker はローカルデーモンを指すdefaultコンテキストを使用しますが、新しいコンテキストを作成して接続を明示的に定義できます。
まず、既存のコンテキストを確認しましょう。
docker context ls
defaultコンテキストが表示されるはずです。
次に、ローカル Docker エンドポイントを指すmy-local-contextという新しいコンテキストを作成します。docker context createコマンドに--dockerフラグを使用して Docker エンドポイントを指定します。ローカルデーモンに接続するため、デフォルトのソケットパスを使用できます。
docker context create my-local-context --docker "host=unix:///var/run/docker.sock"
コンテキストを作成した後、再度コンテキストをリスト表示して新しく作成されたものを確認できます。
docker context ls
これでdefaultとmy-local-contextの両方が表示されるはずです。アスタリスク(*)は現在アクティブなコンテキストを示し、まだdefaultのままである必要があります。
新しいコンテキストを使用するには、docker context useコマンドで切り替える必要があります。
docker context use my-local-context
再度コンテキストをリスト表示すると、my-local-contextがアクティブになっているはずです。
docker context ls
my-local-contextを使用していることを確認するために、イメージをリスト表示するなどの簡単な Docker コマンドを実行できます。
docker images
このコマンドは、my-local-contextで指定された Docker デーモンに対して実行されます。
最後に、必要に応じてデフォルトのコンテキストに戻すことができます。
docker context use default
既存コンテキストから新規コンテキストを作成
このステップでは、既存のコンテキスト設定をコピーして新しい Docker コンテキストを作成する方法を学びます。これは、すべての詳細を再度指定することなく、既存のコンテキストを少し変更したバージョンを作成したい場合に便利です。
まず、前のステップで作成したmy-local-contextが存在することを確認しましょう。コンテキストをリスト表示して確認できます。
docker context ls
次に、my-local-contextをベースにmy-copied-contextという新しいコンテキストを作成します。docker context createコマンドを使用し、--fromフラグの後に既存コンテキスト名を指定します。
docker context create my-copied-context --from my-local-context
新しいコンテキストを作成した後、再度コンテキストをリスト表示してmy-copied-contextが表示されることを確認します。
docker context ls
これでdefault、my-local-context、my-copied-contextの 3 つが表示されるはずです。my-copied-contextはmy-local-contextと同じ Docker エンドポイント設定を持っています。
新しいコンテキストに切り替えて設定を確認できます。
docker context use my-copied-context
再度コンテキストをリスト表示し、my-copied-contextがアクティブになっていることを確認します。
docker context ls
また、docker context inspectコマンドを使用して新しいコンテキストの設定を検査できます。
docker context inspect my-copied-context
これにより、使用する Docker エンドポイントを含むコンテキストの詳細が表示されます。my-local-contextと同様にローカルの Docker ソケットを使用するように設定されていることが確認できます。
最後に、次のステップのためにデフォルトコンテキストに戻します。
docker context use default
別のコンテキストの Docker エンドポイント設定を使用してコンテキストを作成
このステップでは、新しい Docker コンテキストを作成し、他のコンテキストの情報を参照しながら Docker エンドポイント設定を明示的に指定する方法を学びます。前のステップではコンテキスト全体をコピーする方法を示しましたが、この方法では新しいコンテキストの設定をより細かく制御できます。
まず、既存のコンテキストをリスト表示して確認しましょう。
docker context ls
default、my-local-context、my-copied-contextが表示されるはずです。
次に、my-explicit-contextという新しいコンテキストを作成します。ステップ 1 と同様に--dockerフラグを使用して Docker エンドポイントを明示的に定義します。この場合、標準的なローカルソケットを使用しますが、my-local-contextなどの既存コンテキスト設定を参照して正しいエンドポイント詳細を取得することも可能です。
docker context create my-explicit-context --description "Context with explicit local endpoint" --docker "host=unix:///var/run/docker.sock"
また、--descriptionフラグを使用してコンテキストの目的を明確にする説明を追加しました。
再度コンテキストをリスト表示して、新しく作成されたmy-explicit-contextを確認します。
docker context ls
これでdefault、my-local-context、my-copied-context、my-explicit-contextの 4 つが表示されるはずです。
新しいコンテキストに切り替えてアクティブにします。
docker context use my-explicit-context
もう一度コンテキストをリスト表示し、my-explicit-contextがアクティブになっていることを確認します。
docker context ls
my-explicit-contextの設定を検査して、追加した説明を含む詳細を確認することもできます。
docker context inspect my-explicit-context
この方法では、Docker エンドポイント設定を明示的に指定してコンテキストを作成できます。リモートの Docker デーモンに接続する場合や、接続詳細を正確に制御する必要がある場合に特に有用です。
まとめ
この実験では、docker context createコマンドを使用して Docker エンドポイントを管理する方法を学びました。まず、--dockerフラグとソケットパスを使用してローカルの Docker デーモンを明示的に指すmy-local-contextという新しいコンテキストを作成しました。既存のコンテキストをリスト表示する方法、docker context useでコンテキストを切り替える方法、そしてアクティブなコンテキストを確認する方法を実践しました。また、docker imagesのような Docker コマンドが現在アクティブなコンテキストに対して実行されることも確認しました。
さらに、既存のコンテキスト設定を活用して新しいコンテキストを作成する方法も学びました。これは既存の接続設定を基盤として構築する便利な方法であり、Docker エンドポイント設定の効率的な管理と再利用を可能にします。



