コンテナ内から Rancher Desktop のホストに接続する方法

| 2 min read
Author: shigeki-shoji shigeki-shojiの画像

庄司です。

Rancher Desktop で実行しているコンテナ内からホストにアクセスしたくなる場合があります。

コンテナはそれぞれ固有のIPアドレスを持っています。コンテナをグルーピングして特定のコンテナ間でセキュアな通信もできます。これを応用してサイドカーパターンなどが実現できますが、逆にいうと、コンテナからホストにアクセスしたいと考えて localhost を指定してもそれは単にコンテナ自身をしているということになります。

Docker Desktop では、host.docker.internal を指定することでホストにアクセスできます。

結論から書くと、Rancher Desktop Version 1.3.0 でも host.docker.internal を使用できます。そして、さらにいくつかのホスト名が追加されています。

Windows の場合。

  • host.rancher-desktop.internal

macOS の場合。

  • host.rancher-desktop.internal
  • host.lima.internal

macOS で lima を使用している場合は、host.lima.internal だけが有効で Rancher Desktop は Linux VM に lima を使用していますが、これに加えて host.docker.internalhost.rancher-desktop.internal を加えたようです。

Windows

#

Windows 10 以降では OpenSSH サーバーをオプション機能で有効にできます。

コンテナから、この OpenSSH サーバーにアクセスしてみます。イメージは ssh クライアントが含まれていると便利なので、ここでは maven を使います。

docker run -it --rm maven bash

コンテナからホストにアクセスしてみます。ホスト名は host.rancher-desktop.internal も使えます。

ssh USER@host.docker.internal

macOS

#

macOS では「システム環境設定...」、「共有」、「リモートログイン」を有効にして ssh サーバー機能を有効にできます。

Windows の時と同様に maven のイメージを利用します。

docker run -it --rm maven bash

コンテナからホストにアクセスしてみます。ホスト名は host.rancher-desktop.internalhost.lima.internal も使えます。

ssh USER@host.docker.internal

まとめ

#

コンテナが、それぞれ IP アドレスを持っていることがクラウドネイティブなアプリケーションでコンテナ利用を促進している重要な要因の1つです。しかし、コンテナからホストにアクセスしたい場合もあります。

先日投稿した「Windows、macOS で sshfs を使用する」の中で、macOS で lima や Rancher Desktop を使用する場合、コンテナにマウントできるディレクトリの制約があることを説明しました。

このような環境の場合でも、次のように sshfs をコンテナにインストールすればホストの任意のディレクトリのマウントが可能になります。

docker run -it --rm --privileged ubuntu
apt update
apt install sshfs -y
mkdir /build
sshfs USER@host.docker.internal:/workspace /build

参考

#
豆蔵デベロッパーサイト - 先週のアクセスランキング
  1. 基本から理解するJWTとJWT認証の仕組み(2022-12-08)
  2. 直感が理性に大反抗!「モンティ・ホール問題」(2022-07-04)
  3. Nuxt3入門(第4回) - Nuxtのルーティングを理解する(2022-10-09)
  4. Nuxt3入門(第8回) - Nuxt3のuseStateでコンポーネント間で状態を共有する(2022-10-28)
  5. Podman Desktopがv1.0になったのでwindows版を試してみたところ、気付いたらv1.1に上がるくらいに機能豊富だった話(2023-06-09)
  6. Nuxt3入門(第1回) - Nuxtがサポートするレンダリングモードを理解する(2022-09-25)
  7. VS Code で .NET MAUI の開発環境を構築する(macOS/iOS)(2023-08-14)
  8. Pytestを使ってみる(その2:VSCode拡張機能編)(2023-03-05)
  9. GitHub Actions - 構成変数(環境変数)が外部設定できるようになったので用途を整理する(2023-01-16)
  10. 統計学で避けて通れない自由度の話(2022-06-20)