Docker が外部ネットワークに接続できない 解決策:
1. 以前に正常に使用されていた場合、ホストは外部ネットワークにアクセスできますが、コンテナーは問題を解決するには、docker サービスを再起動してみてください:
>>>sercice docker restart #debian/ubutun中sh为dash,centos指bash >>>docker run -it -v /yourfile:/file -p 8000:8000 /bin/bash imageid >>>
2. Docker コンテナはサービスを提供し、ポート 8888 をリッスンします。外部アクセスを有効にするには、ポート マッピングが必要です。
docker run -it --rm -p 8888:8888 server:v1
この時点で問題が発生しました。仮想マシン A にデプロイした後、A では 8888 ポート サービスにアクセスできますが、B ではアクセスできません。
これは、リクエストがインターセプトされたことが原因であるはずです。
Check firewall-cmd --state
出力が「not running」、FirewallD が実行されておらず、すべての保護戦略が開始されていない場合は、次のことができます。接続をブロックしているファイアウォールを除外します。
出力が「実行中」の場合は、FirewallD が現在実行中であることを意味します。現在開いているポートとサービスを確認するには、次のコマンドを入力する必要があります:
firewall-cmd --list-ports firewall-cmd --list-services
解決策は 2 つあります。 :
1. FirewallD サービスをオフにする:
ファイアウォールが必要ない場合は、FirewallD サービスを直接オフにするだけです
systemctl stop firewalld.service
2. にポリシーを追加します。指定したポートを外部に開きます:
たとえば、外部 5000/tcp ポートを今すぐ開きたい場合は、次のコマンドを使用できます:
firewall-cmd --add-port=5000/tcp --permanent firewall-cmd --reload
一時的にのみ開く場合ポートを削除するには、コマンドの最初の行にある「--permanent」パラメータを削除します。その後、FirewallD サービスが再度再起動されると、このポリシーは無効になります。
ip 転送がオンになっていません
sysctl net.ipv4.ip_forward
net.ipv4.ip_forward=0 が表示される場合は、オンになっていないことを意味します。
sysctl.conf ファイルを開きます
vi /etc/sysctl.conf
次のコードを追加します:
net.ipv4.ip_forward=1
その他の関連チュートリアルについては、dockertutorial 列に注目してください。 PHP 中国語 Web サイトにあります。
以上がDocker が外部ネットワーク ソリューションに接続できないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。