起因

我的开发环境需要一个python代码运行环境、reids服务和mysql服务。

由于以前,我的开发环境是mac,而CI和线上运行环境是centos,偶尔会出项本地单元测试跑不过,而CI可以过。这多半都是环境不一致导致的。

所以搭建完全相同的线上环境是很必要的。

这里要准备3个镜像:mysql:5.6、redis和pymicro(python 运行环境)。

1.使用host网络模式启动mysql容器和redis容器

  docker run --net=host -p 3306:3306 -d --name mysql_5_6 -e MYSQL_ROOT_PASSWORD=toor333666 --restart=always mysql:5.7

  docker run --net=host -p 6379:6379 -d --name redis --restart=always redis

  注意:host网络模式,端口映射必须宿主机和容器端口号相同。

2.使用host网络模式启动pymicro容器

  docker run --net=host -d --name dev_env_1 -it -v /Users/zioyi/code:/usr/code/ /pymicro /bin/bash

  -v参数用于把宿主机文件挂载到容器中,这样才能在容器里跑单元测试。

正题

docker drivers

这样就完成了,是不是很简单,但是为什么容器【dev_env_1】能够访问容器【mysql】和【redis】?host网络模式又是什么?

我们来研究一下docker的网络配置(https://docs.docker.com/network/

docker的多种网络模式是通过修改宿主机的iptables规则来实现。

docker提供了六种网络驱动来满足不同场景下的网络需求:

  bridge:默认的网络驱动。常用于独立的容器群中内部通信,容器和宿主机的网络是隔离的。

  host:移除了宿主机和容器群间的网络隔离。

  overlay:提供多个docker守护进程管理的容器间的通信能力,包括swarm服务之间、swarm服务和独立容器群之间以及独立容器之间。

  macvlan:允许你给容器分配一个MAC地址,让它作为一个物理网路装置。

  none:无网络状态。

  Network plugins:用户可自己安装第三方的docker网络插件。

总结

使用docker就好比达积木,每个容器都是形状各异的积木块,网络驱动是用来连接积木块的。

docker提供诸多网络驱动,使得其容器间的关联变得更加灵活,我们也要根据它的官方文档,学习不同网路驱动之间的特性以搭建出我们想要的docker城堡。

docker学习之network:初识网络配置的更多相关文章

  1. Docker学习(六): 网络使用与配置

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...

  2. Docker学习笔记之为容器配置网络

    0x00 概述 在互联网时代,网络已经成为绝大多数应用进行数据交换的主要通道,Docker 作为集群部署的利器,在网络支持上也下了许多功夫.功能丰富和强大,并不代表使用复杂,在 Docker 的封装下 ...

  3. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  4. Docker学习:virtualbox安装和配置

    下载.安装 从官网:https://www.virtualbox.org/下载,根据说明直接一步步安装即可 安装ubuntu 说明:这里本机内存是16G,若内存<4G安装完成虚拟机, 安装完成之 ...

  5. Linux学习 - 02 使用 - Centos8 - 网络配置相关

    『Centos8 网络配置』 题外话:最近太忙,利用仅有的周末空闲时间记录点东西,草率了. 问题1:安装 Centos8.2 minimal 过程中,只是设置了 WiFi的静态IP,没有进行[以太网] ...

  6. linux学习之系统管理、网络配置、软件安装

    一.ifconfig,命令查看linux系统IP 二.su切换到root下(已是root用户不用切换),使用setup命令启用界面操作         CentOS我安装的是Minimal版本,没有安 ...

  7. Linux学习之Center os网络配置

    首先介绍一下VMware的网络连接方式.我们的主机通常经过物理网卡与局域网和Internet相连接,而虚拟机既已被称之为虚拟计算机,那虚拟网卡也必然存在,而如果我们想让虚拟计算机能连接到局域网或者In ...

  8. Docker学习计划二:基本配置

    来源:http://www.ityouknow.com/docker/2018/03/07/docker-introduction.html Docker 将应用程序与该程序的依赖,打包在一个文件里面 ...

  9. docker学习笔记(二)--配置镜像加速器

    前提:docker已经安装好 配置过程 进入至阿里云开发中心,https://dev.aliyun.com/,点击管理中心 管理中心中,点击左侧镜像加速器. 修改配置文件,使用加速器,根据我们目前Do ...

随机推荐

  1. Leetcode4. 寻找两个正序数组的中位数

    > 简洁易懂讲清原理,讲不清你来打我~ 输入两个递增数组,输出中位数![在这里插入图片描述](https://img-blog.csdnimg.cn/25550994642144228e9862 ...

  2. P4168-蒲公英-分块

    蒲公英 暴力分块思想.分块的思想与莫队相同.它能将时间和空间复杂度均摊XD belong表示所属区块,num维护区间颜色出现次数,maxx维护区间max值.查询时只需要比较两端的区块即可. #incl ...

  3. powerdesigner连接postgresql数据库生成pdm及word文档

    1.准备软件: powerdesigner165与postgresql的驱动:psqlodbc_11_01_0000 2.安装并破解完成powerdesigner165 参看链接:https://ww ...

  4. airtest前期准备(pocoSDK+unity打apk包+安装pocoui库)

    只介绍unity的环境准备,cocos的可以参考官方文档    https://poco-chinese.readthedocs.io/zh_CN/latest/source/doc/integrat ...

  5. tomcat与springmvc 结合 之---第19篇(下,补充) springmvc 加载.xml文件的bean标签的过程

    writedby 张艳涛,上一篇写了springmvc对<mvc:annoXXXX/>标签的解析过程,其实是遗漏重要的细节,因为理解的不深入吧 今天接着解析<bean>标签 & ...

  6. vscode安装ESlint配置

    先安装插件ESLint,后面在设置setting.json中配置加入代码: { "files.autoSave": "afterDelay", "ed ...

  7. Spring in Action学习笔记(2)

    Spring基础 AOP 面向切面编程 通知.连接点.切点.切面 Spring提供 4 种类型的AOP支持: 基于代理的经典SpringAOP:使用ProxyFactoryBean. 纯POJO切面: ...

  8. SQL SERVER Date列和Time列合并成一列处理报表数据

    问题原由: intouch项目中,利用intouch脚本来存储数据时,存入的时间格式为:date,time分开存储.在报表需求中,有需要利用查询两个时间段之间的数据. 问题解决: 1.直接写脚本(写出 ...

  9. git合作开发流程

    一.创建项目与管理 创建项目和管理项目都是管理账号需要做的事情,如果只是合作开发不进行管理,只需要浏览第二部分的内容即可. 1.创建项目 登录代码托管网站,点击添加项目,如下图所示: 填写相应的项目信 ...

  10. 获取异常信息里再出异常就找不到日志了,我TM人傻了

    本系列是 我TM人傻了 系列第三期[捂脸],往期精彩回顾: 升级到Spring 5.3.x之后,GC次数急剧增加,我TM人傻了 这个大表走索引字段查询的 SQL 怎么就成全扫描了,我TM人傻了 最近组 ...