Dockerでローカルマシン(ホストマシン)にアクセスする方法

Dockerでローカルマシン(ホストマシン)にアクセスする方法

質問

Docker でローカル データベースにアクセスするにはどうすればよいでしょうか? 127.0.0.1 は Docker コンテナ内のコンテナ自体を参照するため、使用は絶対にできません。したがって、他のチャネルを通じて問題を解決する必要があります。

解決

オペレーティングシステムの種類に応じて、次のいずれかの方法を選択できます。

Dockerファイル:

/sbin/ip route|awk '/default/ { print $3,"\tdockerhost" }' を実行 >> /etc/hosts

ランタイム:

(使用しない場合があります) docker run --add-host dockerhost:`/sbin/ip route|awk '/default/ { print $3}'` [私のコンテナ]
(便利) docker run --add-host=dockerhost:`docker network inspect --format='{{range .IPAM.Config}}{{.Gateway}}{{end}}' bridge` [画像]

Docker for Mac (17.12+):

docker.for.mac.ホスト内部
MONGO_SERVER = docker.for.mac.host.internal

#docker-compose.yml
バージョン: '3'

サービス:
 API:
  ビルド: ./api
  ボリューム:
   - ./api:/usr/src/app:ro
  ポート:
   - 「8000」
  環境:
   - モンゴサーバー
  コマンド: /usr/local/bin/gunicorn -c /usr/src/app/gunicorn_config.py -w 1 -b :8000 wsgi

リナックス

解決策1
/sbin/ip route|awk '/default/ { print $3 }'
docker run --add-host dockerhost:`/sbin/ip route|awk '/default/ { print $3}'` [私のコンテナ]
# 解決策 2
-e "DOCKER_HOST=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')"

原理

原理を理解するには、コンピュータ ネットワークのモデルと Docker によって実装されるモデルを理解する必要があります。実際、Docker 内には仮想ブリッジ docker0 が実装されています。コンテナ内の外部ホストにアクセスするには、ブリッジ内の外部ホストの仮想アドレス、つまり docker.for.mac.host.internal が必要です。興味があれば、Docker のネットワーク原則、コンピュータ ネットワーク原則、および docker compose について学習できます。

参照

[1].(stackoverflow)dockerの親ホストのIPをコンテナのホストファイルに挿入する

[2].(stackoverflow)dockerコンテナ内からdockerホストのIPアドレスを取得する方法

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Docker でリモートの安全なアクセスを有効にする方法の詳細なグラフィック チュートリアル
  • DockerにTomcatコンテナを追加したときにホームページにアクセスできない問題の解決方法
  • 独立した IP を介して Windows コンテナ イントラネットの Docker に直接アクセスする方法
  • Centos Docker ブリッジ モードでホスト Redis サービスにアクセスできないというトラブルシューティングの経験
  • Dockerを使用して外部からアクセス可能なMySQLを構築する詳細な説明
  • dockerコンテナがIP経由でホストマシンにアクセスできない問題を解決する方法の詳細な説明
  • Dockerコンテナを使用してホストネットワークにアクセスする方法
  • 実行後にdocker nginxにアクセスできない問題の解決策
  • Dockerコンテナ内の独立IPにアクセスする方法
  • Dockerコンテナ間で通信する3つの方法

<<:  SQL効率を分析する方法を説明する

>>:  Js における new 演算子の役割の詳細な説明

推薦する

Linux で Multitail コマンドを使用するチュートリアル

MultiTail は、tail コマンド機能と同様に、複数のドキュメントを同時に監視するために使用...

MySQL 8.0.11 インストール概要チュートリアル図

インストール環境: CAT /etc/os-release CentOS システムのバージョン情報を...

Vue3+Vite+TS は、要素プラスビジネスコンポーネントの二次カプセル化を実装します sfasga

目次1. 構造文字列2. タプルを返す3. Dict辞書にアクセスする4. 図書館を利用する5. リ...

フロントエンドの上級者向けコースでは、JavaScript のストレージ機能の使い方を学習します。

目次序文背景実施計画の考え方js ストレージ機能ソリューション設計やっと要約する序文どの SaaS ...

CSS3 フィルター属性の使い方の紹介

1. はじめにフロントエンドページのアニメーション効果を記述する場合、filter 属性は多かれ少な...

MySQL オンラインリカバリ UNDO テーブルスペース 実戦記録

1 MySQL5.6 1.1 関連パラメータMySQL 5.6 では、innodb_undo_dir...

VMware のインストールと使用時の問題と解決策

仮想マシンは使用中であるか、接続できません次のようなエラーが報告された場合解決まずこのページにアクセ...

require/import キーワードを使用して v-for ループでローカル画像をインポートするいくつかの方法

目次問題の説明方法 1 (バックエンドが画像 URL を返す)方法 2 (フロントエンドで requ...

CentOS7 で MySQL のスケジュールされた自動バックアップを実装する方法

実稼働環境で起こる最も嬉しいことは、シナリオによっては、更新または削除時にパラメータを無視せざるを得...

Alibaba Cloud ServerにMySQLデータベースをインストールする方法の詳細な説明

序文学習中に Zookeeper をインストールする必要があったため、仮想マシンに常に問題が発生した...

mysql の not equal to null と equal to null の書き方の詳細説明

1. テーブル構造 2. 表データ 3. クエリのteacher_nameフィールドは空にすることは...

この構成ファイルの排他ロックに失敗したという VMware 仮想マシンのプロンプトの解決方法

VMware が異常シャットダウンした後、再起動すると「この構成ファイルを排他的にロックできませんで...

Vue 値転送の 12 の方法の概要

目次1. 父から息子へ2. 息子から父へ3. ブラザーコンポーネント通信(バス) 4. ref/re...

Node.js の非同期イテレータの詳細な説明

目次序文非同期イテレータとは何ですか?非同期イテレータストリームとしてページング機能を備えたAPIの...

Vueはカルーセルアニメーションを実装します

この記事では、カルーセルアニメーションを実現するためのVueの具体的なコードを例として紹介します。具...