docker入门-容器间的互联网络

网友投稿 286 2022-10-19

docker入门-容器间的互联网络

在安装完大量的docker容器之后,就会发现如果两个容器之间进行通讯,就存在问题。

下面我们逐步分析下docker的网络模式。

Bridge默认网络模式

在安装完docker之后,会存在三种网络。

我们使用命令

docker network ls 查看docker的网络模式

1、bridge模式(默认模式,为每个容器分配IP,并将容器链接到docker0的虚拟网卡)

2、host模式(容器没有虚拟网卡,使用主机的IP和端口访问)

3、none模式(容器有网卡,但是没有任何的网络设置)

在主机上发现有docker0的虚拟网卡。默认网段为172.17.0.0。

docker0的网络会在新建一个容器之后,产生一个inetXXX的地址。

容器的inet

主机上的inet

查看容器当前的网络模式

使用命令

docker network inspect bridge

在bridge模式中,有网段和网关的设置

在容器选项中,有已经分配IP地址的容器

参考文章:

网络模式需要在创建容器时通过参数--net host或者--network host 指定

使用host模式的容器可以直接使用docker host的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。

none 网络模式

none 网络模式是指禁用网络功能,只有lo接口local的简写,代表 127.0.0.1,即 localhost 本地环回接口。在创建容器时通过参数 --net none 或者 --network none 指定。

我们输入命令的结果

docker network inspect none

特点

不同网桥下的容器间不能ping通, 在于docker设计时候就隔离了不同网桥。

一个容器可以同时加入多个网络,所以可以创建非常复杂的网络模型。

命令如下

docker network create 创建一个网络docker network inspect 查看网络的详细信息docker network ls 列出当前系统中的所有网络docker network connect 将已有容器连接到一个网络docker network disconnect 从网络中断开一个容器docker network rm 删除一个或多个网络

实验:

1、创建一个busybox容器

docker run -it --name box01 busybox

删除所有未运行的容器

docker rm $(docker ps -a -q)

创建的容器默认在birdge网络中

2、创建一个新网络

docker network create new-docker

3、将已有容器添加到新网络

docker network connect new-docker aa81f4c5f61c

该容器拥有双网卡

4、相互ping通

实验完毕

端口映射

1、创建一个web容器

docker run -d -P training/webapp

可以使用 -p 标识来指定容器端口绑定到主机端口。

两种方式的区别是:

-P :是容器内部端口随机映射到主机的端口。

-p : 是容器内部端口绑定到指定的主机端口。

我们通过主机的端口访问。

正常。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java进程间通信之消息队列
下一篇:Docker系列之Dockerfile详解EXPOSE|WORKDIR|USER(七)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~