Docker基础-20-网络-容器link关系和新建bridge网络

本篇来学习几个docker的使用不是很频繁的知识点。第一个是容器之间的link操作,第二个是如何把容器连接到我们自己新建的bridge网络,我们前面知道,默认容器启动之后都是连接到docker0这个bridge网络,这里我们来演示下连接到我们自定义的bridge网络。

 

容器之间link关系

 

一般使用link的场景是这样的,加入在一个企业环境中,我们有一个mysql的服务的容器mysql_1,还有一个web应用程序web_1,在开发中,肯定web_1这台容器肯定要连接mysql_1这个数据库。前面网络命名空间的知识告诉我们,两个容器需要能通信,需要知道对方的具体的IP地址。生产环境还比较好,IP地址很少变化,但是在我们内部测试环境,容器部署的IP地址是可能不断变化的,所以,开发人员不能在代码中写死数据库的IP地址。这个时候,我们就可以利用容器之间link来解决这个问题。下面,我们来介绍如何通过容器名称来进行ping,而不是通过IP地址。

 

和前面一页,我们启动两个busybox的容器,分别是test1和test2,我们IP地址是可以ping同,但是如果test1 ping test2是行不通的。

下面,学习一个docker link命令,把test1容器和test2容器关联起来。然后再来测试下ping test2行不行。为了模拟link的操作,我们先把test2容器给停止并删除,然后注意下test2容器启动命令变化。

docker run -d --name=test2 --link test1 busybox /bin/sh -c "while true; do sleep 3600; done"

这个启动命令,比之前加了—link test1 参数。下面我们再次进入test2中通过test1来ping(注意这里是反过来,test2里ping test1)

上面link命令,是test2启动link了test1容器,所以,只能在test2里面通过test1去ping,link的作用相当于添加了DNS解析。这里提醒下,你去test1里是不同ping test2的,因为link关系是单向的,不可逆。

 

如果创建一个自定义bridge网络,并往上面连接容器。

上面命令参数-d 是指DRIVER的类型,后面的my-bridge是network的自定义名称,这个和docker0是类似的。下面开始介绍,如何把容器连接到my-bridge这个网络。

 

启动容器过程中指定连接到my-bridge网络

下面,我们来启动一个busybox的容器test3,并通过参数network connect来连接my-bridge网络。

在启动容器test3之前,我们查看目前还没有容器连接到了my-bridge这个网络上。

docker run -d --name test3 --network my-bridge busybox /bin/sh -c "while true; do sleep 3600; done"

那边接口vethf0a24eb是不是test3这个容器,test3容器查询这个接口是外层的eth0@if18.

我们在外层linux本机上输入ip link。

然后利用docker network inspect my-bridge看看Containers下有没有test3

这里看test3容器连接到了my-bridge网络,IP地址网段都变成了18这个网段。

 

如果把一个运行中容器连接到my-bridge网络

这里需要使用docker network connect命令

这样就把容器test2连接到了bridge 网络my-bridge。

也可以查看my-bridge的inspect命令: docker network inspect my-bridge

也可以在查看bridge的inspect内容:docker network inspect bridge,可以看到test2既在bridge这个网络,也在my-bridge网络中。

 

本篇就学习两个知识点,一个容器之间的link关系,这种link是单方向有效,不可逆。第二个是新建bridge网络,并把容器添加到新建的bridge网络。

Docker是一种基于容器的虚拟化技术,它提供了一种轻量级的容器化解决方案,可以将应用程序及其依赖项打包到一个可移植的容器中,以便在任何地方运行。在Docker中,容器之间的通信是通过网络实现的,在本文中,我们将详细介绍Docker中的网络通信。 Docker中的网络类型 Docker提供了四种不同类型的网络,分别是: 1. 桥接网络Bridge Network):桥接网络Docker的默认网络,它允许容器之间相互通信,并且可以与主机通信。在桥接网络中,每个容器都有一个独立的IP地址,并且可以通过容器名称或IP地址进行访问。 2. 主机网络(Host Network):主机网络容器直接连接到主机网络上,容器与主机共享同一个网络接口和IP地址,因此可以与主机网络上的其他设备进行通信。 3. 网络绑定(None Network):网络绑定不为容器配置任何网络,这意味着容器无法通过网络与外界进行通信。通常,这种网络类型用于测试和调试容器应用程序。 4. Overlay网络(Overlay Network):Overlay网络用于跨主机容器之间的通信。它允许在多个主机上运行分布式应用程序,并提供了自动发现和负载均衡的功能。 Docker网络配置 在Docker中,可以使用docker network命令来管理网络。可以使用以下命令创建一个新的桥接网络: ``` docker network create my-network ``` 可以通过以下命令将容器添加到网络中: ``` docker run --name my-container --network my-network my-image ``` 在此命令中,--network选项指定要将容器添加到的网络名称。 可以使用以下命令列出所有可用的网络: ``` docker network ls ``` 可以使用以下命令查看特定网络的详细信息: ``` docker network inspect my-network ``` 在Docker中,还可以使用--link选项将一个容器链接到另一个容器。这将创建一个虚拟网络接口,允许容器之间进行通信。以下命令将容器my-container链接到容器my-other-container: ``` docker run --name my-container --link my-other-container my-image ``` 在此命令中,--link选项指定要链接的容器名称。 总结 在Docker中,容器之间的通信是通过网络实现的。Docker提供了四种不同类型的网络,包括桥接网络、主机网络网络绑定和Overlay网络。可以使用docker network命令来管理网络,可以使用--link选项将一个容器链接到另一个容器
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值