年中アイス

いろいろつらつら

docker for macのホストを指すドメイン名

手元のMacで開発をしていて、コンテナからホスト上で動作しているサーバに繋ぐ必要がありました。単純にlocalhostを使うとコンテナ自体を指してしまうので、それでは通信できません。ホストのIPをいちいち指定するのもなーと思っていたんですが、docker for macにはホストを表すdocker.for.mac.localhostというドメインがありました。*1 https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds

2018/01/17 更新

docker.for.mac.localhostは、docker.for.mac.host.internalに変わるそうです。 Docker Community Edition 17.12.0-ce-mac46 2018-01-09 (Stable)から、docker.for.mac.host.internalが追加され、docker.for.mac.localhostはまだ継続して使えますが、おそらくどこかのバージョンで消えるものと思われます。

これでコンテナ -> ホスト上のサービスに、共通の設定で繋ぐことができます。

docker host portなどで調べると、nginxなどのWebサーバをコンテナで起動して、それにホストから接続するための設定のexposeや-pオプションが出てきます。ホスト->コンテナの方向の情報が多く、探すのに手間取りましたが、用意されていました。

ホストのポートを指定できるので、sshトンネリングなどで外部サーバとの通信経路を作っておけば、ローカルのコンテナから、外部サーバとの通信を行うといったことも可能です。

*1:docker 17.06からみたい