はじめに
この実験では、Docker コンテキストの管理方法、特にその削除に焦点を当てて学習します。まず、新しい Docker コンテキストを作成し、コンテキストを追加するプロセスを理解します。次に、既存のコンテキストを一覧表示して利用可能な設定を確認し、現在アクティブなコンテキストを特定する方法を学びます。実験の核心部分では、docker context rmコマンドを使用して特定のコンテキストを削除します。最後に、強制オプションなしで現在アクティブなコンテキストを削除しようとした場合の挙動を確認し、強制オプションを使用して正常に削除する方法を探ります。
新しい Docker コンテキストを作成
このステップでは、新しい Docker コンテキストを作成する方法を学びます。Docker コンテキストは、異なる Docker デーモンへの接続を管理する方法です。デフォルトでは、Docker はローカルの Docker デーモンに接続するdefaultコンテキストを使用します。新しいコンテキストを作成することで、リモートの Docker デーモンや他のオーケストレーションツールに接続できます。
新しい Docker コンテキストを作成するには、docker context createコマンドを使用します。基本的な構文はdocker context create <context_name>です。my-contextという名前の新しいコンテキストを作成してみましょう。
docker context create my-context
コマンドを実行すると、コンテキストが正常に作成されたことを示す出力が表示されます。
my-context
Successfully created context "my-context"
このコマンドは、Docker の設定ディレクトリに新しいコンテキスト設定ファイルを作成します。このコンテキストは現在、defaultコンテキストと同じローカルの Docker デーモンを指しています。後のステップでは、異なる Docker 環境に接続するためのコンテキスト設定方法を探ります。
既存の Docker コンテキストを一覧表示
このステップでは、既存の Docker コンテキストを一覧表示する方法を学びます。これは利用可能なコンテキストと現在アクティブなコンテキストを確認するのに役立ちます。
Docker コンテキストを一覧表示するには、docker context lsコマンドを使用します。
docker context ls
コマンドを実行すると、利用可能なコンテキストをリストしたテーブルが表示されます。出力にはコンテキスト名、説明、エンドポイント、および現在のコンテキストかどうかが含まれます。前のステップで作成したdefaultコンテキストとmy-contextが表示されるはずです。コンテキスト名の横にある*は、それが現在アクティブなコンテキストであることを示します。
NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * Current DOCKER_HOST environment unix:///var/run/docker.sock
my-context Docker context "my-context" unix:///var/run/docker.sock
このコマンドは、接続可能な様々な Docker 環境を管理するのに役立ちます。
特定の Docker コンテキストを削除
このステップでは、特定の Docker コンテキストを削除する方法を学びます。これは不要になったコンテキストを整理するのに役立ちます。
Docker コンテキストを削除するには、docker context rmコマンドの後に削除したいコンテキスト名を指定します。前のステップで作成したmy-contextを削除してみましょう。
docker context rm my-context
コマンドを実行すると、コンテキストが削除されたことを確認する出力が表示されます。
my-context
では、コンテキストを再度一覧表示してmy-contextが削除されたことを確認しましょう。
docker context ls
出力にはdefaultコンテキストのみが表示されるはずです。
NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * Current DOCKER_HOST environment unix:///var/run/docker.sock
これで特定の Docker コンテキストを削除する方法を確認できました。
強制オプションなしで現在の Docker コンテキストを削除しようとする
このステップでは、強制オプションを使用せずに現在アクティブな Docker コンテキストを削除しようとします。これにより、使用中のコンテキストを削除しようとした際の Docker の挙動を確認します。
まず、現在のコンテキストを確認しましょう。
docker context ls
defaultコンテキストにアスタリスク (*) が付いているのが確認できるはずです。これは現在のコンテキストであることを示しています。
次に、docker context rmコマンドを使用してdefaultコンテキストを削除してみます。
docker context rm default
次のようなエラーメッセージが表示されるでしょう:
Error: context "default" is currently in use
このエラーは、現在の Docker 操作に支障をきたさないよう、Docker が現在アクティブなコンテキストの削除を防いでいるために発生します。現在のコンテキストを削除するには、強制オプションを使用する必要があります。これについては次のステップで説明します。
現在の Docker コンテキストを強制削除
このステップでは、現在アクティブな Docker コンテキストを強制的に削除する方法を学びます。前のステップで見たように、強制オプションを使用せずに現在のコンテキストを削除することはできません。
現在の Docker コンテキストを強制削除するには、docker context rmコマンドに-fまたは--forceフラグを付け、削除したいコンテキスト名を指定します。defaultコンテキストを強制削除してみましょう。
docker context rm -f default
コマンドを実行すると、コンテキストが削除されたことを確認する出力が表示されます。
default
では、コンテキストを再度一覧表示してdefaultコンテキストが削除されたことを確認しましょう。
docker context ls
コンテキストが利用できないことを示すメッセージが表示されるか、他のデフォルトコンテキストが存在する場合はそれに切り替わっているでしょう。この環境では、defaultコンテキストを削除した後でコンテキストを一覧表示しようとすると、アクティブなコンテキストが存在しないためエラーが発生します。
Error: No contexts available. Create a context, or use --help for more information.
これで現在の Docker コンテキストを強制削除する方法を確認できました。
まとめ
この実験では、Docker コンテキストの管理方法を学びました。まずdocker context createコマンドを使用してmy-contextという新しいコンテキストを作成し、異なる Docker デーモンへの接続を定義しました。次にdocker context lsコマンドで利用可能なコンテキストを一覧表示し、新しく作成したmy-contextとデフォルトコンテキストを確認し、アスタリスクでマークされた現在アクティブなコンテキストを特定しました。
実験ではさらに、docker context rmを使用して特定の Docker コンテキストを削除する方法を実演しました。また、強制オプションなしで現在アクティブなコンテキストを削除しようとした際の挙動を確認し、最終的に現在の Docker コンテキストを強制削除する方法を学びました。



