docker容器之间连接方式

 

创建一个容器就会创建一个它的network netspace

查看当前机器有哪些docker网络:

docker network ls

结果:

 

默认创建容器会默认连接到默认的bridge

 

查看指定网络的元数据(可以看到连接到这个网络的容器以及这个容器的ip)

docker network inspect NETWORKID

在得到的结果中,Containers字段包含的内容是使用此网络的所有容器

 

查看当前有的linux bridge:brctl show

得到的结果中interfaces是连接bridge所使用的接口

同一个宿主机,两个容器之间是如何通信的

宿主机每创建一个容器,就会创建一个bridge接口连接到,同时容器也会创建一个bridge接口,这一对接口都连接在docker0这个bridge,这样就可以通信了。

下面是示例图,

两个容器分别是两个不同的network netspace,连接的是主机默认的一个network netspace,通过这个两对线就连在了一起

对于单个容器它是如何访问internet呢?

如果宿主机可以通过eth0访问外网,那么docker0通过一个NAT进行网络地址转换,那么容器访问外网时经过docker0这个bridge并之后通过NAT进行地址转换eth0的地址,它就会作为一个linux主机的数据包发到外面去

 

两个容器通信用名字代替ip地址

1.通过link,使用link相当于使用DNS记录

例如:

通过busybox创建一个容器名为test1

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

 再用busybox创建一个容器名为test2,创建test2时使用了link链接了test1

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

2.默认创建容器时默认连接的是bridge,其实可以创建容器时可以指定使用的网络,可以指定host、none甚至可以自己建一个bridge

docker network create -d bridge my-bridge

这样就创建了一个名为my-bridge类型为bridge的网络

将已经创建的容器连接到指定的bridge网络

docker network connect my-bridge test2

如果两个容器都连接到了用户创建的bridge上,那么它们默认是link好的,可以通过相互ping通

 


容器的端口映射:

在创建容器时指定容器和宿主机的端口映射

例如:

docker run --name web -d -p 80:80 nginx

当访问宿主机的80端口时会将流量转发到容器的80端口

这样在外部就可以访问宿主机创建的容器了

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值