フッターコンテンツにスキップ
IRONSECUREDOCを使用する

Docker Composeネットワーク(開発者向けの仕組み)

Dockerとは何ですか?

Dockerは、軽量なポータブルコンテナ内でアプリケーションのデプロイとスケーリングを自動化するためのコンテナベースの概念を使用するオープンソースプラットフォームです。 簡単に言えば、Dockerコンテナはすべてのアプリケーションコードとその依存関係を1つのユニット内にまとめ、開発者のラップトップからテストサーバーや本番クラウドサーバーまで、一貫した環境を提供します。

Docker Compose ネットワーク (開発者向けの仕組み): 図 1

コンテナは仮想マシン(VM)のように振る舞わず、ホストシステムのオペレーティングシステムカーネルを共有するためです。 したがって、コンテナは非常に効率的で、起動が速いです。 実際に、Dockerコンテナは開発サイクルのすべての段階で一貫した動作を保証します。

実際、Dockerイメージはアプリケーション環境を保持するコンテナの記述のためのテンプレートです。 このセットには、コンテナライフサイクルを管理するためのツールキットも含まれています。 例えば、複数のコンテナで構成されるアプリケーションを編成するために使用できるDocker Composeがあります。 次に、イメージを共有するためのレジストリであるDocker Hubがあります。

Docker Compose Networksとは何ですか?

Docker Composeネットワークは、同じカプセル化された環境内でDocker Composeアプリケーション内のサービスを相互にやり取り可能にします。 --CODE-78--@@ ファイルで複数のサービスを定義すると、Docker Compose はデフォルトのネットワークを自動的に作成し、それらのサービスがサービス名をホスト名として使用して相互に通信できるようにします。 基本的には、ユーザーが独自のネットワークと、作成されたネットワークを持つ複数のサービスを定義できるようにします。

デフォルトのブリッジ ネットワーク: docker-compose up を実行するときにコンテナーにネットワークを定義していない場合、Docker は自動的にブリッジ ネットワークを作成します。 このデフォルトドライバネットワーク上では、すべてのコンテナがサービス名をホスト名として互いに通信できます。

カスタムネットワーク: これらのオプションを使用すると、ユーザーは1つまたは2つのカスタムネットワーク、さらにはユーザー定義のネットワークとしてさらに多くを定義できます。 コンテナポートとdocker-compose.ymlファイル内でカスタムネットワークを定義できます。これらのネットワークにサービスを割り当てることで、コンテナ間の通信方法を制御できます。

  • 内部ネットワークは、サービスを他から分離します。
  • 複数のネットワークは、特定のサービスが他のサービスと通信できるようにしながら、他のサービスにはそのアクセスを許可しません。

サービス発見: すべてのサービスには、構成内の名前に等しいホスト名が付与されます。 つまり、あるコンテナ内の別のサービスを参照するには、そのサービスの名前を使用します。例えば、Webサービスでは、データベースコンテナのIPアドレスを参照するには、dbを使用します。

ネットワークモード: サービスに対して、ホスト、ブリッジ、またはnoneのネットワークモードを設定することもできます。 最も一般的に使用されるのはブリッジで、コンテナのトラフィックを隔離します。

Dockerネットワークドライバとは何ですか?

Dockerネットワークドライバは、コンテナ同士や他のコンテナやシステムとの接続と通信を説明します。 様々なユースケースがあり、ネットワークドライバは利用可能で、各ケースに異なるレベルの分離、接続性、および性能を提供します。 各ネットワークドライバとその使用法について説明します。

Dockerネットワークドライバの種類

ブリッジ(デフォルト)

内部のdockerネットワークは、単一ホストに基づいて他のコンテナと通信することを可能にします。ネットワークを指定せずにコンテナを起動した場合、Dockerはデフォルトのブリッジネットワークを使用します。

# Create a custom bridge network
docker network create --driver bridge my_bridge_network

# Run containers and connect to the custom network
docker run -d --name container1 --network my_bridge_network busybox sleep 3600
docker run -d --name container2 --network my_bridge_network busybox sleep 3600
# Create a custom bridge network
docker network create --driver bridge my_bridge_network

# Run containers and connect to the custom network
docker run -d --name container1 --network my_bridge_network busybox sleep 3600
docker run -d --name container2 --network my_bridge_network busybox sleep 3600
SHELL

ここでは、ping container1container2 のように、サービス名を使用して通信できます。

ホスト

ホストドライバを使用すると、コンテナはホストネットワークスタックを直接共有するため、カスタムネットワークの分離を得られません。

# Run a container using the host network
docker run -d --network host nginx
# Run a container using the host network
docker run -d --network host nginx
SHELL

NGINXコンテナは現在、ホストのIPとネットワークインターフェースを共有しているため、ネットワーク分離を回避しています。

オーバーレイ

これは、Docker SwarmやKubernetes環境で使用され、複数のホストにわたってコンテナを相互接続し、コンテナが仮想ネットワークを介して物理または仮想マシンを安全に接続します。

# Create an overlay network for use in a Docker Swarm cluster
docker network create -d overlay my_overlay_network

# Deploy a service in the Swarm cluster
docker service create --name web --network my_overlay_network nginx
# Create an overlay network for use in a Docker Swarm cluster
docker network create -d overlay my_overlay_network

# Deploy a service in the Swarm cluster
docker service create --name web --network my_overlay_network nginx
SHELL

これは、複数のDockerホストにまたがるサービスをSwarmクラスタ内で作成します。

None

このnoneドライバは、コンテナのネットワークを無効にします。 このコンテナは、外部ネットワーク通信から隔離されます。

# Run a container with no network
docker run -d --network none busybox sleep 3600
# Run a container with no network
docker run -d --network none busybox sleep 3600
SHELL

busyboxコンテナはインターネットにアクセスできず、他のコンテナのネットワークや外部世界への呼び出しを送信できません。

Macvlan

Macvlanドライバは、コンテナがMACアドレスを使用してネットワーク上で物理デバイスとして表示できるようにし、直接物理ネットワークにアクセスできます。

# Create a Macvlan network
docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 macvlan_network

# Run a container on the Macvlan network
docker run -d --network macvlan_network busybox sleep 3600
# Create a Macvlan network
docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 macvlan_network

# Run a container on the Macvlan network
docker run -d --network macvlan_network busybox sleep 3600
SHELL

IPvlan

IPvlanドライバはMacvlanに似ていますが、Layer 2(MACアドレス)に依存せずにIPアドレスを割り当てることに焦点を当てています。 複数のコンテナが同じネットワークインターフェースを共有できます。

# Create an IPvlan network
docker network create -d ipvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 ipvlan_network

# Run a container on the IPvlan network
docker run -d --network ipvlan_network busybox sleep 3600
# Create an IPvlan network
docker network create -d ipvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 ipvlan_network

# Run a container on the IPvlan network
docker run -d --network ipvlan_network busybox sleep 3600
SHELL

ホストのLayer 2イーサネットインターフェースをネットワークと共有しますが、異なるIPアドレスを持ちます。

カスタムプラグイン

Dockerのカスタムプラグインは、サードパーティまたはユーザーが開発したネットワークドライバで、Dockerがデフォルトで提供する以上のネットワーク機能を詳細に提供します。 サードパーティのDockerプラグインは、Software-Defined Networkingなどの外部ネットワークソリューションフレームワークと統合し、セキュリティ、スケーラビリティ、およびマルチホストネットワークを改善します。 Dockerは、開発者やベンダーに柔軟なアーキテクチャを提供し、ネットワークプラグインをネイティブドライバと同じようにインストールして使用できるようにしています。

IronSecureDoc

IronSecureDoc for Dockerは、コンテナ化されたアプリケーションにセキュリティドキュメント処理機能を追加することを開発者にとって容易にします。 Dockerを使用すると、ASP.NET CoreアプリケーションをIronSecureDocで統合して、デプロイとスケーリングを簡素化する統一環境でカプセル化することができます。 それを実行するには、ASP.NET CoreアプリケーションをIronSecureDocライブラリおよびおそらく他のインストールスクリプトや設定を必要となるものとして構成するDockerfileを構築します。

Docker Compose ネットワーク (開発者向けの仕組み): 図 2 - IronSecureDoc

また、サービス依存関係、環境変数、マップされたポートを含む docker-compose.yml ファイルも含まれており、これによりこれへのアクセスが提供されます。 したがって、ドキュメントのセキュリティに関連するタスクが管理しやすくなり、開発または本番で使用されるものとは異なる外部で効率的かつ効果的にWebアプリケーションを実行できるようにします。 Dockerの場合のように、IronSecureDocをインストールおよび設定することで、ドキュメントの暗号化、編集などで提供されるすべての機能を活用する必要があります。

IronSecureDocのインストールと実行

次のコマンドをコマンドプロンプトまたはオープンなターミナルウィンドウで実行して、リポジトリからIronSecureDoc Dockerイメージを取得してください。

# Pull IronSecureDoc Docker image
docker pull ironsoftwareofficial/ironsecuredoc
# Pull IronSecureDoc Docker image
docker pull ironsoftwareofficial/ironsecuredoc
SHELL

Docker Compose ネットワーク (開発者向けの仕組み): 図 3

Dockerリポジトリからイメージを取得した後、別のコマンドを使用してIronSecureDocを稼働中のコンテナとして起動できます。

# Run a container with network isolation and environment variables
docker container run --rm -p 8080:8080 \
  -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> \
  -e ENVIRONMENT=Development \
  -e HTTP_PORTS=8080 \
  ironsoftwareofficial/ironsecuredoc:latest
# Run a container with network isolation and environment variables
docker container run --rm -p 8080:8080 \
  -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> \
  -e ENVIRONMENT=Development \
  -e HTTP_PORTS=8080 \
  ironsoftwareofficial/ironsecuredoc:latest
SHELL

上記のDocker runコマンドは、IronSecureDocのコンテナインスタンスを起動します。 ネットワーク隔離にはブリッジネットワークが想定されています。 これにより、フラグ -p 8080:8080 を使用して、コンテナー内で公開されているサービスへの外部アクセスも可能になります。 これは、ホストのネットワークのポート8080にコンテナのネットワークのポート8080で実行されている内部サービスを公開します。

コンテナはデフォルトでDockerのブリッジネットワークで実行されるため、他のコンテナや外界から隔離されますが、ここで指定したポートマッピングを通じて公開すると、他のコンテナや外界にアクセスできます。 渡される環境変数 (HTTP_PORTS) は、コンテナ内でのアプリケーションの動作を構成します。 --rm フラグにより​​、コンテナは停止時に削除されます。

このセットアップの利点は、ブリッジネットワークがコンテナを隔離し、内部でサービスを接続する一方で、ポートマッピングがホストマシンからコンテナのサービスへの外部トラフィックをブリッジすることで、アクセスを容易にします。

Docker Compose ネットワーク (開発者向けの仕組み): 図 4

Docker Network PortでIronSecureDocを使用する

IronSecureDocのREST APIは、Dockerでインストールおよび起動した際に、文書編集、認証、暗号化をユーザーに提供します。 詳細な手順については、こちらのドキュメントを参照してください。

たとえば、文書を暗号化のために提出するには、IronSecureDoc APIにPOSTリクエストを行うことができます。

# POST a document for encryption using cURL
curl -X 'POST' \
  'http://localhost:8080/v1/document-services/pdfs/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
# POST a document for encryption using cURL
curl -X 'POST' \
  'http://localhost:8080/v1/document-services/pdfs/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
SHELL

このコマンドは、文書がIronSecureDocに自動的に送信され、適切に暗号化されるようになります。

結論

Dockerネットワーキングは、アプリケーション相互の関係と他のアプリケーションや世界との通信を制御するために重要であり、異なるドライバや設定を通じて多様なアプリケーションのニーズに応えます。 デフォルトのブリッジネットワーク構成は基本的な分離を可能にし、IronSecureDocアプリケーションのように、サービスをホストシステムにポートマッピングを通じて公開できます。 コンテナ化されたアプリケーションの管理と設定を容易にし、アプリケーションの運用の柔軟性とスケーラビリティを強化します。

IronSecureDocは、コンテナ化の観点からDockerの機能を利用し、高速で信頼性のあるアプリケーションデプロイを可能にする高度な文書処理ツールです。 これにより、複数の環境をサポートしながら、DockerネットワーキングとIronSecureDocをシームレスに統合し、アプリケーションの統合を容易にし、アクセス可能かつ管理しやすくなります。

結果として、ワークフローを効率的に整理し、運用を改善し、特に文書処理において操作性を向上させます。 これにより、開発およびデプロイメントの体験が豊かになり、現代のソフトウェアアプリケーションにとって価値あるソリューションとなります。 IronSecureDocのライセンスに関する詳細情報については、このページをご覧ください。 Iron Softwareの多くの商品提供に関する詳細については、このリンクを参照してください。

よくある質問

Docker Compose ネットワークはどのようにサービスの通信を促進するか?

Docker Compose ネットワークは Docker Compose アプリケーション内のサービスがホスト名としてサービス名を使用して通信できるようにし、同じ閉じ込められた環境内での相互作用を可能にする。

Docker Compose におけるデフォルトブリッジネットワークの役割は何か?

Docker によって自動的に作成されるデフォルトのブリッジネットワークは、特定のネットワークが定義されていない場合でも、コンテナがサービス名をホスト名として使用して互いに通信することを可能にする。

カスタムネットワークは Docker Compose アプリケーションをどのように強化できるか?

Docker Compose のカスタムネットワークは、隔離や選択的なサービス間の通信を可能にし、docker-compose.yml ファイル内で定義されることでアプリケーションを強化する。

Docker ネットワークドライバーにはどのような種類があり、それらの用途は何か?

ブリッジ、ホスト、オーバーレイ、なし、Macvlan、Ipvlan などの Docker ネットワークドライバーは、隔離、接続性、パフォーマンスの異なるレベルを提供し、さまざまなアプリケーションのニーズに適している。

オーバーレイネットワークドライバーはどのようにマルチホスト通信をサポートするか?

オーバーレイネットワークドライバーは、複数のホストにわたってコンテナを接続し、仮想ネットワークを通じてセキュアな通信を提供し、主に Docker Swarm や Kubernetes 環境で使用される。

コンテナ環境でのセキュアなドキュメント処理はなぜ重要か?

IronSecureDoc を使用したようなセキュアなドキュメント処理は、Docker のネットワーキング機能を活用して、効率的なアプリケーションのカプセル化、デプロイ、スケーリングを可能にするため、コンテナ環境で重要である。

Docker を使用してセキュアなドキュメント処理をどのようにセットアップできるか?

コンテナ内の IronSecureDoc などのツールをデプロイし、Dockerfile や docker-compose.yml を通じてネットワーク隔離のための環境を設定することにより、Docker でセキュアなドキュメント処理をセットアップできる。

Docker 内で REST API を使用してドキュメントを暗号化するためにはどのような手順が必要か?

コンテナ化されたセットアップを使用して、cURL などのツールを使用し、ドキュメントとパラメーターをセキュアなドキュメント処理 API に POST リクエストを送信することにより、Docker 内で REST API を介してドキュメントを暗号化する。

Docker のネットワーキング機能はアプリケーションのスケーラビリティをどのように向上させるか?

Docker のネットワーキング機能は、サービス間の相互作用と通信の効率的な管理を可能にし、ワークフローやデプロイ体験を合理化することでアプリケーションのスケーラビリティを向上させる。

既存の Docker システムに IronSecureDoc を統合するプロセスは何か?

Docker コマンドを使用してセットアップを行い、ポートマッピングや環境変数を利用して一貫したデプロイとスケーリングを確保することにより、既存の Docker システムに IronSecureDoc を統合する。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me