Docker を使用すると、外部からコンテナにアクセスしたり、コンテナを相互接続したりすることで、ネットワーク サービスを提供できます。 以下の操作は、myfirstapp イメージを通じてシミュレートされます。myfirstapp イメージの作成方法については、ここをクリックしてください。 1. 外部アクセスコンテナ コンテナが起動すると、コンテナ内でいくつかのネットワーク アプリケーションを実行できるようになり、-p または -P パラメータを使用してポート マッピングを指定できます。 a. -P (大文字) フラグを使用すると、Docker はランダムにポートを選択し、コンテナ内の開いているネットワーク ポートにマップします。 $ docker run -d -P myfirstapp python app.py $ docker ps コンテナID イメージ コマンド 作成ステータス ポート名 dbcf5d3290ba myfirstapp "python app.py" 4秒前 4秒前 0.0.0.0:32770->80/tcp quizzical_engelbart このとき、ローカルマシンのポート 32770 にアクセスすると、コンテナ内の Web アプリケーションが提供するインターフェースにアクセスできます。 $ カール http://192.168.1.160:32770/ <h3>こんにちは、こんにちは!</h3><b>ホスト名:</b> dbcf5d3290ba<br/><b>訪問数:</b> <i>Redis に接続できません。カウンターが無効です</i> dockerログを使用してアプリケーション情報を表示することもできます $ docker ログ dbcf5d3290ba * http://0.0.0.0:80/ で実行中 (終了するには CTRL+C を押してください) 192.168.1.5 - - [2018/03/29 06:17:34] "GET / HTTP/1.1" 200 - 192.168.1.5 - - [2018/03/29 06:17:34] "GET /favicon.ico HTTP/1.1" 404 - 192.168.1.160 - - [2018/03/29 06:17:43] "GET / HTTP/1.1" 200 - 192.168.1.5 - - [2018/03/29 06:18:59] "GET / HTTP/1.1" 200 - b. -p (小文字) フラグを使用すると、マップするポートを指定できます。指定されたポートにバインドできるコンテナーは 1 つだけです。サポートされている形式は次のとおりです。 ip:ホストポート:コンテナポート ip::コンテナポート ホストポート:コンテナポート $ docker run -d -p 4000:80 myfirstapp python app.py $ docker run -d -p 4001:80 myfirstapp python app.py $ カール http://192.168.1.160:4000/ こんにちは!ホスト名: f43ed2810353 訪問数:Redis に接続できません。カウンタが無効です $ カール http://192.168.1.160:4001/ こんにちは! ホスト名:f43ed2810353 訪問数:Redis に接続できません。カウンタが無効です ローカル ポート 4000 がマップされており、別のポート 4001 もマップされていることがわかります。 デフォルトでは、Docker はすべてのローカル アドレスをマップします。次に、指定されたポートを指定されたアドレスにマッピングしてみます。 $ docker run -d -p 127.0.0.1:4000:80 myfirstapp python app.py $ curl http://127.0.0.1:4000/ ## $ curl http://localhost:4000/ 経由でアクセス ## $ curl http://192.168.1.160:4000/ 経由でアクセス ## アクセス拒否 curl: (7) 192.168.1.160:4000 への接続に失敗しました。接続が拒否されました その後、コンテナ内のアプリケーションにアクセスするには、IP アドレス 127.0.0.1 経由でのみアクセスできるようになります。 次のステップは、ローカルマシンの任意のポートをコンテナのポート80にバインドし、ランダムにポートを割り当てることです。 $ docker run -d -p 127.0.0.1::80 myfirstapp python app.py $ docker ps ##127.0.0.1:32770->80/tcp $ curl http://127.0.0.1:32770/ ## $ curl http://localhost:32770/ 経由でアクセス ## $ curl http://192.168.1.160:32770/ 経由でアクセス ## アクセスが拒否されました 通信プロトコルも指定できます docker run -d -p 5003:80/udp myfirstapp python app.py 2. コンテナにバインドされマップされているポートとIPアドレスを表示する $ docker port 44de1b0b5312 (コンテナID) 80/tcp -> 127.0.0.1:32770 3. 注意事項 a.dockerinspect でコンテナの内部ネットワークと IP アドレスを表示する $ docker examine 44de1b0b5312 (コンテナID) b. コンテナの起動時に複数のIPアドレスをバインドする $ docker run -d -p 5005:5000 -p 5006:80 myfirstapp python app.py #コンテナID: 44e703c1279a $ docker ポート 44e703c1279a 5000/tcp -> 0.0.0.0:5005 80/tcp -> 0.0.0.0:5006 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MYSQL 文字関数を使用してデータをフィルタリングすることに関する質問
>>: HTML+CSS+JS でキャンバスがマウスの小さな円に追従する特殊効果のソースコードを実現
序文Nginx は、イベント駆動型の非同期非ブロッキング処理フレームワークを使用する軽量 HTTP ...
よく食べて十分に休息を取るというのは簡単なことのように思えますが、実際に実行するのはそれほど簡単では...
大きな落とし穴、Linuxシステムに付属するPythonのバージョンを簡単に削除しないでください1....
1. TEXTとBLOBの違いTEXT ファミリと BLOB ファミリの唯一の違いは、BLOB 型は...
「/」はルートディレクトリ、「~」はホームディレクトリです。 Linux ストレージはツリー状にマウ...
最近、カンファレンスの健康申告システムに取り組んでいたとき、バックエンドを構築する必要があり、vue...
HTMLの動作原理: 1. ローカル操作: ブラウザでhtmlファイルを開く2. リモートアクセス...
目次1. はじめに2. コードの実装2.1 目的分析2.2 実装プロセス2.2.1 エントリーコード...
序文この記事を始める前に、複数選択の質問をしてみましょう。フロントエンド開発でビルド ツールを使用す...
表のキャプションは表の上または下に配置でき、プロパティで調整できます。デフォルトのテーブル タイトル...
1. トランザクション特性(ACID) (1)原子性トランザクションに関係するプログラムによって実行...
目次1. Promise とは何ですか? 2. なぜ Promise が存在するのでしょうか? 3つ...
H5 レイアウトを設計する場合、通常はバナーに遭遇することになります。例えば、2:1 で表示したい場...
機能: データ表示、テーブルアプリケーションシナリオ。 <table> テーブル<...
目次CSS カスタム変数機能は古くから存在していますが、実際の開発ではあまり使用されていません。その...