はじめに
2023年6月1日、remote.itより[Remote.It、Docker Network Jumpboxがリリースされています。
本記事では、上記プレスリリース記事を踏まえて、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 ネットワークで稼働している全てのサービスにアクセスできます。
また、リリースに伴い、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」を押します。
Dockerのアプリケーションを開くと、Docker Desktopの拡張機能として、remote.itの画面に遷移するため、「Install」を押します。
Installが始まります。
Install完了後、「Open」を押します。
Docker Desktopの拡張機能として、remote.itがインストールされたことが確認できます。
続けて「Get Registration Code」を押します。
remoteit/docker-extensionのイメージが公開されているため、Dockerコンテナとしてもインストールすることができます。
remote.itのDevices登録
Docker Desktopの拡張機能インストール完了後、remote.itのアプリケーションを確認します。
以下のような画面に遷移するのでRegistration Codeが発行されたことを確認します。確認後、Dockerのアプリケーションを開きます。
Dockerのアプリケーションに戻ります。
Registration Codeが入力されていることを確認し、「Register」を押します。
remote.itのDevices登録は完了です。
続けてJumpboxのコンテナをデプロイするため、「Copy」を押します、
接続したい環境の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のコンテナが起動していることを確認します。
動作確認
実際にDocker Jumpboxを用いて、Docker ネットワークにアクセスしてみます。
※最初の動作確認では、Docker ネットワークの接続先として、ローカル環境におけるNGINXのコンテナと、FastAPIのコンテナにアクセスしています。
ローカル環境
remote.itのアプリケーションを開き「Devices」を確認すると、Docker Jumpboxが作成されているのでDocker Jumpboxを選択します。
接続先の環境におけるDocker ネットワークで稼働してるコンテナ群が「SERVICE」として登録されていることが確認できます。
SERVICEにアクセスするためには、任意のSERVICEを選択した状態で「START」を押してコネクションを作成します。SERVICEの下の右向三角のアイコンを押しても大丈夫です。
ConnetionにLocal Peer to Peerと表示されれば、成功です。
「COPY」または、「LAUNCH」を押すと、作成したSERVICEにアクセスできます。
「LAUNCH」を押してブラウザを確認すると、FastAPIのコンテナにアクセスできました。
同じようにNGINXのSERVICEも「START」を押して、Connectionを作成します。
NGINXのコンテナもアクセスできました。
Connetionを切断する場合は、逆の動作を行います。
「DISCONNECT」などを押してコネクションを切断します。
コネクションの切断が確認できました。
Nginxコンテナは、docker run --name nginx -d -p 80:80 nginx
を実行しています。
外部のネットワーク環境
ローカル環境ではまだ実感が湧かないため、別のネットワークから、クローズドな別のDocker ネットワークにアクセスできるか検証します。
※以下の例では、スマートフォンの回線でテザリングを行い、Docker ネットワークの接続先として、自宅のRaspberry Pi上で稼働するNGINXのコンテナにアクセスしています。
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を選択します。
同じようにNGINXのSERVICEの「START」を押して、Connectionを作成します。
作成したSERVICEのURLを開くと、NGINXのコンテナにアクセスできました。
これで、外から自宅のRaspberry Piで稼働している、コンテナにアクセスができるということが改めて確認できました。
おわりに
今は生成系AIがトレンドですが、このようなインフラに関わる新しいテクノロジーも面白いですね。
技術は日進月歩とよく言われますが、仏教で言う諸行無常の世界に近いと思います。
こうして新しい技術もどんどん生まれてくるので積極的に試していきましょう。