Docker初识——Docker Networking

Docker连接主要有三种方式:
1. Docker内部网络(不灵活)
2. Docker Networking以及docker network命令(推荐)
3. Docker链接

Docker内部连网

在安装Docker时,会创建一个新的网络接口,名字是docker0。每个Docker容器都会在这个接口上分配一个ip地址。

ip a show docker0

docker0是一个虚拟的以太网桥,用于链接容器和本地宿主网络。Docker每创建一个容器就会创建一组互联的网络接口,他们连接宿主机端口到docker0网桥,形成一个虚拟子网。

从宿主网络与容器通信时,必须指明打开的端口。 但是一旦重启容器,那么ip将会发生变化。

Docker Networking

Docker Networking以新的用户管理的网络补充了现有的docker0。现在容器可以跨越不同的宿主机来通信,并且网络配置可以更灵活地定制。

  1. 创建Docker网络

    docker network create app
    

    这里用docker network创建了一个桥接网络,命名为app,这个命令返回新创建的网络ID。
    查看新创建的网络

    dockerr network inspect
    
  2. 在Docker网络中创建容器

    docker run -d --net=app --name db jamtur01/redis
    

    –net指定了新容器将会在哪个网络中运行。
    在app网络内部启动的容器,可以感知到所有在这个网络下运行的容器,并且通过/etc/hosts文件将这些容器的地址保存到本地DNS中。

    在代码中指定Redis DB主机名

    redis = Redis.new(:host => 'db', :port => '6379')
    

    如果任意一个容器重启了,那么它的ip地址信息则会自动在/etc/hosts文件中更新。

    添加已有容器到Docker网络docker network connect

    docker network connect app db2
    

    从网络中断开一个容器

    //从app网络中断开db2
    docker network disconnect app db2
    

通过Docker链接连接容器

Docker1.9之前才推荐这种方式。

Docker链接如何工作的?
新建一个Redis容器开始

docker run -d --name redis jamtur01/redis

这里没有公开容器的任何端口。
链接 Redis 容器

	docker run -p 4567 --name webapp --link redis:db -t -i -v $PWD/webapp_redis:/opt/webapp jamtur01/sinatra /bin/bash

–link 标志创建了两个容器间的客户-服务链接。这个标志需要两个参数:一个是要链接的容器的名字,另一个是容器的别名。可以绑定多个容器与Redis容器之间的链接。
最后容器启动时打开shell脚本,这样就可以查看容器是如何链接在一起的。Docker在父容器里的以下两个地方写入了链接信息:/etc/hosts文件中以及包含链接信息的环境变量中

使用容器链接来通信的方式:
1. 使用环境变量里的一些连接信息。
2. 使用DNS和/etc/hosts信息。

使用DNS配置连接信息
docker run命令中可以加入–dns或者–dns-search标志来为某个容器单独配置DNS。更多配置见https://docs.docker.com/article.com/articles/networking/ 如果没有那两个标示,Docker会根据宿主机的信息来配置DNS。

redis = Redis.new(:host => 'db', :port => '6379')

应用程序会在本地查找名叫db的宿主机,找到/etc/hosts文件里的相关项并解析宿主机到正确的IP地址。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值