Docker容器通信

桥接口
Docker容器通信
容器之间除了使用ip通信外,还可以使用容器名称通信。
docker 1.10开始,内嵌了一个DNS server.
dns解析功能必须在自定义网络中使用。
启动容器时使用 --name 参数指定容器名称。
默认的桥接中不带解析。
容器之间的通信分为单节点上的容器互通和跨节点上的容器互通。
本地之间容器的通过桥接。
不同段的容器在互通的时候是直接走的桥接。数据包从容器内出来以后到达网关docker0,如果发现本机的流量都是同网段的话,还是走的是docker0。
不同网段的容器是隔离的,通过给容器增加一块网卡,进入到另外一个网络当中,使容器间互通。
容器间除了使用ip通信外,还可以使用容器名称通信。ip因为是动态的,所以不靠谱,一般使用docker 内嵌的DNS server来做域名解析。名称在启动docker时,添加–name 参数指定容器名称,施加就可以了,就会创建相应的解析记录。
随着容器的动态ip变更,就会变更dns中的解析记录。

server1
docker run -d --name vm1 --network my_net1 nginx #-d 打入后台
docker run -it --name vm2 --network my_net1 ubuntu
ping vm1

jined容器是一种较为特别的网络模式
在容器创建时使用–network=container:vm1指定。(vm1指定的是运行的容器名)

docker run -it --name vm1 --network my_net1 ubuntu
ip addr
docker ps -a
docker container prune 回收容器。
docker run -d --name nginx # -d打入后台
docker ps #显示当前正在运行的容器
brctl show #查看网桥 br0网桥不带解析
如果希望有解析记录的话,用自定义网络,就是自己创建的。默认的br虽然有桥接驱动,但是不带解析。默认的桥接不带解析。
docker network ls #
docker inspect demo #用于获取容器或镜像的元数据 可以查看ip地址
docker run --rm -it --network container:demo busybox
ip addr
busybox容器和之前打开的demo容器使用的是相同的ip,这两个容器监听的端口不能是重复的。
--link 可以用来连接2个容器
--link 的格式:
--link <name or id>:alias 容器加别名
name和id是源容器的name和id,alias是源容器在Link下的别名。
这个解析不是通过DNS,而是通过host文件。
server1
cat /etc/hosts
docker run --rm -it --link demo:webserver busybox
cat /etc/hosts
ping demo
env 变量
当demo的ip发生变化时,解析也会变,但变量不会变。

重新开一个终端
docker stop demo #停掉之前的demo
docker run -d --name demo2 nginx
docker inspect demo2 #发现这个demo2会把之前的ip地址给占了。
docker start demo 
docker inspect demo #又重新分配了一个地址。
接着上一个代码
cat /etc/hosts
env

容器能够出去,是完全依赖宿主机上面的nat,就是snat࿰

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值