docker容器互联的两种方式

如果你之前有 Docker 使用经验,你可能已经习惯了使用 --link 参数来使容器互联。

随着 Docker 网络的完善,强烈建议大家将容器加入自定义的 Docker 网络来连接多个容器,而不是使用 --link 参数。

使用--link

在Docker中,--link参数用于将一个容器链接到另一个容器。这使得两个容器可以相互通信,而不需要暴露它们的端口给外部网络。

使用--link参数的一般语法为:

docker run --link <name or id>:<alias> <image>

其中,<name or id>是要链接的容器的名称或ID,<alias>是要为链接容器指定的别名,<image>是要运行的镜像。

例如,如果要将一个名为mysql的MySQL容器链接到一个名为webapp的Web应用程序容器,可以使用以下命令:

docker run --name webapp --link mysql:db mywebapp

这将创建一个名为webapp的新容器,并将其链接到名为mysql的现有容器,并将别名db分配给链接。在webapp容器中,可以使用db作为MySQL容器的主机名来访问MySQL服务,例如:

import pymysql

conn = pymysql.connect(host='db', port=3306, user='root', passwd='password', db='mydb')

在这个例子中,db是在--link参数中指定的别名,而不是MySQL容器的实际主机名。

使用--network

#新建网络

下面先创建一个新的 Docker 网络。

$ docker network create -d bridge my-net

-d 参数指定 Docker 网络类型,有 bridge overlay。其中 overlay 网络类型用于 Swarm mode,在本小节中你可以忽略它。

#连接容器

运行一个容器并连接到新建的 my-net 网络

$ docker run -it --rm --name busybox1 --network my-net busybox sh

打开新的终端,再运行一个容器并加入到 my-net 网络

$ docker run -it --rm --name busybox2 --network my-net busybox sh

再打开一个新的终端查看容器信息

$ docker container ls

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
b47060aca56b        busybox             "sh"                11 minutes ago      Up 11 minutes                           busybox2
8720575823ec        busybox             "sh"                16 minutes ago      Up 16 minutes                           busybox1

下面通过 ping 来证明 busybox1 容器和 busybox2 容器建立了互联关系。

busybox1 容器输入以下命令

/ # ping busybox2
PING busybox2 (172.19.0.3): 56 data bytes
64 bytes from 172.19.0.3: seq=0 ttl=64 time=0.072 ms
64 bytes from 172.19.0.3: seq=1 ttl=64 time=0.118 ms

用 ping 来测试连接 busybox2 容器,它会解析成 172.19.0.3

同理在 busybox2 容器执行 ping busybox1,也会成功连接到。

/ # ping busybox1
PING busybox1 (172.19.0.2): 56 data bytes
64 bytes from 172.19.0.2: seq=0 ttl=64 time=0.064 ms
64 bytes from 172.19.0.2: seq=1 ttl=64 time=0.143 ms

这样,busybox1 容器和 busybox2 容器建立了互联关系。

#Docker Compose

如果你有多个容器之间需要互相连接,推荐使用 Docker Compose

猜你喜欢

转载自blog.csdn.net/a772304419/article/details/131502770