Dockerコンテナからホストへのアクセス
この情報は2018 - 03 - 31のDocker
Dockerコンテナからホストポートにアクセスしたい.
例えば、NginXプロセスはポート8888を開いてホストマシン上で動作しています.
コンテナにコンテナを発見する方法を知っていますが、コンテナからホストIPアドレスを取得する方法を知りません.
したがって、私はインターネットをさまよった.
前提条件
私は主にMac用のDockerを使用しますが、時々Linuxを使用します.それで、両方のプラットホームで私の容器を走らせたいです.
TLドクター
https://github.com/bufferings/docker-access-host
ホストネットワークモード?
Dockerがホストネットワークモードを持っていることがわかった.
https://docs.docker.com/network/host/
このモードでは、コンテナは“127.0.0.1”でホストにアクセスできるようです.何てわかった!
それで、私はそれを試してみました、そして、それは私のLinuxマシンで働きます、しかし、それは私のマックで働きませんでした.それから、
https://docs.docker.com/network/network-tutorial-host/#prerequisites
を・ω・`) ……別の方法を見つけさせてください.
ホスト.ドッカー.内部?
私は、MACのためのDockerのコンテナのホストIPアドレスとして
を・ω・`) 注意
また、いくつかの名前がありました. Docker.フォー.マック.localhost <-- 17.06.0以降では廃止されました. Docker.フォー.マック.ホスト.内部の<-- 17.12.0 - CE - MAC 46から現在廃止予定
ホスト.ドッカー.内部の<--から
https://docs.docker.com/docker-for-mac/release-notes
最後に、私の解決策はこのようです.
(๑•畝ㅂ•○○○○✧
サンプルコードは以下の通りです.
https://github.com/bufferings/docker-access-host
私はホストを望みます.ドッカー.近い将来Linuxの内部に追加されます.
あなたがより良い解決を知っているならば、知らせてください.
Dockerコンテナからホストポートにアクセスしたい.
例えば、NginXプロセスはポート8888を開いてホストマシン上で動作しています.
コンテナにコンテナを発見する方法を知っていますが、コンテナからホストIPアドレスを取得する方法を知りません.
したがって、私はインターネットをさまよった.
前提条件
私は主にMac用のDockerを使用しますが、時々Linuxを使用します.それで、両方のプラットホームで私の容器を走らせたいです.
TLドクター
https://github.com/bufferings/docker-access-host
ホストネットワークモード?
Dockerがホストネットワークモードを持っていることがわかった.
https://docs.docker.com/network/host/
このモードでは、コンテナは“127.0.0.1”でホストにアクセスできるようです.何てわかった!
それで、私はそれを試してみました、そして、それは私のLinuxマシンで働きます、しかし、それは私のマックで働きませんでした.それから、
https://docs.docker.com/network/network-tutorial-host/#prerequisites
The host networking driver only works on Linux hosts, and is not supported on Docker for Mac, Docker for Windows, or Docker EE for Windows Server.
を・ω・`) ……別の方法を見つけさせてください.
ホスト.ドッカー.内部?
私は、MACのためのDockerのコンテナのホストIPアドレスとして
host.docker.internal
を解決することができるとわかりました.すごい!それは私が知りたかったものです!でも.Linuxのバージョンはどこですか?を・ω・`) 注意
また、いくつかの名前がありました.
ホスト.ドッカー.内部の<--から
https://docs.docker.com/docker-for-mac/release-notes
最後に、私の解決策はこのようです.
docker-entrypoint.sh
:HOST_DOMAIN="host.docker.internal"
ping -q -c1 $HOST_DOMAIN > /dev/null 2>&1
if [ $? -ne 0 ]; then
HOST_IP=$(ip route | awk 'NR==1 {print $3}')
echo -e "$HOST_IP\t$HOST_DOMAIN" >> /etc/hosts
fi
(main entrypoint)
そして、dockerfileはエントリをエントリとして呼び出します.COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
結果として、Mac用Dockerは“host . docker . internal”を持ち、Linux版はホストファイルに追加されます.(๑•畝ㅂ•○○○○✧
サンプルコードは以下の通りです.
https://github.com/bufferings/docker-access-host
私はホストを望みます.ドッカー.近い将来Linuxの内部に追加されます.
あなたがより良い解決を知っているならば、知らせてください.
Reference
この問題について(Dockerコンテナからホストへのアクセス), 我々は、より多くの情報をここで見つけました https://dev.to/bufferings/access-host-from-a-docker-container-4099テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol