Docker网络-实战|两种常用的跨主机Docker容器互通方法

实战|两种常用的跨主机Docker容器互通方法

基础环境准备

安装Docker

点击链接安装Docker

下载演示镜像

Docker官方在https://hub.docker.com/中提供了很多镜像,你可以根据自己的需要选择并下载,也可以自行安装Docker镜像仓库,此处我就直接下载使用docker hub中提供的ubuntu官方镜像进行后续演示;

[root@docker-host-01 ~]# docker pull ubuntu

镜像在两台Docker主机中都下载,当然如果网速慢的话,可以下载一个,然后使用docker save 打包镜像,将镜像传到第二台机器上,在用docker load导入镜像。方法很多,适合你的才是最好的。

镜像下载完成,使用docker images命令查看。

[root@docker-host-01 ~]# docker images

1.通过直接路由方式实现跨主机Docker容器通信

img

直接路由这种方式操作起来比较简单,对Docker原生网络改变最小,只需要互相指定对方的路由即可完成跨主机Docker容器之间的互通;

主机配置及IP信息

基础环境需要准备两台主机(可以是两台工控机安装原生ubuntu或者是两台运行在windows下面的虚拟机),系统可以是CentOS,Ubuntu;需要能支持安装Docker,本实战文档中使用的主机信息如下;

主机名 IP 配置 容器网段
docker-host-01 192.168.61.132 16核32G内存,50G硬盘 172.16.200.0/24
docker-host-02 192.168.61.135 16核32G内存,50G硬盘 172.16.201.0/24
调整Docker网络配置

Docker安装完之后,默认会创建一个docker0的网桥,启动的Docker容器网段是172.17.0.1/16,如果不做调整,两台Docker主机上的容器,就可能出现IP地址冲突,所以我们先将默认docker0网桥的地址按【主机配置及IP信息】中规划的进行调整。

在docker-host-01中创建/etc/docker/daemon.json文件(一般来说主机里面会有这个文件,没有的话就自己创建,用root权限创建),内容如下

[root@docker-host-01 ~]# cat /etc/docker/daemon.json
{
   
  "bip": "172.16.200.1/24"
}

重启docker服务

[root@docker-host-01 ~]# systemctl restart docker

完成重启后,再看docker0的IP,已经调整完成了

[root@docker-host-01 ~]# ifconfig  docker0
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.16.200.1  netmask 255.255.255.0  broadcast 172.16.200.255
        inet6 fe80::42:b3ff:fef9:1cc1  prefixlen 64  scopeid 0x20<link>
        ether 02:42:b3:f9:1c:c1  txqueuelen 0  (Ethernet)
        RX packets 2916  bytes 121276 (118.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3115  bytes 10870567 (10.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

使用同样的方法,调整docker-host-02主机上的的docker网络。

创建并进入Docker容器
[root@docker-host-01 ~]# docker run  --name host-01-docker -it ubuntu /bin/bash
[root@6cb01044fda8 /]# apt update  #更新
[root@6cb01044fda8 /]# apt install -y net-tools  #安装工具查看ip和网关
[root@6cb01044fda8 /]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.200.2  netmask 255.255.255.0  broadcast 172.16.200.255
        ether 02:42:ac:10:c8:02  txqueuelen 0  (Ethernet)
        RX packets 3168  bytes 10876332 (10.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2970  bytes 165058 (161.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  
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选项将一个容器链接到另一个容器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值