LoginSignup
1
3

Docker ContextとSSHでリモートのDockerを操作する

Posted at

Docker ContextとSSHを組み合わせると、ローカルのDockerを操作する感覚で、リモートのDockerを操作できて非常に便利です。本記事では、Docker Contextのセットアップ方法とその使い方について簡単に説明します。

前提条件

  • ローカルマシンにDockerがインストールされていること
  • リモートサーバーにDockerがインストールされていること
  • SSHでリモートサーバーにアクセスできること
  • (オプション)jqコマンドがインストールされていること(JSON形式の出力を扱う場合に便利)

セットアップ手順

1. SSH設定

まず、~/.ssh/configファイルを編集し、リモートサーバーへの接続設定を追加します:

Host my-docker-host
    HostName example.com
    User username
    IdentityFile ~/.ssh/id_ed25519
    Port 22

この設定により、my-docker-hostという名前でリモートサーバーに簡単にアクセスできるようになります。

2. Docker Context作成

次に、新しいDocker Contextを作成します:

docker context create my-remote-context --docker "host=ssh://my-docker-host"

作成したコンテキストは次のコマンドで一覧表示できます:

docker context ls

3. Context切り替え

作成したContextに切り替えます:

docker context use my-remote-context

コンテキストが切り替わったら、あとはローカルのDockerを操作するのと同じ方法でリモートのDockerを扱えます:

docker images
docker ps
# その他のdockerコマンド

デフォルトのコンテキストに戻る

ローカルのDockerに戻りたい場合は、以下のコマンドを使用します:

docker context use default

コンテキストの設定ファイルについて

Docker Contextの設定ファイルは以下の場所に保存されます:

~/.docker/contexts/meta/{ハッシュ値}/meta.json

具体的な場所は以下のコマンドで確認できます:

docker context inspect my-remote-context | jq -r '.[0].Storage.MetadataPath'

この出力は以下のような形式になります:

/home/username/.docker/contexts/meta/00e13ed7af55b27622f1d6eab5bec0147e68efe28dc2b12461117afa1a5ed40e

設定ファイルの内容を確認するには:

cat $(docker context inspect my-remote-context | jq -r '.[0].Storage.MetadataPath')/meta.json

注意: これらのコマンドを使用するにはjqがインストールされている必要があります。

まとめ

Docker ContextとSSHを組み合わせることで、リモートのDockerホストをローカルと同じように操作できるようになります。これにより、複数のDockerホストを管理する際の効率が大幅に向上します。

この方法を使えば、開発環境と本番環境の切り替えや、複数のサーバーでのDockerコンテナ管理が非常に簡単になります。ぜひ、みなさんの開発フローに取り入れてみてください。

参考リンク

以上です。質問やコメントがありましたら、ぜひ下のコメント欄でお知らせください。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3