IRONSECUREDOCの使用

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

チャクニット・ビン
チャクニット・ビン
2024年12月16日
共有:

Dockerとは何ですか?

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

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

コンテナは、ホストシステムのオペレーティングシステムカーネルを共有するため、仮想マシン(VM)のように伝統的な振る舞いをしません。 そのため、コンテナはより効率的で、より早く開始することができます。 実際、Dockerコンテナは、開発サイクルのすべての段階で一貫した動作を保証します。

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

Docker compose networksとは何ですか?

Docker Composeネットワークは、Docker Composeアプリケーションで実行されているサービスが、同じカプセル化された環境内で互いに通信できるようにします。 docker-compose.ymlファイルで複数のサービスを定義した場合、Docker Composeはデフォルトのネットワークを自動的に作成し、これらのサービスがホスト名としてサービス名を使用して互いに通信できるようにします。 基本的に、ユーザーは独自のネットワークを定義し、作成したネットワークで複数のサービスを利用することができます。

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

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

  • 内部ネットワークは、サービスを他から隔離します。
  • 複数のネットワークは、あるサービスが互いに通信できるようにする一方で、他のサービスはそのようなアクセスを拒否します。

    サービスディスカバリー: すべてのサービスは、設定内の名前と等しいホスト名を取得します。 つまり、あるコンテナ内の別のサービスを、別のサービス名を使用して参照することができます。たとえば、Webサービスでは、データベース・コンテナのIPを参照するためにdbを使用します。

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

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

Dockerネットワークドライバは、コンテナ同士や他のコンテナやシステムとの接続や通信について説明します。 様々なユースケースがあり、ネットワーク・ドライバはこれらのケースに適用することができ、それぞれ異なるレベルの分離、接続性、パフォーマンスを提供します。 それぞれのネットワーク・ドライバについて、使い方を説明します。

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

ブリッジ (デフォルト)

内部 docker ネットワークは、コンテナが 1 つのホストをベースに他のコンテナと通信できるようにします。ネットワークを指定せずにコンテナを起動した場合、Dockerはデフォルトのブリッジネットワークを使用します。

docker network create --driver bridge my_bridge_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

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

ホスト

ホスト・ドライバを使用すると、コンテナはホストのネットワーク・スタックを直接共有するため、コンテナは独自のカスタム・ネットワーク・アイソレーションを取得しません。

docker run -d --network host nginx

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

オーバーレイ

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

docker network create -d overlay my_overlay_network
docker service create --name web --network my_overlay_network nginx

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

なし:

このノンドライバは、コンテナのネットワーキングを無効にします。 このコンテナは、あらゆる種類の外部ネットワーク通信から隔離されています。

docker run -d --network none busybox sleep 3600

ビジーボックスコンテナは、インターネットにアクセスできず、自ネットワークや外部世界の他のコンテナに呼び出しを送信することはできません。

Macvlan

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

docker network create -d macvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 \
  -o parent=eth0 macvlan_network
docker run -d --network macvlan_network busybox sleep 3600

IPvlan

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

docker network create -d ipvlan \
  --subnet=192.168.1.0/24 \
  --gateway=192.168.1.1 ipvlan_network
docker run -d --network ipvlan_network busybox sleep 3600

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

カスタムプラグイン

Dockerのカスタムプラグインは、Dockerがデフォルトで提供する以上のネットワーク機能に関する精巧な機能を提供する、サードパーティまたはユーザーが開発したネットワークドライバです。 サードパーティのDockerプラグイン外部ネットワーキングソリューションフレームワークは、DockerコンテナがSoftware-Defined Networkingのようないくつかの有名なフレームワークにアクセスし、連携することを可能にし、それによってセキュリティ、スケーラビリティ、マルチホストネットワーキングなどの開発者の能力を向上させます。 Dockerは、開発者やベンダーにネットワークプラグインのための汎用性の高いアーキテクチャを提供し、ネイティブドライバと同じようにDockerをインストールして使用できるようにします。

IronSecureDoc

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

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

また、docker-compose.yml ファイルには、サービスの依存関係、環境変数、およびマッピングされたポートが含まれており、これらにアクセスできるようになっています。 そのため、ドキュメントのセキュリティに関わる作業は、開発または本番で使用されるもの以外のウェブアプリケーションが効率的かつ効果的に動作するように、管理を容易にします。 IronSecureDocのインストールと設定 Dockerの場合と同様に、IronSecureDocの適切なインストールと設定は、ドキュメントの暗号化、再編集などによって提供されるすべての機能を利用するために必要です。

IronSecureDocのインストールと実行

IronSecureDoc Dockerイメージがリポジトリから取得されるように、コマンドプロンプトまたは開いているターミナルウィンドウで以下のコマンドを実行してください。

docker pull ironsoftwareofficial/ironsecuredoc

Docker Composeネットワーク(開発者にとっての仕組み):図3

Dockerコンテナからイメージを取り出した後、別のコマンドを使用して、別のオペレーティング・コンテナであるIronSecureDocを起動することができます。

docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest

上記のDocker runコマンドはIronSecureDocのコンテナインスタンスを表示します。 ネットワーク分離のため、ブリッジネットワークを想定しています。 これにより、フラグ—p 8080:8080を使用して、http://localhost:8080を通じてコンテナ内で公開されているサービスへの外部アクセスが可能になります。 これは、コンテナのネットワークの8080番ポートで実行されている内部サービスを、ホストの既存のネットワークの8080番ポートで、独自のネットワーク上に公開します。

コンテナはデフォルトではDockerのブリッジネットワーク上で動作しているため、ポートマッピングを使用してコンテナを公開しない限り、他のコンテナや外界から隔離されています。 IronSecureDoc Proxy、ENVIRONMENT、HTTP_PORTSで渡される環境変数は、コンテナでのアプリケーションの動作を設定する。 このフラグは、コンテナが停止したときに削除されるようにします。

このセットアップには、ブリッジネットワークがコンテナ接続サービスを内部的に分離するのに対し、ポートマッピングがホストマシンからコンテナのサービスに外部トラフィックを橋渡しするため、アクセスが容易になるという利点があります。

Docker Compose ネットワーク(開発者にとっての仕組み):図 4

DockerネットワークポートでIronSecureDocを使う

IronSecureDocのREST APIは、Dockerへのインストールと起動時に、ドキュメントの再編集、認証、暗号化を可能にします; 他でも言及されています。 こちらがドキュメントへのリンクです。

Docker Compose ネットワーク(開発者にとっての仕組み):図 5

例えば、暗号化のためにドキュメントを送信するには、IronSecureDoc APIにPOSTを実行します:

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'

IronSecureDocに自動的にドキュメントが送信され、適切に暗号化されます。

結論

一般的に、Dockerネットワーキングは、多様なアプリケーションのニーズの異なるドライバや構成を通じて、アプリケーションアプリケーションと他のアプリケーションやその他の世界との相互作用を制御する上で重要です。 デフォルトのブリッジネットワーク構成では、IronSecureDocアプリケーションの場合のように、ポートマッピングによってサービスをホストシステムに公開することができるため、非常に基本的な分離を行うことができます。 コンテナ化されたアプリケーションの管理と設定を容易にすることで、アプリケーションの運用の柔軟性とスケーラビリティが向上するからです。

高度な文書処理ツールであるIronSecureDocは、コンテナ化という点でDockerの機能を常に使用する準備ができています。 つまり、スピードと信頼性をもってアプリを展開し、環境アプリケーションのサポートが本質的に均一である一方で、複数の環境のサポートを保証することです。 それはDockerネットワーキングとIronSecureDocを統合し、アプリケーションの統合が簡単で、アクセス可能で、管理される。

したがって、ドキュメントを処理する際の作業の効率と成果を向上させるために、ワークフローをはるかに合理化します。 そうすることで、最終的には、開発とデプロイの両方のエクスペリエンスが向上し、最新のソフトウェア・アプリケーションにとって価値あるソリューションになります。 IronSecureDocのライセンスに関する詳細情報については、このページをご覧ください。 Iron Software の製品提供について詳しく知りたい場合は、このリンクをフォローしてください。

チャクニット・ビン
ソフトウェアエンジニア
ChaknithはIronXLとIronBarcodeで作業しています。彼はC#と.NETに深い専門知識を持ち、ソフトウェアの改善と顧客サポートを支援しています。ユーザーとの対話から得た彼の洞察は、より良い製品、文書、および全体的な体験に貢献しています。
< 以前
Nextcloud Docker Compose(開発者向けの仕組み)
次へ >
Dockerイメージからコンテナを起動する (開発者チュートリアル)