3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

新規開発や新技術の検証、導入にまつわる記事を投稿しよう!

Docker Network Jumpbox コンテナへのゼロトラスト・ネットワーク・アクセスを自動化する

Posted at

はじめに

2023年6月1日、remote.itより[Remote.It、Docker Network Jumpboxがリリースされています。:tada:

本記事では、上記プレスリリース記事を踏まえて、Docker Network Jumpbox(以下、Docker Jumpbox)の使用方法について記載しています。

Docker Jumpboxを使用するためには、remote.itの環境が必要です。
remote.itを知らない場合は、以前書いた「remote.itを使ってベアメタルに接続する」をご参照ください。

Docker Jumpbox

プレスリリース記事の内容を踏まえて、以下の機能が利用できます。

  • 既存のDocker環境内にRemote.It Jumpboxコンテナを展開することができる。
  • Remote.Itアカウントへのコンテナサービスの動的なプロビジョニングとデプロビジョニング(すべてのDockerネットワークにまたがる)
  • 自社環境で稼働するDockerコンテナへのサービスを自動的に作成する
  • Remote.It組織機能(タグ、ネットワーク、ロール)でDockerサービスを共有する。
  • Dockerネットワークにポートを公開することなく、ローカルのDockerサービスをホストデバイスと共有することができます。

remote.itを知らない方の場合、わかりにくいので絵にしてみました。
Docker Jumpboxを利用することで、インターネットを介した接続先の環境におけるDocker ネットワークで稼働している全てのサービスにアクセスできます。

Docker Network Jumpbox-ページ1.png

また、リリースに伴い、Webinarも行われました。YouTubeから参照できます。
Webinarでは、Docker JumpboxのDemoと、AWSのECSのクラスターを用いたDemoが紹介されています。

Docker Jumpboxを利用することで、クローズドな環境で実行しているDockerコンテナに対して、グローバルIPアドレスや、VPN等を使用せずにリモートアクセスを行うことができます。

準備作業

Docker Jumpboxを利用するためには、事前に以下の準備が必要です。

  • Docker Desktop 4.10以降のインストール
  • Remote.Itのアカウント登録

古いDocker Desktopを使用している場合は、アップグレードを行いましょう。

セットアップ

実際に触ってみることで、このテクノロジーの凄さが分かると思います。

では、試していきましょう。

本記事の環境として接続元となるPCは、macOSを使用しています。
Docker Desktopと、remote.itのアプリケーションは事前に起動している状態とし、以下にセットアップ手順を記載します。

Dockerと、remote.itのアプリケーションを両方使用しながらの作業になります。

Docker Desktopの拡張機能インストール

Docker Jumpboxを利用するために、Docker Desktopの拡張機能をインストールします。

ブラウザを起動後、docker hubからRemote.ItのURLを開き「Open in Docker Desktop」を押します。

スクリーンショット 2023-06-21 19.51.20.png

Dockerのアプリケーションを開くと、Docker Desktopの拡張機能として、remote.itの画面に遷移するため、「Install」を押します。

スクリーンショット 2023-06-19 19.21.01.png

Installが始まります。

スクリーンショット 2023-06-19 19.22.07.png

Install完了後、「Open」を押します。

スクリーンショット 2023-06-19 19.23.24.png

Docker Desktopの拡張機能として、remote.itがインストールされたことが確認できます。
続けて「Get Registration Code」を押します。

スクリーンショット 2023-06-19 19.23.35.png

remoteit/docker-extensionのイメージが公開されているため、Dockerコンテナとしてもインストールすることができます。

remote.itのDevices登録

Docker Desktopの拡張機能インストール完了後、remote.itのアプリケーションを確認します。
以下のような画面に遷移するのでRegistration Codeが発行されたことを確認します。確認後、Dockerのアプリケーションを開きます。

スクリーンショット 2023-06-19 20.17.03.png

Dockerのアプリケーションに戻ります。
Registration Codeが入力されていることを確認し、「Register」を押します。

スクリーンショット 2023-06-19 20.17.20.png

remote.itのDevices登録は完了です。
続けてJumpboxのコンテナをデプロイするため、「Copy」を押します、

スクリーンショット 2023-06-19 20.18.48.png

接続したい環境のDocker ネットワークが稼働するホスト上で、コピーしたコマンドを実行します。

$ docker run -d -e R3_REGISTRATION_CODE="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -v /var/run/docker.sock:/var/run/docker.sock --restart unless-stopped --name remoteit_docker_jumpbox remoteit/docker-extension:latest

Docker Desktopまたは、CLIのdocker psコマンドなどを実行して、Jumpboxのコンテナが起動していることを確認します。

スクリーンショット 2023-06-21 20.03.37.png

動作確認

実際にDocker Jumpboxを用いて、Docker ネットワークにアクセスしてみます。

※最初の動作確認では、Docker ネットワークの接続先として、ローカル環境におけるNGINXのコンテナと、FastAPIのコンテナにアクセスしています。

ローカル環境

remote.itのアプリケーションを開き「Devices」を確認すると、Docker Jumpboxが作成されているのでDocker Jumpboxを選択します。

スクリーンショット 2023-06-20 22.32.04.png

接続先の環境におけるDocker ネットワークで稼働してるコンテナ群が「SERVICE」として登録されていることが確認できます。

SERVICEにアクセスするためには、任意のSERVICEを選択した状態で「START」を押してコネクションを作成します。SERVICEの下の右向三角のアイコンを押しても大丈夫です。

スクリーンショット 2023-06-21 20.18.50.png

ConnetionにLocal Peer to Peerと表示されれば、成功です。

スクリーンショット 2023-06-21 20.49.38.png

「COPY」または、「LAUNCH」を押すと、作成したSERVICEにアクセスできます。

スクリーンショット 2023-06-21 21.06.41.png

「LAUNCH」を押してブラウザを確認すると、FastAPIのコンテナにアクセスできました。

スクリーンショット 2023-06-21 20.55.36.png

同じようにNGINXのSERVICEも「START」を押して、Connectionを作成します。

スクリーンショット 2023-06-21 20.49.48.png

NGINXのコンテナもアクセスできました。

スクリーンショット 2023-06-21 20.55.55.png

Connetionを切断する場合は、逆の動作を行います。
「DISCONNECT」などを押してコネクションを切断します。

スクリーンショット 2023-06-21 21.18.43.png

コネクションの切断が確認できました。

スクリーンショット 2023-06-21 21.19.00.png

Nginxコンテナは、docker run --name nginx -d -p 80:80 nginxを実行しています。

外部のネットワーク環境

ローカル環境ではまだ実感が湧かないため、別のネットワークから、クローズドな別のDocker ネットワークにアクセスできるか検証します。

※以下の例では、スマートフォンの回線でテザリングを行い、Docker ネットワークの接続先として、自宅のRaspberry Pi上で稼働するNGINXのコンテナにアクセスしています。

Docker Network Jumpbox-ページ2.png

Raspberry PiでJumpboxのコンテナをデプロイするため、同じコマンドを実行します。

$ docker run -d -e R3_REGISTRATION_CODE="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -v /var/run/docker.sock:/var/run/docker.sock --restart unless-stopped --name remoteit_docker_jumpbox remoteit/docker-extension:latest

新しいDocker Jumpboxが作成されているため、新規に作成されたDocker Jumpboxを選択します。

スクリーンショット 2023-06-22 21.01.16.png

同じようにNGINXのSERVICEの「START」を押して、Connectionを作成します。

スクリーンショット 2023-06-22 21.28.28.png

作成したSERVICEのURLを開くと、NGINXのコンテナにアクセスできました。

スクリーンショット 2023-06-22 21.31.48.png

これで、外から自宅のRaspberry Piで稼働している、コンテナにアクセスができるということが改めて確認できました。

おわりに

今は生成系AIがトレンドですが、このようなインフラに関わる新しいテクノロジーも面白いですね。

技術は日進月歩とよく言われますが、仏教で言う諸行無常の世界に近いと思います。

こうして新しい技術もどんどん生まれてくるので積極的に試していきましょう。

3
2
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
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?