使用 IRONSECUREDOC

Docker Compose 网络(面向开发人员的工作原理)

发布 2024年十二月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 文件中定义自定义网络。通过为这些网络分配服务,你可以控制容器的通信方式:

  • 内部网络将服务与其他服务隔离。
  • 多重网络允许某些服务相互通信,同时拒绝其他服务访问。

    服务发现: 每个服务在配置中都会获得与其名称相同的主机名。 例如,在网络服务中,您可以使用 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#

busy box 容器无法访问互联网,也无法向自己网络中的其他容器或外部世界发出呼叫。

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 地址,而不是依赖于第 2 层。(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 文件,从而提供对这些内容的访问。 因此,文件安全所涉及的任务更易于管理,这样您的网络应用程序就能在开发或生产中使用的网络应用程序之外高效运行。 安装和配置 IronSecureDoc 就像安装 Docker 一样,必须正确安装和配置 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 的容器实例。 假设使用桥接网络进行网络隔离。 这样还可以通过 http://localhost:8080,使用标志-p 8080: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 刚刚发布

免费下载查看许可证 >