CentOS 7 では、次のようなコマンドを使用してホスト ポートをコンテナー ポートにマッピングすると、コンテナー サービスにアクセスできないという問題が発生する場合があります。 実行ファイル名を web_a に変更します。 Docker がこのコマンドを実行すると、ホスト ポート 803 をコンテナ ポート 80 にマップするルールが iptables に挿入されます。ただし、CentOS 7 では、iptables は firewalld サービスに置き換えられています。したがって、上記のコマンドのポート マッピングは有効になりません。 解決策: まず、ホスト上のネットワーク カード情報を確認し、docker0 の仮想ネットワーク カードが追加されていることを確認します。 [root@localhost /home]# ifconfig docker0: flags=4163<UP、ブロードキャスト、実行中、マルチキャスト> mtu 1500 inet 172.17.0.1 ネットマスク 255.255.0.0 ブロードキャスト 172.17.255.255 inet6 fe80::42:5cff:fe0e:82f9 プレフィックス長 64 スコープID 0x20<リンク> ether 02:42:5c:0e:82:f9 txqueuelen 0 (イーサネット) RXパケット 1288 バイト 1561177 (1.4 MiB) RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0 TXパケット 1594 バイト 108755 (106.2 KiB) TXエラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 enp2s0: flags=4163<UP、ブロードキャスト、実行中、マルチキャスト> mtu 1500 inet 192.168.1.250 ネットマスク 255.255.255.0 ブロードキャスト 192.168.1.255 inet6 fe80::76f4:9aea:4973:ec6c プレフィックス長 64 スコープID 0x20<リンク> inet6 240e:379:542:2800:8844:77ba:78dd:7 プレフィックス長 128 スコープID 0x0<グローバル> inet6 240e:379:542:2811:3ead:218:ba68:38e6 プレフィックス長 64 スコープID 0x0<グローバル> ether 74:d4:35:09:93:19 txqueuelen 1000 (イーサネット) RXパケット 10166908 バイト 1221399579 (1.1 GiB) RXエラー 0 ドロップ 3014 オーバーラン 0 フレーム 0 TXパケット 982334 バイト 427296782 (407.5 MiB) TXエラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 デバイス割り込み 18 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 ネットマスク 255.0.0.0 inet6 ::1 プレフィックス長 128 スコープID 0x10<ホスト> ループ txqueuelen 1000 (ローカル ループバック) RXパケット 1833650 バイト 450567722 (429.6 MiB) RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0 TXパケット 1833650 バイト 450567722 (429.6 MiB) TXエラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 vethecef228: flags=4163<UP、ブロードキャスト、実行中、マルチキャスト> mtu 1500 inet6 fe80::f425:f1ff:fe82:9c19 プレフィックス長 64 スコープID 0x20<リンク> ether f6:25:f1:82:9c:19 txqueuelen 0 (イーサネット) RXパケット 234 バイト 1520113 (1.4 MiB) RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0 TXパケット 613 バイト 39809 (38.8 KiB) TXエラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0 コンテナ インスタンスによって取得された仮想 IP を確認するには、次のコマンドを使用します。 docker 検査 web_a コンテナ内の IP が 172.17.0.2 であると仮定して、この IP の NAT 転送ルールを作成し、firewalld サービスにこのルールを処理させます。 #ホストポート要求はコンテナに転送されます (コンテナ内のサービスはローカルホストではなく、コンテナによって割り当てられた仮想 IP をリッスンするか、0.0.0.0 に置き換える必要があります) firewall-cmd --permanent --zone=public --add-masquerade ポート NAT 転送を有効にする #ホストのポート 803 要求をコンテナのポート 80 に転送します firewall-cmd --add-forward-port=port=803:proto=tcp:toaddr=172.17.0.2:toport=80 --permanent #ルールを再読み込みします。firewall-cmd --reload #すべてのルールを一覧表示するfirewall-cmd --list-all 公開(アクティブ) ターゲット: デフォルト icmpブロック反転: いいえ インターフェース: enp2s0 出典: サービス: ssh dhcpv6-client ポート: 3306/tcp 80/tcp 21/tcp 5000/tcp 6379/tcp 900/tcp 801/tcp 802/tcp 6000/tcp 5002/tcp 90/tcp 9092/tcp 81/tcp 803/tcp プロトコル: 仮面舞踏会:はい 転送ポート: port=803:proto=tcp:toport=80:toaddr=172.17.0.2 送信元ポート: icmpブロック: リッチルール: #Dockerを再起動 systemctl dockerを再起動します #コンテナを再起動します docker start web_a 上記の操作を行うと、ホスト IP:803 を持つコンテナ上のポート 80 のサービスにアクセスできるようになり、firewalld をシャットダウンする必要がなくなります (インターネット上の多くの結論では、iptables サービスに置き換えることが推奨されていますが、実際のテストでは必要ありません)。 要約する CentOS 7 で Docker のポート フォワーディングをファイアウォールと互換性のあるように構成する方法についての記事はこれで終わりです。Docker のポート フォワーディングをファイアウォールと互換性のあるように構成する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: ネイティブ JS オブジェクト指向タイピング ゲーム
jQuery フォーム検証の例 / ユーザー名、パスワード、住所、電子メールの検証を含む下記の通り ...
JSランニング三部作js実行コードは3つのステップに分かれています構文解析プリコンパイル解釈Jav...
これは純粋に CSS で実装された大きなドロップダウン メニューです。この大きなメニューは、js コ...
MySQL 8 は、NoSQL、JSON などのサポートなど、まったく新しいエクスペリエンスをもたら...
1. yumソースの設定ファイルを入力します 2.lsで設定ファイルを表示する 3. ディレクトリを...
序文MySQL 5.1.6 以降、非常にユニークな機能であるイベント スケジューラが追加されました。...
昨日、1年間使用していた Alibaba Cloud サーバーを購入しました。システムは Linux...
目次1. サブクエリの定義2. サブクエリの分類1. スカラーサブクエリ: 2. MySQLサブクエ...
目次挿入バッファとは何ですか?挿入バッファのトリガー条件は何ですか?なぜ一意のインデックスにできない...
ハイパーリンクはインターネット全体を接続していると言っても過言ではありません。ハイパーリンクは、別の...
証券会社にいた頃、設計業務が忙しくなかったため、商品のマニュアルを書く役割を担ったことがありました。...
1. ダウンロードして解凍します: /Users/xiechunping/Softwares/mys...
最近、多くの学生から Web ページのエンコーディングについて質問を受けています。gb2312 と ...
MySQLトリガーの簡単な例文法CREATE TRIGGER <トリガー名> -- トリ...
1. 基本的な使い方これは MutationObserver コンストラクターを通じてインスタンス化...