Docker は現在最も人気のあるコンテナ化プラットフォームの 1 つであり、アプリケーションのデプロイと管理を大幅に簡素化できます。最も重要な機能の 1 つは Docker 仮想ネットワークです。これは、ユーザーが別の物理マシン上に複数のコンテナを作成し、適切なネットワーク分離とセキュリティを提供しながら共同作業するのに役立ちます。
この記事では、Docker 仮想ネットワークを使用してコンテナ間の通信とネットワークの相互運用性を構築する方法を紹介し、ネットワークの分離とセキュリティの重要性についても紹介します。
まず、Docker 仮想ネットワークを作成する必要があります。次のコマンドを使用して、「my-network」という名前の仮想ネットワークを作成できます:
docker network create my-network
ネットワークを作成した後、次のコマンドを使用して現在の Docker 仮想ネットワークを一覧表示できます:
docker network ls
実行結果は次のとおりです:
NETWORK ID NAME DRIVER SCOPE 6e8c0391c9ac bridge bridge local a8a551c45849 host host local d6a050011a56 my-network bridge local 69f86bb8f6bc none null local
「my-network」という仮想ネットワークを作成したので、それを使用してコンテナを作成し、通信できるようになります。
次に、2 つのコンテナを作成し、先ほど作成した「my-network」仮想ネットワークに接続します。 --network
パラメーターを使用して、コンテナーを仮想ネットワークに接続します。
次のコマンドを使用して、「webserver」という名前のコンテナーを起動し、仮想ネットワークに接続します。
docker run --name webserver --network my-network -p 8080:80 -d nginx
上記のコマンドでは、「nginx」イメージを使用してコンテナーを作成しました。 -p
パラメーターは、Docker コンテナーのポート「80」を物理マシンのポート「8080」にマップします。
同様の方法を使用して 2 番目のコンテナーを作成し、仮想ネットワークに接続することもできます。
docker run --name database --network my-network -e MYSQL_ROOT_PASSWORD=password -d mysql
上記のコマンドでは、「mysql」イメージを使用してコンテナーを作成します。 MySQL の root パスワードを設定します。
これで、2 つのコンテナーを作成し、作成した仮想ネットワークに接続しました。
コンテナが正常に通信していることをテストするには、「Web サーバー」で単純な HTML ページを使用します。
まず、「webserver」コンテナに入り、次のコマンドを使用してテキスト エディタ nano をインストールします:
docker exec -it webserver apt-get update docker exec -it webserver apt-get install nano
次に、nano テキスト エディタを使用して単純なindex.html ページを作成します。 # #
docker exec -it webserver nano /usr/share/nginx/html/index.htmlページに次のコンテンツを追加します:
<!DOCTYPE html> <html> <head> <title>Welcome to my website</title> </head> <body> <p>Hello from webserver!</p> <?php $servername = "database"; $username = "root"; $password = "password"; // Create connection $conn = new mysqli($servername, $username, $password); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } echo "Connected successfully to database"; ?> </body> </html>上記のコードでは、ページにテキスト メッセージを追加し、「」で MySQL データベースに接続するための PHP スクリプトを追加します。データベース」コンテナ。 これで、物理マシンの Web ブラウザで次の URL を使用してページを開くことができます:
http://127.0.0.1:8080ページには、「Web サーバーからこんにちは!」と接続成功のメッセージが表示されます。 一方、「database」コンテナーで「docker logs database」コマンドを実行すると、次の出力が表示されます:
... Version: '5.7.22' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server (GPL) 2019-05-22T20:02:24.809716Z 0 [Note] Event Scheduler: Loaded 0 events Connected successfully to databaseこれは、2 つのコンテナー間の通信が正常であることを示します。で、テスト ページは「データベース」コンテナ上の MySQL データベースに正常に接続できます。
以上がDocker仮想ネットワークの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。