【Docker】网络概述 no.20

パンプキン カフェ (9).png

你好。我是Mayumi。

我正在撰写一系列关于Docker的文章。

我计划在本篇文章中简单概述关于Docker网络的主题。

在真实的应用开发中,通常会使用两个或更多容器相互通信,并进行开发。

所以

    • WWWを使って外部とつながる時

 

    • ホストマシーンとつながる時

 

    ほかのコンテナとつながる時

我会分成几个部分来解释。

好的,我们开始吧。 de, ba.)

当连接到外网时

当你想要从容器中通过网络连接到外部(例如使用API)时,非常简单。

你可以使用API而无需进行任何特别操作

当与本地主机连接时

比如说,当你想要将数据库放在本地主机上,并与容器连接时。

使用特殊域名(host.docker.internal)。

当您正在开发使用node.js和mongodb的应用程序时,您可以将下面代码中的<つなげたい先>更改为host.docker.internal。

mongoose.connect("mongodb://<つなげたい先>")

如果您希望在Docker文档中查看,请点击此处。

当与其他容器连接时

制作容器时的最佳实践是什么?

每个容器一个任务

有人说(在Web服务器的容器和数据库的容器中,分别创建独立的容器)。

因此,在应用程序开发中,有很多情况需要创建多个容器并连接使用。

本次文章是假设使用node.app和monogodb来组合制作应用程序。

为了连接容器和容器

我将写出应该怎么做的选项。

node app.png

连接两个以上的容器有两种方法。

下面我会分别写出两个选项。

使用IP地址与其他容器进行连接

Docker Hub上有官方的Mongo镜像,所以我们将使用官方的镜像而不是从Dockerfile创建。

2021-06-27_11-08-12.png
docker run -d --name mongodb mongo

我使用 Detach 模式从 mongo 镜像创建了一个容器。

由于Mongo在后台运行,所以可以保持原状。

docker container inspect mongodb

请查看详细信息。

随后会出现大量信息,其中包括【”网络设置” > “IP地址”】。

请找到它(请参考下面的截图)。

2021-06-28_13-01-43.png

请将源代码的地址粘贴在表示的位置上。

2021-06-28_13-03-46.png

使用这个IP地址,你可以连接到MongoDB容器。

但是,要查找IP地址真是很麻烦的事情呢。

还有另一种与其他容器连接的方法。

我将在下面写出该方法。

将其置于同一网络中

将两个Container连接起来的另一种方法是将它们放置在同一个网络中。

为了将两个以上的容器放入同一个网络中,可以使用”–network”参数。

建立网络

使用`network`选项可以将两个或多个容器放入相同的网络中,但在此之前需要创建网络本身。

docker network create <好きな名前>

请键入「と」命令,首先建立网络。

随后

docker run --name <containerの名前> --network <ネットワークの名前> <ImageID>

只需要一个选项: 假设 (顺便提一下,您可以使用–name选项为容器命名。在接下来的进程中需要知道容器的名称,请记住容器的名字。)

实际执行命令的过程可见下面的截图。

2021-06-28_15-14-07.png

这样MongoDB容器就启动了。

然后,为了将此mongodb容器与Node应用程序连接起来,需要按照下面的代码进行修改。

2021-06-28_13-46-40.png

请在上面的截图中红框内的部分,输入之前使用 –name 选项创建容器时指定的容器名称。

2つ以上のContainerを同じネットワーク内に入れることで、『Containerの名前によって』Container同士をつなげることができるようになります

由于我们要连接两个容器,所以在同一个网络中运行了两个容器(使用“–network my-net”选项)。请参考下方截图。

2021-06-28_15-33-50.png

如果docker logs出现类似的警告,表示运行良好。

要连接同一网络内的容器,不是使用”-p”命令,而是通过容器名称来进行识别。

概述

这篇文章需要一些关于MongoDB的知识,所以花费了一些时间来整理。(我认为如果你知道如何使用mongoose.connect,就能很顺利地阅读这篇文章)

然而,在实际场景中,我认为多数情况下需要让两个或更多个容器之间相互进行通信来进行开发。

希望这篇文章能对您有所帮助。

广告
将在 10 秒后关闭
bannerAds