记录一些常用的函数和瞎折腾的过程……

docker网络之通过容器名进行容器间通讯

提醒:本文最后更新于 1267 天前,文中所描述的信息可能已发生改变,请谨慎使用。

安装docker时,docker会默认创建一个内部的bridge网络docker0,每创建一个容器分配一个虚拟网卡,容器之间可以根据ip互相访问,且只能通过ip进行通讯。

在这种情况下,不能保证容器自动分配的ip地址不变,为了能通讯方便,我们可以再创建一个bridge网络,通过容器名来进行通讯。

1、创建网络:

首先我们创建一个自定义的bridge网络,名字为DockerNet:

[root@server ~]# docker network create DockerNet

这样我们就创建了一个名为DockerNet的网络。

2、加入网络:

然后把已创建的容器加入到这个DockerNet网络中来。

使用方法:docker network connect <bridge> <容器名>。

例如:把名字为docker_demo1和docker_demo2的容器加入到名为DockerNet的网络中:

[root@server ~]# docker network connect DockerNet docker1_demo
[root@server ~]# docker network connect DockerNet docker2_demo

3、查看网络:

可以查看指定的网络配置,如查看DockerNet的网络配置情况:

[root@server ~]# docker network inspect DockerNet

4、断开网络:

断开容器与网络的连接。

使用方法:docker network disconnect <bridge> <容器名>。

例如:把名字为docker_demo1和docker_demo1的容器从默认bridge网络断开:

[root@server ~]#docker network disconnect bridge docker1_demo
[root@server ~]#docker network disconnect bridge docker2_demo

5、创建容器时加入指定的bridge网络:

创建容器时可以直接连接到DockerNet网络,通过--network <bridge>来实现:

使用方法:docker run -it --name <容器名> --network <bridge> <镜像名>。

例如:创建一个centos容器并加入到DockerNet这个bridge中:

[root@server ~]# docker run -it --name centos-1 --network DockerNet centos:latest

6、查看docker中存在的所有网络:

[root@server ~]# docker network ls

7、检验是否可以通过容器名进行容器间的通讯:

a、进入docker_demo1容器:

[root@server ~]# docker exec -it docker_demo1 /bin/bash

b、ping另一个容器docker_demo2:

root@97f1d3fc38c0:l# ping docker_demo2
PING docker_demo2 (172.18.0.5) 56(84) bytes of data.
64 bytes from docker_demo2.DockerNet (172.18.0.5): icmp_seq=1 ttl=64 time=0.243 ms
64 bytes from docker_demo2.DockerNet (172.18.0.5): icmp_seq=2 ttl=64 time=0.142 ms