ホームページ  >  記事  >  運用・保守  >  Docker仮想ネットワークの使い方

Docker仮想ネットワークの使い方

PHPz
PHPzオリジナル
2023-04-19 09:15:54792ブラウズ

Docker は現在最も人気のあるコンテナ化プラットフォームの 1 つであり、アプリケーションのデプロイと管理を大幅に簡素化できます。最も重要な機能の 1 つは Docker 仮想ネットワークです。これは、ユーザーが別の物理マシン上に複数のコンテナを作成し、適切なネットワーク分離とセキュリティを提供しながら共同作業するのに役立ちます。

この記事では、Docker 仮想ネットワークを使用してコンテナ間の通信とネットワークの相互運用性を構築する方法を紹介し、ネットワークの分離とセキュリティの重要性についても紹介します。

  1. 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」という仮想ネットワークを作成したので、それを使用してコンテナを作成し、通信できるようになります。

  1. コンテナを Docker 仮想ネットワークに接続する

次に、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 つのコンテナーを作成し、作成した仮想ネットワークに接続しました。

  1. コンテナ間の通信のテスト

コンテナが正常に通信していることをテストするには、「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 仮想ネットワークのもう 1 つの重要な役割は、異なるコンテナー間にネットワークの分離とセキュリティを提供することです。たとえば、「ウェブサーバー」コンテナで悪意のあるコードを実行した場合、他のコンテナにアクセスして影響を与えることはできません。

さらに、Docker 仮想ネットワークを使用して、コンテナーが外部ネットワークにアクセスすることを制限することもできます。たとえば、仮想ネットワークを作成し、コンテナがそのネットワーク内の他のコンテナとのみ通信し、インターネット上の他のコンテナにアクセスできないようにすることで、アプリケーションのセキュリティを強化できます。

    概要
この記事では、Docker 仮想ネットワークを使用してさまざまなコンテナーを接続し、コンテナー間の通信を可能にする方法を紹介しました。また、Docker 仮想ネットワークがネットワークの分離とセキュリティをどのように提供するかについても学びました。

仮想ネットワークは Docker の非常に重要な機能であり、強力なコンテナ化されたアプリケーションを構築し、優れたセキュリティを提供するために使用できます。 Docker を使用してアプリケーションを構築している場合は、アプリケーションのセキュリティと効率を向上させるために仮想ネットワークの使用を必ず検討してください。

以上がDocker仮想ネットワークの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。