はじめに
この実験では、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
default と 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 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 デーモンに接続するためのコンテキスト管理とエクスポートについて包括的な理解を得ることができました。



