博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker基础-20-网络-容器link关系和新建bridge网络
阅读量:4302 次
发布时间:2019-05-27

本文共 1763 字,大约阅读时间需要 5 分钟。

本篇来学习几个docker的使用不是很频繁的知识点。第一个是容器之间的link操作,第二个是如何把容器连接到我们自己新建的bridge网络,我们前面知道,默认容器启动之后都是连接到docker0这个bridge网络,这里我们来演示下连接到我们自定义的bridge网络。

 

容器之间link关系

 

一般使用link的场景是这样的,加入在一个企业环境中,我们有一个mysql的服务的容器mysql_1,还有一个web应用程序web_1,在开发中,肯定web_1这台容器肯定要连接mysql_1这个数据库。前面网络命名空间的知识告诉我们,两个容器需要能通信,需要知道对方的具体的IP地址。生产环境还比较好,IP地址很少变化,但是在我们内部测试环境,容器部署的IP地址是可能不断变化的,所以,开发人员不能在代码中写死数据库的IP地址。这个时候,我们就可以利用容器之间link来解决这个问题。下面,我们来介绍如何通过容器名称来进行ping,而不是通过IP地址。

 

和前面一页,我们启动两个busybox的容器,分别是test1和test2,我们IP地址是可以ping同,但是如果test1 ping test2是行不通的。

下面,学习一个docker link命令,把test1容器和test2容器关联起来。然后再来测试下ping test2行不行。为了模拟link的操作,我们先把test2容器给停止并删除,然后注意下test2容器启动命令变化。

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

这个启动命令,比之前加了—link test1 参数。下面我们再次进入test2中通过test1来ping(注意这里是反过来,test2里ping test1)

上面link命令,是test2启动link了test1容器,所以,只能在test2里面通过test1去ping,link的作用相当于添加了DNS解析。这里提醒下,你去test1里是不同ping test2的,因为link关系是单向的,不可逆。

 

如果创建一个自定义bridge网络,并往上面连接容器。

上面命令参数-d 是指DRIVER的类型,后面的my-bridge是network的自定义名称,这个和docker0是类似的。下面开始介绍,如何把容器连接到my-bridge这个网络。

 

启动容器过程中指定连接到my-bridge网络

下面,我们来启动一个busybox的容器test3,并通过参数network connect来连接my-bridge网络。

在启动容器test3之前,我们查看目前还没有容器连接到了my-bridge这个网络上。

docker run -d --name test3 --network my-bridge busybox /bin/sh -c "while true; do sleep 3600; done"

那边接口vethf0a24eb是不是test3这个容器,test3容器查询这个接口是外层的eth0@if18.

我们在外层linux本机上输入ip link。

然后利用docker network inspect my-bridge看看Containers下有没有test3

这里看test3容器连接到了my-bridge网络,IP地址网段都变成了18这个网段。

 

如果把一个运行中容器连接到my-bridge网络

这里需要使用docker network connect命令

这样就把容器test2连接到了bridge 网络my-bridge。

也可以查看my-bridge的inspect命令: docker network inspect my-bridge

也可以在查看bridge的inspect内容:docker network inspect bridge,可以看到test2既在bridge这个网络,也在my-bridge网络中。

 

本篇就学习两个知识点,一个容器之间的link关系,这种link是单方向有效,不可逆。第二个是新建bridge网络,并把容器添加到新建的bridge网络。

转载地址:http://jkows.baihongyu.com/

你可能感兴趣的文章
shell 脚本部署项目
查看>>
spring cloud zuul网关上传大文件
查看>>
springboot+mybatis日志显示SQL
查看>>
工作流中文乱码问题解决
查看>>
maven打包本地依赖包
查看>>
spring boot jpa 实现拦截器
查看>>
jenkins + maven+ gitlab 自动化部署
查看>>
Pull Request流程
查看>>
Lambda 表达式
查看>>
函数式数据处理(一)--流
查看>>
java 流使用
查看>>
java 用流收集数据
查看>>
java并行流
查看>>
CompletableFuture 组合式异步编程
查看>>
mysql查询某一个字段是否包含中文字符
查看>>
Java中equals和==的区别
查看>>
JVM内存管理及GC机制
查看>>
Java:按值传递还是按引用传递详细解说
查看>>
全面理解Java内存模型
查看>>
Java中Synchronized的用法
查看>>