GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerコンテキストで複数のホストを操作する方法

Docker CLIのコンテキストは、複数のDockerエンドポイントと対話するための合理化されたメカニズムを提供します。各ホストのコンテキストを設定し、その場でそれらを切り替えることができます。

コンテキストがアクティブな場合、Dockerはすべてのコマンドをそのホストに転送します。主にローカルのDockerインストールを使用しているが、本番環境でコンテナーを開始する必要がある場合は、Dockerコンテキストを使用できるオプションの1つです。

有効なDockerエンドポイントはすべてコンテキストに変換できます。通常のDockerEngineインストール、Docker Swarmクラスター、Kubernetesクラスターをクラウドに接続できます。保存されている各コンテキストには、参照されているホストのすべての接続情報が含まれています。

コンテキストの作成

コンテキストはdocker contextで管理されます 指図。 docker context createを使用して新しいコンテキストを作成します 。コンテキストの名前とそのエンドポイント構成を指定する必要があります。

リモートホスト上のTCPを介して公開されたDockerソケットに接続するコンテキストを作成する方法は次のとおりです。

docker context create remote-host --docker host=tcp:///my-remote-host:2735

コンテキストは、デフォルトのコンテナーオーケストレーターとしてDockerSwarmを使用します。フラグを使用してこれを明示的に設定できます:

docker context create remote-host 
    --default-stack-orchestrator=swarm 
    --docker host=tcp:///my-remote-host:2735

Kubernetesへの接続を作成するには、オーケストレーターのタイプを変更します。 --kubernetesも追加する必要があります フラグを立てて、Kubernetes構成ファイルへのパスを指定します:

docker context create kubernetes-host 
    --default-stack-orchestrator=kubernetes 
    --kubernetes config-file=/home/username/.kube/config 
    --docker host=unix:///var/run/docker.sock
コンテキストの選択

アクティブなコンテキストは、docker context useを使用して切り替えられます 。アクティブにするコンテキストの名前を渡します。

docker context use remote-host

以降のすべてのCLIコマンドは、新しいコンテキストで指定されたエンドポイントを使用して実行されます。アクティブなコンテキストは、変更するまで自動的に保持されます。別のコンテキストに切り替えるには、docker context useを実行します また。 defaultを渡すことで、ローカルDockerソケットを使用してデフォルトのコンテキストに戻すことができます。 コンテキスト名として。

--contextを追加することで、選択したコンテキストをいつでもオーバーライドできます Dockerコマンドへのフラグ:

docker run ubuntu:latest --context remote-host

DOCKER_CONTEXT 環境変数は、--contextの代替としても機能します 国旗。どちらのメカニズムでも、docker context useを実行して元に戻すことなく、別のコンテキストへの一時的な切り替えが容易になります。 コマンド。

DOCKER_HOSTを使用する 環境変数もアクティブなコンテキストを上書きします。この変数は、Dockerにコンテキストによって提供されるものではなく特定のデーモンエンドポイントを使用するように強制します。

docker context lsを実行すると、アクティブなコンテキストを検査できます。 。このコマンドは、CLI構成で使用可能なすべてのコンテキストを一覧表示します。アクティブなコンテキストはアスタリスクで強調表示されます。コンテキストを削除するには、docker context rmを実行します 、コンテキスト名を指定します。 defaultを削除することはできません コンテキスト。

マシン間のコンテキストの同期

コンテキストファイルは、DockerCLIの構成ディレクトリに保存されます。これは通常、$HOME/.dockerです。 Linuxの場合。コンテキストはcontextsにあります サブディレクトリ。各コンテキストは、一意のハッシュで名前が付けられた独自のフォルダーを取得します。中には、meta.jsonがあります。 コンテキストを説明するファイル。作成されたコンテキストのみがファイルをディスクに保存します。 default コンテキストは、Dockerデーモン構成から設定を継承します。

コンテキスト構成を同期する場合は、contextsをバックアップできます 別のマシンに移動するためのフォルダ。 Rsync転送またはGitリポジトリを使用して、定期的な更新を簡素化できます。要件によっては、フォルダをネットワーク共有にシンボリックリンクすることもオプションになる場合があります。

Dockerを使用すると、CLIを介してコンテキストをエクスポートおよびインポートすることもできます:

docker context export my-context

これにより、my-context.dockercontextが作成されます 作業ディレクトリ内のファイル。このファイルには、meta.jsonが含まれています コンテンツと、コンテキスト名などの追加情報。このファイルを別のマシンに転送し、docker context import my-context.dockercontextを実行します コンテキスト構成をロードします。

または、Kubernetesコンテキスト用のスタンドアロンKubernetes構成ファイルをエクスポートすることもできます:

docker context export kubernetes-context --kubeconfig

これにより、kubectlなどのKubernetesエコシステムツールと互換性のある通常の「kubeconfig」ファイルが生成されます。 。 Dockerコンテキストからkubeconfigファイルを取得する機能により、ツールチェーンの相互運用性が向上します。ファイル内には、DockerCLIに固有のものはありません。

コンテキストを編集する必要がある場合は、docker context updateを使用してください 指図。これは、docker context createと同じフラグを受け入れます 。一括更新を行う場合は、meta.jsonを編集できます コンテキストを直接操作するファイル。コンテキストのmeta.jsonを検査できます docker context inspect my-contextを使用したCLIからのファイル 。

結論

Dockerコンテキストは、複数の独立した環境にコンテナーをデプロイする必要がある場合に役立ちます。ローカルのDockerソケット、共有チームのステージングサーバー、本番のKubernetesサーバーのコンテキストを設定できます。

Dockerには、MicrosoftAzureおよびAmazonECSコンテナークラウドのサポートが組み込まれており、コンテキストとして追加することもできます。作成できるコンテキストの数に制限はないため、ホスト間を移動する際に優れた汎用性があります。

おそらく、コンテキストに関する最大の機能上の問題は、間違ったコンテキストに対して誤ってコマンドを実行する可能性です。 productionにいることを忘れた場合 コンテキスト、docker rm database-containerを実行 壊滅的な結果をもたらす可能性があります。疑わしい場合は、docker context lsを実行してください 最初に選択したものを確認します。


Docker
  1. Dockerを使用してWordPressをインストールする方法、わかりやすいガイド

  2. ホスト間でDockerイメージを移動する方法

  3. Dockerを使用してマイクロサービスをデプロイする方法

  1. ランチャーでアプリをデプロイする方法

  2. LinodeにDockerを使用してnginxコンテナをデプロイする方法

  3. Dockerイメージを他の人と共有する方法

  1. phpMyAdminで複数のホストを追加する方法

  2. Dockerを使用してJenkinsをインストールする方法

  3. Linux で複数の Java バージョンを操作する方法