使用 IRONSECUREDOC

Docker Compose 網路(對開發者的運作方式)

發佈 2024年12月16日
分享:

什麼是Docker

Docker 是一個開放原始碼平台,利用容器化概念自動化應用程式的部署與擴展,並運行在輕量級、可攜式的容器中。 簡單來說,Docker 容器將所有應用程式代碼及其依賴項一起放置在一個單元中,並在環境之間保持一致,從開發者的筆記本電腦到測試伺服器或生產雲伺服器。

Docker Compose 網路(對開發者的運作方式):圖 1

容器的行為不同於傳統的虛擬機器 (虛擬機)因為它們共享主機系統的操作系統核心。 因此,容器啟動起來更有效率且更快速。 確實,Docker 容器保證了開發周期中所有階段的一致行為。

事實上,Docker 映像是描述容器的模板,這些容器包含應用程式環境。 此套件還包含管理容器生命週期的工具組。 一個例子是 Docker Compose,你可以用來編排由多個容器組成的應用程式。 然後是 Docker Hub,一個用於共享映像的註冊表。

什麼是 Docker compose 網路?

Docker Compose 網路允許在 Docker Compose 應用程式中運行的服務在相同的封裝環境內相互通信。 如果您在 docker-compose.yml 文件中定義多個服務,Docker Compose 會自動創建一個默認網路,以便這些服務可以使用服務名作為主機名相互通信。 基本上允許用戶自定義他們自己的網路,並在建立的網路中使用多個服務。

預設橋接網路: 如果在執行 docker-compose up 時未為容器定義任何網路,Docker 會自動創建一個橋接網路。 在此預設驅動網路上,所有容器可以使用其服務名稱作為主機名稱互相通信。

自定義網路: 通過這些選項,使用者可以定義一個或兩個自定義網路,甚至更多的用戶自定義網路。 您可以在容器的端口和 docker-compose.yml 文件中定義自訂網路。藉由將服務分配到這些網路上,您可以控制容器之間的通訊方式:

  • 內部網路將服務與其他網路隔離。
  • 多個網路允許某些服務彼此通信,同時拒絕其他服務的此類訪問。

    服務發現: 每個服務都會獲得一個等同於其在配置中名稱的主機名。 也就是說,您可以在一個容器中使用其他服務的名稱來引用另一個服務,例如在 web 服務中,您可以使用 db 來引用數據庫容器的 IP。

    網路模式: 您也可以設定網路模式以使用主機、橋接或無任何服務。 最常使用的是橋接器,它隔離了容器流量。

什麼是 Docker 網路驅動程式?

Docker 網路驅動程式描述容器之間,及與其他容器和系統之間的連接和通信。 各種使用案例中,網路驅動程式可應用於這些情況,每一種都提供不同程度的隔離性、連接性和效能。 我們將逐一介紹每個網路驅動程式並解釋其用途。

Docker 網路驅動類型

橋樑(預設)

內部 Docker 網路允許容器基於單一主機彼此通信。如果在啟動容器時未指定網路,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
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
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'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
VB   C#

在這裡,可以使用服務名稱進行通信,比如 ping container1 和 container2。

主機

使用主機驅動程式時,容器直接共享主機的網路堆疊,因此容器不會獲得自己的自訂網路隔離。

docker run -d --network host nginx
docker run -d --network host nginx
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker run -d --network host nginx
VB   C#

NGINX 容器現在共享主機的 IP 和網路介面,因此繞過了網路隔離。

疊加

它連接橫跨多個主機的容器,主要用於 Docker Swarm 或 Kubernetes 環境中,通過容器將實體或虛擬機器連接起來,使用虛擬網絡進行安全通信。

docker network create -d overlay my_overlay_network
docker service create --name web --network my_overlay_network nginx
docker network create -d overlay my_overlay_network
docker service create --name web --network my_overlay_network nginx
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker network create -d overlay my_overlay_network docker service create --name web --network my_overlay_network nginx
VB   C#

這會在 Swarm 叢集中創建一個可以跨多個 Docker 主機擴展的服務。

:

此非驅動程式禁用容器的網路功能。 此容器與任何形式的外部網絡通信隔離。

docker run -d --network none busybox sleep 3600
docker run -d --network none busybox sleep 3600
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker run -d --network none busybox sleep 3600
VB   C#

繁忙的箱型容器將無法連接到互聯網,也無法向自身網路中的其他容器或外界發出呼叫。

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
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
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'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
VB   C#

IPvlan

IPvlan 驅動程式類似於 Macvlan,但著重於分配 IP 位址,而不是依賴於第二層網路協定。(MAC地址). 它允許多個容器共享相同的網路介面。

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
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
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'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
VB   C#

它將與我的網路共用主機的第2層以太網介面,但具有不同的IP位址。

自定義插件

Docker 的自訂插件是第三方或用戶開發的網路驅動程式,提供複雜的網路能力功能,超出了 Docker 作為預設所提供的功能。 第三方 Docker 插件外部網路解決方案框架允許 Docker 容器訪問並連接到一些知名框架,如軟體定義網路,從而增強開發人員的功能,如安全性、可擴展性以及多主機網絡。 Docker 為開發人員和供應商提供了一個多功能的網路插件架構,允許他們以與本機驅動類似的方式安裝和使用 Docker。

IronSecureDoc

IronSecureDoc for Docker 讓開發者能輕鬆將安全的文件處理功能添加到其容器化應用程式中。 使用 Docker,您可以在統一的環境中封裝您的 ASP.NET Core 應用程式與 IronSecureDoc,以簡化部署與擴展。 要讓它運行,您需要建立一個 Dockerfile,該文件使用 IronSecureDoc 庫來組合您的 ASP.NET Core 應用程式,並可能需要其他安裝腳本或配置來確保運行。

Docker Compose 網路 (開發人員如何運作):圖 2 - IronSecureDoc

它還包含一個 docker-compose.yml 檔案,其中包括服務相依性、環境變數和對應的端口,從而提供訪問。 因此,涉及文件安全的任務變得更容易管理,從而使您的網路應用程式在開發或生產之外的環境中高效運行。 在 Docker 的情況下安裝和配置 IronSecureDoc,正確的安裝和配置 IronSecureDoc 是必要的,以便充分利用文件加密、編輯等所提供的所有功能。

安裝及運行IronSecureDoc

在命令提示符或開啟的終端窗口中運行以下命令,以從儲存庫中獲取 IronSecureDoc Docker 映像。

docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker pull ironsoftwareofficial/ironsecuredoc
VB   C#

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 container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
VB   C#

上面的 Docker 運行命令將啟動一個 IronSecureDoc 的容器實例。 假定橋接網路用於網路隔離。 這也允許通過使用旗標 -p 8080:8080 在 http://localhost:8080 訪問容器內的服務。 這會將容器網路內部運行於8080端口的服務暴露,在其自身的網路上,於主機現有網路的8080端口。

容器預設運行在 Docker 的橋接網路上,因此它們與其他容器和外部世界隔離,除非您通過埠映射將它們暴露,就像您在此處所做的那樣。 被傳遞的環境變數 IronSecureDoc_LicenseKey、ENVIRONMENT、HTTP_PORTS - 配置容器中應用程式的行為。 此旗標會在容器停止時將其移除。

此設置的優勢在於,橋接網路在內部隔離容器連接服務,而端口映射則將外部流量從主機引入容器的服務中,從而使訪問變得簡單。

Docker Compose 網路(開發人員如何運作):圖 4

使用 IronSecuredoc 與 Docker 網路埠

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'
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'
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'curl -X 'POST' \ 'http: -H 'accept: */ *' \ -H 'Content-Type: multipart/form-data' \ -F 'pdf_file=@test.pdf;type=application/pdf'
VB   C#

這將自動將文件發送到IronSecureDoc,在那裡它將被適當加密。

結論

通常,Docker 網路在控制應用程式的應用及其與其他應用程式以及世界其他部分的交互作用中扮演著重要角色,這是通過不同的驅動程序和各種應用需求的配置實現的。 預設的橋接網路配置允許達到非常基本的隔離,因為服務可以透過端口映射暴露給主機系統,就像 IronSecureDoc 應用程式的情況一樣。 它促進了對容器化應用程式的更容易管理和配置,因為這增強了應用程式的操作靈活性和可擴展性。

IronSecureDoc 這款先進的文件處理工具,隨時準備好利用 Docker 在容器化方面的能力。 這意味著以速度和可靠性部署應用程式,保證支援多種環境,同時環境應用支援本質上也是一致的。 它將 Docker 網路整合到 IronSecureDoc 中,使應用程式的整合變得簡單、易於訪問且易於管理;

因此,它能更好地簡化工作流程,以提高效率並改善操作中的文檔處理結果。 這最終將增強開發和部署的體驗,因此,使其成為現代軟體應用程式的一個有價值的解決方案。 如需獲取有關IronSecureDoc許可的更多信息,請遵循此操作頁面. 要了解有關 Iron Software 許多產品的更多信息,請遵循此連結連結.

< 上一頁
Nextcloud Docker Compose(它如何為開發人員工作)
下一個 >
從映像啟動 Docker 容器(開發者教程)

準備開始了嗎? 版本: 2024.10 剛剛發布

免費下載 查看許可證 >