Docker08-网络管理
桥接网络 Bridge Network
docker的桥接网络使用虚拟网桥,bridge网络用于同一主机上的docker容器相互通信,连接到同一个网桥的docker容器可以相互通信,当我们启动docke时,会自动创建一个默认bridge网络,除非我们进行另外的配置,新创建的容器都会自动连接到这个网络,我们也可以自定义自己的bridge网络,docker文档建议使用自定义bridge网络,默认的bridge网络具有一定的缺陷
相关操作命令
创建一个自定义网络
docker network create [net-name]实例化容器到自定义网络:
docker run --network [net-name] [CONTAINER]运行容器加入到自定义网络
docker network connect [net-name] [CONTAINER]离开用户自定义网络
docker network disconnect [net-name] [CONTAINER]查看当前网络模式
docker network ls移除自定义网络:
docker network rm [net-name]
[warning]ps:移除自定义网络前先移除该网络上的所有容器
实例演示:容器之间通过自定义bridge通讯
- 创建自定义网络test-bridge
docker network create test-bridge
- 初始化容器mysql_bridge,加入到自定义网络test-bridge
docker run -d --name mysql_bridge --network test-bridge -e MYSQL_ROOT_PASSWORD=root mysql:5.7
[success]ps:我们这里的mysql服务没有发布端口,依然可以在bridge网络内暴露使用
- 初始化容器redis_bridge,加入到自定义网络test-bridge中,并发布端口6397
docker run -d --name redis_bridge --network test-bridge -p 16397:6397 redis:5.0
- 检查mysql_bridge与redis_bridge网络
root@ubuntu:/home/guanfuchang# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
607aa323a3a2 mysql:5.7 "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 3306/tcp, 33060/tcp mysql_bridge
b9b2ca3e0cff redis:5.0 "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 6379/tcp, 0.0.0.0:16397->6397/tcp redis_bridge
从redis容器中测试连接mysql
root@ubuntu:/home/guanfuchang# docker exec -it redis_bridge /bin/bash
root@b9b2ca3e0cff:/data#
root@b9b2ca3e0cff:/data# ping mysql_bridge
PING mysql_bridge (172.19.0.3) 56(84) bytes of data.
64 bytes from mysql_bridge.test-bridge (172.19.0.3): icmp_seq=1 ttl=64 time=0.125 ms
64 bytes from mysql_bridge.test-bridge (172.19.0.3): icmp_seq=2 ttl=64 time=0.137 ms
64 bytes from mysql_bridge.test-bridge (172.19.0.3): icmp_seq=3 ttl=64 time=0.131 ms
^C
--- mysql_bridge ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2043ms
rtt min/avg/max/mdev = 0.125/0.131/0.137/0.005 ms
root@b9b2ca3e0cff:/data#
root@b9b2ca3e0cff:/data# telnet mysql_bridge 3306
Trying 172.19.0.3...
Connected to mysql_bridge.
Escape character is '^]'.
由上面的结果可知,在redis容器中,已成功与mysql容器进行通信。
宿主网络 Host Network
如果在创建容器的时候使用--network=host选项,那么容器会使用宿主机的网络,容器与宿主机的网络并没有隔离。
使用这种网络类型的好处就是网络性能很好,基本上跟宿主机的网络一样,它很大的弊端就是不安全。如果你的程序是用root用户运行的,有可能会通过Docker容器来控制宿主机的网络。
docker run -it --network=host redis:5.0
root@ubuntu:/home/guanfuchang# netstat -nap | grep "6379"| grep -w LISTEN
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 31894/redis-server
tcp6 0 0 :::6379 :::* LISTEN 31894/redis-server
Overlay Network
overlay 网络驱动程序在多个 Docker 守护进程主机之间创建一个分布式网络(跨docker主机通信),所有连接该自定义网络的容器自动相互暴露所有端口。
相关操作命令
将 Docker 守护进程初始化为 swarm manager
docker swarm init创建overlay网络
docker network create --driver=overlay --attachable [net-name]加入overlay网络
docker run --network [net-name] [CONTAINER]加入集群
docker swarm join [OPTIONS] HOST:PORT离开集群
docker swarm leave
更多命令,请参考docker官方文档
https://docs.docker.com/engine/reference/commandline/swarm/
实例演示:容器之间通过自定义Overlay 跨主机通讯
为了演示跨主机,我这里克隆一个虚拟机,现两个虚拟机的信息如下
| 虚拟机 | IP | 安装 |
|---|---|---|
| ubuntu | 192.168.147.128 | redis |
| ubuntu_copy1 | 192.168.147.130 | mysql |
- 在128上初始化集群
docker swarm init

- 在128上查看当前节点
docker node ls

- 在128上创建overlay network
docker network create --driver=overlay --attachable test-overlay

- 在128上实例redis容器,并加入overlay 网络
docker run -tid --name redis_overlay --network test-overlay redis:5.0

- 在130中,加入集群
docker swarm join --token SWMTKN-1-32pd1ytuwho780hrehx8687y4s54g0fvhf4sh8tx8ea1qp9a6g-9foali4ph3tm0xn5vmu0emomd 192.168.147.128:2377
[warning] 如果不记得token了,可以在128上执行命令
docker swarm join-token worker 即可显示加入集群的命令
- 在130上实例mysql容器,并加入overlay网络
docker run -tid --name mysql_overlay --network test-overlay -e MYSQL_ROOT_PASSWORD=root mysql:5.6

- 从128中redis容器中测试连接130中的mysql容器
docker exec -it redis_overlay /bin/bash
telnet mysql_overlay 3306

到这里,已经说明通过加入overlay网络,在两个主机的两个容器之间可以实现通信了。
如果容器内telnet命令不存在,在容器内先更新apt,然后安装telnet即可
apt update
apt install telnet
:-: 
微信扫一扫,关注“python测试开发圈”,了解更多测试教程!
Docker08-网络管理的更多相关文章
- SNMP简单网络管理协议
声明:以下内容是学习谌玺老师视频整理出来(http://edu.51cto.com/course/course_id-861.html) SNMP(Simple Network Management ...
- BZOJ 1146: [CTSC2008]网络管理Network [树上带修改主席树]
1146: [CTSC2008]网络管理Network Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 3522 Solved: 1041[Submi ...
- codevs 1490 【CTSC2008】 网络管理
题目链接:网络管理 好久没写这种类型的题了--手都生了-- 一句话题意:树上带修改的区间\(k\)大数.这题面怎么有点眼熟 显然树上的题目我们可以先在序列上考虑一下.区间带修改的区间\(k\)大数有两 ...
- 【BZOJ-1146】网络管理Network DFS序 + 带修主席树
1146: [CTSC2008]网络管理Network Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 3495 Solved: 1032[Submi ...
- [BZOJ1146][CTSC2008]网络管理Network
[BZOJ1146][CTSC2008]网络管理Network 试题描述 M公司是一个非常庞大的跨国公司,在许多国家都设有它的下属分支机构或部门.为了让分布在世界各地的N个 部门之间协同工作,公司搭建 ...
- SNMP简单网络管理协议(转载)
SNMP SNMP 网络管理的历史 美国国防部设计了世界上头几个包交换网之一的ARPANET,在70年代,TCP/IP协议族正式被定为军方通信标准,随着此协议的广泛使用,网络管理成了一件大事.在80年 ...
- Nmcli 网络管理命令行工具基础
介绍 在本教程中,我们会在CentOS / RHEL 7中讨论网络管理命令行工具NetworkManager command line tool,也叫nmcli.那些使用ifconfig的用户应该在C ...
- ubuntu 12.04 "系统的网络服务与此版本的网络管理器不兼容
ubuntu 12.04 "系统的网络服务与此版本的网络管理器不兼容“ 2013-05-10 21:18 2271人阅读 评论(0) 收藏 举报 今天上午在实验室一顿乱整,不知道整坏了什么, ...
- 浅议SNMP安全、SNMP协议、网络管理学习
相关学习资料 tcp-ip详解卷1:协议.pdf(重点看25章SNMP部分) http://www.rfc-editor.org/rfc/rfc1213.txt http://www.rfc-edit ...
- Orion Network Performance Monitor 软件在网络管理中的应用
Orion Network Performance Monitor 软件在网络管理中的应用 Orion Network Performance Monitor是完全的带宽性能和故障管理软件 ...
随机推荐
- Linux/Unix 多线程通信
线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用. 不过要注意的是线程间需要做好同步,一般用 mutex. 可以参考一些比较新的 UNIX/Linux ...
- CSS居中方案
1.行内元素或者内联元素 1.垂直居中 设置行高和高度一致,如果没必要设置高度的话,可以直接利用line-height垂直性,直接设置需要的高度为line-height的高度亦可居中 .center- ...
- 《Machine Learning - 李宏毅》视频笔记(完结)
https://www.youtube.com/watch?v=CXgbekl66jc&list=PLJV_el3uVTsPy9oCRY30oBPNLCo89yu49 https://www. ...
- Spring Security教程之整合SpringMVC(六)
一.前言 Spring Security系列教程中,前五篇为同一人所写,而本文是博主依据第三方文章整合而出,与前五篇文章的作者不是同一系列. 但本文以前五篇文章为基础,在前面文章所建立的Spring ...
- C#】通过遍历IFrame访问页面元素
最近在做一个小项目,期间需要用到C#去操作IE页面中的元素,实现自动填写表单并且提交的功能,想这网上关于这方面的东西肯定很多,于是开始在网上找资料. 在逆心的博客上找到些东西对自己帮助很大,原文链接: ...
- [转帖]深入理解latch: cache buffers chains
深入理解latch: cache buffers chains http://blog.itpub.net/12679300/viewspace-1244578/ 原创 Oracle 作者:wzq60 ...
- ElasticSearch中的JVM性能调优
ElasticSearch中的JVM性能调优 前一段时间被人问了个问题:在使用ES的过程中有没有做过什么JVM调优措施? 在我搭建ES集群过程中,参照important-settings官方文档来的, ...
- 一、docker 入坑(win10和Ubuntu 安装)
前言 终究还是绕不过去了,要学的知识真的是太多了,好在我们还有时间,docker 之前只闻其声,不曾真正的接触过,现在docker 越来越火,很多公司也都开始使用了.所以对于我们程序员而言,又得修炼一 ...
- MarkDown的常规用法
MarkDown的常规用法 标题 # 一级标题 ## 二级标题 ... ###### 六级标题 列表 第二级 - 和 空格 + 和 空额 * 和 空格 第三级 代码块 多行代码块 3个` 回车 单行代 ...
- Docker-Compose搭建单体SkyWalking 6.2
SkyWalking简介 SkyWalking是一款高效的分布式链路追踪框架,对于处理分布式的调用链路的问题定位上有很大帮助 有以下特点: 性能好 针对单实例5000tps的应用,在全量采集的情况下, ...