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 演算子の役割の詳細な説明

推薦する

MySQLトランザクションを実行するための構文とプロセスの詳細な説明

概要: MySQL は、トランザクションをサポートするためにさまざまなストレージ エンジンを提供しま...

Win7 の VMware 仮想マシンに Linux7.2 をインストールするインターネット アクセス構成チュートリアル

参考までに、win7システム上のVMware仮想マシンにlinux7.2インターネットアクセス構成を...

webpackコード断片化の実装

目次背景コモンズチャンクプラグイン分割チャンク構成リソースを非同期に読み込む要約する背景高性能なアプ...

Vue で AES.js を使用する詳細な手順

AES暗号化の使用データ転送の暗号化と復号化処理 --- AES.js最初のステップ: vue に ...

JS のオブジェクトリテラルの詳細な説明

目次序文1. オブジェクト構築にプロトタイプを設定する1.1 __proto__ の使用における特殊...

MySQL 5.7.24 圧縮パッケージのインストールと設定方法のグラフィックチュートリアル

この記事では、参考までにMySQL 5.7.24圧縮パッケージのインストールチュートリアルを紹介しま...

Windows 10 インストール vmware14 チュートリアル図

ソフトウェアのダウンロードソフトウェアのダウンロード リンク: https://pan.baidu....

Navicat for MySql ビジュアルインポート CSV ファイル

この記事では、参考までに、Navicat for MySql の CSV ファイルのビジュアルインポ...

MySql 最適化のための my.ini 中国語構成スキームの詳細な説明: InnoDB、4GB メモリ、および複数のクエリ

この記事は、4G メモリ システム用の MySQL 構成ファイル ソリューションです (主に Inn...

Windows/Mac で Docker を使用して MySQL (utf8 を含む) をインストールする

目次1. MacへのDockerのインストール2. Win 10 システムでの Docker のイン...

MySQL で遅いファジークエリを最適化する方法

目次1. はじめに: 2. 最初のアイデアはインデックスを構築することです3. 命令P.S. Lik...

フロントエンドJavaScriptの動作原理

目次1. JavaScript エンジンとは何ですか? 2. V8エンジン3. ランタイム環境4. ...

MySQLデータのバックアップとリカバリの実装方法の分析

この記事では、例を使用して MySQL データのバックアップと復元の方法について説明します。ご参考ま...

CSS3 で複数のカスタムフォントを導入する

今日、HTML に問題を発見しました。多くのデフォルト フォントが提供されていますが、「Bold」、...

ElementUIテーブルのヘッダーアイコンにフローティングプロンプトを追加します。

この記事では主に、ElementUI テーブルのヘッダー アイコンにフローティング プロンプトを追加...