web-dev-qa-db-ja.com

実行中のdockerコンテナのIPアドレスを取得する方法

私はDocker for Macを使っています。 Dockerコンテナー内でnodejsベースのマイクロサービスを実行しています。私はブラウザを通してノードマイクロサービスをテストしたいです。実行中のdocker containerのIPアドレスを取得するにはどうすればいいですか?

57
user3067875

あなたのホストからコンテナにポートをマッピングしたくない場合は、コンテナのdocker range ipに直接アクセスできます。この範囲は、デフォルトではあなたのホストからのみアクセスされます。あなたはあなたのコンテナネットワークデータをチェックすることができます:

docker inspect <containerNameOrId>

おそらくフィルタリングするほうが良いでしょう:

docker inspect <containerNameOrId> | grep '"IPAddress"' | head -n 1

通常、デフォルトのdocker ipの範囲は172.17.0.0/16です。すべてが正常で、特別なネットワークオプションを指定していない場合、ホストは172.17.0.1、最初のコンテナは172.17.0.2になります。

EDIT「バッシュトリック」の代わりにdocker機能を使用するもう1つのより洗練された方法:

docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>
65
OscarAkaElvis

--formatオプションを使用して、コンテナ情報全体ではなくIPアドレスのみを取得します。

Sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>
9
Nilesh Patel

あなたがコンテナの中でそれを正しく取得したいならば、あなたは試すことができます

ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17
8
Ilya Yevlampiev

あなたはフラグ-Pであなたのコンテナを開始することができます。これはあなたの画像の露出したポートにランダムなポートを「割り当て」ます。

docker port <container id>を使えば、ランダムに選ばれたポートを見ることができます。アクセスはlocalhost:portを通して可能です。

4
gScht

最近のdocker engineではこのコマンドを使います。

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

そしてより古いエンジンのために使用します:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
2
Nima Ghoroubi

私の場合、以下はMacでに動作しました

私はMac上でコンテナIPに直接アクセスできませんでした。私はポート転送でlocalhostを使う必要があります。ポートが8000の場合、http://localhost:8000

https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds を参照してください。

元の答えは: からでしたhttps://github.com/docker/for-mac/issues/2670#issuecomment-371249949

0
Lavande