mablhq/link-agentのDockerイメージには、独自のJavaランタイムを含め、Link Agentに必要なものがすべて含まれているため、ホストに他のものをインストールする必要はありません。この記事では、使用するイメージと、DockerコンテナーでLink Agentを実行する方法について説明します。
開始する前に
DockerコンテナーでLink Agentを実行するには、"Link Agent" APIキーが必要です。ワークスペースの所有者は、mablアプリのAPIページ (Settings > APIs) でAPIキーを作成できます。会社内のすべてのワークスペースで共有するトンネルの場合は、代わりに会社キーを使用します。会社スコープのLinkトンネルを参照してください。
ステップ1: イメージの選択
イメージには2つのバリアントがあります。
| タグ | ベース | アーキテクチャ |
|---|---|---|
mablhq/link-agent:latest |
Alpine Linux | x86-64 |
mablhq/link-agent:latest-ubuntu |
Ubuntu | x86-64、arm64 |
mablでは、常にLink Agentの最新リリースを指すlatestタグをお勧めします。各リリースには3.0.1などのバージョンのタグも付けられ、各タグには3.0.1-ubuntuのように-alpine形式と-ubuntu形式があります。サフィックスのないタグはAlpineバリアントです。イメージが変わるタイミングを厳密に制御する必要がある場合にのみ、バージョンタグを固定してください。
arm64ホストではUbuntuイメージを使用する必要があります
Apple siliconのMac、AWS Graviton、その他のARM Linuxマシンなどのarm64ホストでは、mablhq/link-agent:latest-ubuntuを使用してください。デフォルトのmablhq/link-agent:latestイメージはAlpineバリアントで、x86-64向けにのみ公開されています。arm64ホストでこのイメージをプルすると、no image found in image index for architecture "arm64"のようなエラーで失敗します。代わりに--platform linux/amd64でx86-64イメージをエミュレーション実行することはしないでください。その構成はサポートされていません。
Link Agentを実行するマシンでイメージをプルします。
docker pull mablhq/link-agent:latest
ステップ2: Link Agentの実行
Link Agentを実行するには、次の引数が必要です。
-
{your-api-key}: "Link Agent" のAPIキー -
{tunnel-name}: 英小文字、数字、ダッシュから成る1~24文字のトンネル名
フォアグラウンドでLink Agentを試すには、次のコマンドを実行します。
docker run --rm mablhq/link-agent:latest --api-key {your-api-key} --name {tunnel-name}
バックグラウンドで実行し続け、Dockerデーモンとともに再起動するには、次のコマンドを実行します。
docker run -d --name mabl-link-agent --restart unless-stopped --stop-timeout 90 \
mablhq/link-agent:latest --api-key {your-api-key} --name {tunnel-name}
--stop-timeout 90により、コンテナーを停止する際に、処理中の接続が完了するまでの時間をLink Agentに与えます。Dockerのデフォルトの10秒では、トンネル経由で実行中のテストが中断されることがあります。
設定ファイルの使用
Link Agent設定ファイルを使用すると、APIキーをコマンドラインに含めずに済み、1つのコンテナーで複数のトンネルにサービスを提供できます。ファイルを格納したディレクトリをコンテナーにマウントし、エージェントにそのファイルを指定します。
docker run -d --name mabl-link-agent --restart unless-stopped --stop-timeout 90 \
-v /etc/mabl-link:/config:ro \
mablhq/link-agent:latest --config /config/config.yaml
ファイル自体ではなく、ディレクトリをマウントしてください。Link Agentは実行中にファイルを監視して編集内容を適用しますが、多くのエディターはファイルを置き換える方法で保存するため、単一ファイルのマウントではその変更が反映されません。
HTTPフォワードプロキシのサポート
ネットワークで必要な場合は、基本プロキシ認証のサポートも含め、HTTPフォワードプロキシを使用するようにLink Agentを設定できます。また、設定ファイルを通じてプロキシ自動設定 (PAC)もサポートされます。
Dockerホスト上のサービスへのアクセス
コンテナー内では、localhostはDockerホストではなくコンテナー自体を指します。ホストのlocalhostで待ち受けているサービスをテストするには、ホストネットワーク (--net=host) を使用してコンテナーを実行します。mabl Linkを使用したlocalhostのテストを参照してください。
ホストのチューニング
mablでは、Dockerホストのソケットバッファーの上限を引き上げることをお勧めします。これにより、長いネットワーク経路でのトンネルのスループットが向上します。コンテナーは自身でこの設定を変更できないため、Dockerホストで適用してください。ホストのソケットバッファーの上限を引き上げるを参照してください。
ステップ3: Link Agentの接続の確認
Link Agentを起動した後、mablアプリのワークスペース > ネットワークに移動します。Link Agentは [リンクエージェント] テーブルに表示され、1~2分以内に [接続済み] と表示されるはずです。Link Agentのセットアップを参照してください。
Link Agentの出力を確認するには、docker logs -f mabl-link-agentを実行します。
Link Agentのアップデート
他のインストールと同様に、コンテナー内のLink Agentは、コンテナーが起動するたびに新しいバージョンを確認します。この方法でインストールされたアップデートはそのコンテナー内にのみ残り、再作成したコンテナーは再びイメージから起動します。最新のイメージに移行するには、イメージをもう一度プルしてコンテナーを再作成します。
docker pull mablhq/link-agent:latest
docker stop mabl-link-agent
docker rm mabl-link-agent
docker run -d --name mabl-link-agent --restart unless-stopped --stop-timeout 90 \
mablhq/link-agent:latest --api-key {your-api-key} --name {tunnel-name}
設定ファイルのマウントなど、コンテナーの起動時と同じオプションを使用してください。
docker stopは、コンテナーの停止タイムアウトまで、処理中の接続が完了するのを待ちます。トンネルに他のエージェントがある場合は、先にこのエージェントをメンテナンスモードにして [処理完了] と表示されるまで待つこともできます。そうすれば、処理が完了するまでの間、新しいテストは他のエージェントに送られます。
次のステップ
Link Agentがインストールされて実行されたら、mabl Link経由で実行するようにテストを設定します。