docker网络、容器间互联互通

本文深入解析Docker默认创建的bridge、none、host三种网络模式,详细介绍自定义网络的创建及配置,包括网络命令的使用、容器间的通信方式,以及如何通过容器名进行互访。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在安装docker时,默认会自动创建三个网络,bridge(默认使用)、none、host

下面分别介绍三种网络:
host:直接使用物理机的IP和端口,容器没有自己的网卡

none:关闭网络功能

bridge:为每个容器分配IP地址,并将容器网卡连接到docker0虚拟网桥上,通过iptables的nat表与主机通信

创建自定义网络 :

# 自定义网络名称为localnetwork,IP地址段为172.20.0.0/24
[root@localhost ~]# docker network create --subnet 172.20.0.0/24 localnetwork
ac4f294a95f7f8787e38eef0b466ec69c35cb04157081240e1c6b37ef4b91567
[root@localhost ~]# docker network ls
NETWORK ID          NAME                    DRIVER              SCOPE
e28aeaffefe5        bridge                  bridge              local
29c17110817b        host                    host                local
ac4f294a95f7        localnetwork            bridge              local
26f1293fa81e        none                    null                local

大致的原理图如下所示:
在这里插入图片描述

docker有关网络的一些命令:

# 查看一个网络的信息
docker network inspect [OPTIONS] NETWORK [NETWORK...]
# 将一个容器连接到网络
docker network connect [OPTIONS] NETWORK CONTAINER
# 使容器与一个网络断开
docker network disconnect [OPTIONS] NETWORK CONTAINER
# 删除一个/多个网络
docker network rm NETWORK [NETWORK...]

在docker run命令中

–network 指定网络

–ip 在自定义网络中指定容器IP地址

两个容器如在同一个网络中,通过IP地址是可以实现互相访问的,但容器间通信还可以使用容器名互相通信,而不是使用IP地址

docker run --rm --name test1  -it centos:7 bash

创建名为test1的容器

docker run --rm -it --link test1:test1 centos:7 bash

在创建一个容器,docker run命令中加入–link参数,把test1容器做了主机映射

在容器中查看hosts文件

cat /etc/hosts
……
172.17.0.2	test1 c68109ea44eb

ping test1试试

ping test1
PING test1 (172.17.0.2) 56(84) bytes of data.
64 bytes from test1 (172.17.0.2): icmp_seq=1 ttl=64 time=0.095 ms
64 bytes from test1 (172.17.0.2): icmp_seq=2 ttl=64 time=0.056 ms
^C

能ping通!实现容器间通信

若实现跨主机间的容器通信,可移步到我的博客 openswtich实现跨主机通信

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值