docker context export コマンドでコンテキストをエクスポートする方法

DockerBeginner
オンラインで実践に進む

はじめに

この実験では、docker context export コマンドを使用して Docker コンテキストをエクスポートする方法を学びます。まず、新しい Docker コンテキストを作成します。これにより、Docker CLI を異なる Docker デーモンに接続できるようになります。

新しいコンテキストの作成後、このコンテキストをエクスポートする実践を行います。後で使用したり共有したりするためにコンテキストをファイルにエクスポートする方法と、コンテキストを直接標準出力 (STDOUT) にエクスポートする方法を学びます。このハンズオン体験を通じて、Docker 環境を管理および共有するための docker context export コマンドの実用的な応用を実証します。

新しい Docker コンテキストを作成

このステップでは、新しい Docker コンテキストを作成する方法を学びます。Docker コンテキストは、Docker CLI を異なる Docker デーモンに接続する方法です。リモートマシンや別の環境で Docker を管理したい場合に便利です。

デフォルトでは、Docker CLI はローカルの Docker デーモンに接続されています。現在のコンテキストは docker context ls コマンドで確認できます。

docker context ls

以下のような出力が表示され、デフォルトのコンテキストがアクティブであることがわかります:

NAME                DESCRIPTION                               DOCKER ENDPOINT                  KUBERNETES ENDPOINT   ORCHESTRATOR
default *           Current DOCKER_HOST environment variable   unix:///var/run/docker.sock

では、新しいコンテキストを作成しましょう。my-context という名前のコンテキストを作成します。この例ではローカルの Docker デーモンを指すようにしますが、実際のシナリオではリモートのデーモンを指定することになります。

docker context create コマンドの後にコンテキスト名とエンドポイントを指定します。

docker context create my-context --docker "host=unix:///var/run/docker.sock"

コンテキスト作成後、以下のような確認メッセージが表示されます:

my-context
Successfully created context "my-context"

再度コンテキストをリスト表示して、新しく作成されたコンテキストを確認しましょう。

docker context ls

defaultmy-context の両方が表示されるはずです。

NAME                DESCRIPTION                               DOCKER ENDPOINT                  KUBERNETES ENDPOINT   ORCHESTRATOR
default *           Current DOCKER_HOST environment variable   unix:///var/run/docker.sock
my-context                                                    unix:///var/run/docker.sock

新しいコンテキストに切り替えるには、docker context use コマンドの後にコンテキスト名を指定します。

docker context use my-context

コンテキストが切り替わったことを示すメッセージが表示されます:

my-context
Current context is now "my-context"

最後に、my-context がアスタリスク * で示されるアクティブなコンテキストになったことを確認するため、もう一度コンテキストをリスト表示します。

docker context ls

出力には my-context がアクティブなコンテキストとして表示されます:

NAME                DESCRIPTION                               DOCKER ENDPOINT                  KUBERNETES ENDPOINT   ORCHESTRATOR
default             Current DOCKER_HOST environment variable   unix:///var/run/docker.sock
my-context *                                                  unix:///var/run/docker.sock

Docker コンテキストをファイルにエクスポート

このステップでは、Docker コンテキストをファイルにエクスポートする方法を学びます。コンテキストをエクスポートすることで、その設定をファイルに保存し、他のマシンで共有したりインポートしたりできるようになります。これはリモートの Docker 環境へのアクセスを共有する際に特に便利です。

前のステップで作成した my-context をエクスポートします。docker context export コマンドの後にコンテキスト名と出力先ファイルパスを指定します。ここでは ~/project ディレクトリに my-context.dockercontext という名前でエクスポートします。

docker context export my-context > ~/project/my-context.dockercontext

このコマンドは my-context の設定を指定したファイルにエクスポートします。コマンドが成功すると、コンソールには何も出力されません。

ファイルが作成されたことを確認するために、ls コマンドで ~/project ディレクトリのファイルを一覧表示します。

ls ~/project/

my-context.dockercontext がファイル一覧に表示されるはずです。

また、cat コマンドでエクスポートされたコンテキストファイルの内容を確認できます。

cat ~/project/my-context.dockercontext

出力には my-context の設定が JSON 形式で表示されます。コンテキスト名や Docker エンドポイントなどの情報が含まれています。

{
  "Name": "my-context",
  "Metadata": null,
  "Endpoints": {
    "docker": {
      "Host": "unix:///var/run/docker.sock",
      "SkipTLSVerify": false
    }
  },
  "TLSMaterial": null
}

このエクスポートされたファイルは、docker context import コマンドを使って他のマシンでこのコンテキストをインポートする際に使用できます。

Docker コンテキストを STDOUT にエクスポート

このステップでは、Docker コンテキストを直接標準出力 (STDOUT) にエクスポートする方法を学びます。これはコンテキスト設定を素早く確認したい場合や、ファイルに保存せずに他のコマンドにパイプしたい場合に便利です。

先ほど作成した my-context を再度使用し、docker context export コマンドを実行します。今回は出力をファイルにリダイレクトしません。

docker context export my-context

このコマンドを実行すると、my-context の設定が JSON 形式でターミナルに直接表示されます。

{
  "Name": "my-context",
  "Metadata": null,
  "Endpoints": {
    "docker": {
      "Host": "unix:///var/run/docker.sock",
      "SkipTLSVerify": false
    }
  },
  "TLSMaterial": null
}

この出力は前のステップで my-context.dockercontext ファイルに保存した内容と同じです。STDOUT へのエクスポートは、コンテキスト設定をその場で確認する便利な方法です。

この出力を他のコマンドにパイプしてさらに処理することもできます。例えば、JSON を解析する jq や特定の情報を検索する grep にパイプできます。

例えば、エクスポートしたコンテキストから Docker エンドポイントを検索するには:

docker context export my-context | grep "unix:///var/run/docker.sock"

このコマンドはコンテキストを STDOUT にエクスポートし、grep で "unix:///var/run/docker.sock" を含む行を検索します。出力は以下のようになります:

      "Host": "unix:///var/run/docker.sock",

このように、中間ファイルを作成せずにコマンドラインから直接コンテキスト設定を操作できることがわかります。

まとめ

この実験では、Docker コンテキストの作成と管理方法を学びました。まず docker context ls を使用して既存のコンテキストを一覧表示し、Docker コンテキストの基本を理解しました。次に docker context create コマンドで my-context という新しいコンテキストを作成し、Docker エンドポイントの指定方法を確認しました。最後に docker context use を使ってコンテキストを切り替える練習を行いました。

コンテキストの作成と切り替えに続いて、docker context export コマンドについて学びました。特定の Docker コンテキストをファイルにエクスポートする方法を理解し、コンテキスト設定の共有やバックアップが容易に行えるようになりました。さらに、コンテキスト設定を直接標準出力にエクスポートする方法も確認し、スクリプト処理や即時利用のための柔軟性を得ました。これらのステップを通じて、異なる Docker デーモンに接続するためのコンテキスト管理とエクスポートについて包括的な理解を得ることができました。