起因

我的开发环境需要一个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. odoo前后端交互详解

    为了简单叙述,暂时不考虑多个db的情况(主要是懒得说没有db或者多个db实例的情况)当odoo指定数据库开启服务时(也就是odoo-bin -d <some_db_name> ),我们使用 ...

  2. Moonraker靶机

    仅供个人娱乐 靶机搭建与下载 Monraker靶机ip: 192.168.181.135 kali攻击者ip : 192.168.181.128 说明:获取目标主机的root权限并读取目录中的flag ...

  3. cent os 基本命令一

    命令详情 # man [命令] *********************目录****************************** 一.文件及目录操作 二,vi 三,vim 四,用户操作 五, ...

  4. 使用策略者模式减少switch case 语句

    策略者模式 很简单的一个定义:抽象策略(Strategy)类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现. 场景 在这之前 ...

  5. vue的项目初始化

    1.创建文件 blog 2.下载安装node mongoose 3.(1)vue创建后端项目文件 vue create admin (2)vue创建前端项目文件 vue create web (3)新 ...

  6. BUU八月份水题记录

    目录 [BJDCTF 2nd]fake google(SSTI) [BJDCTF2020]Easy MD5(md5注入) [ZJCTF 2019]NiZhuanSiWei(反序列化) [BJDCTF ...

  7. 靶机BlackMarket

    工具:nmap.dirbuster.dirb.sqlmap.cewl.crunch.hydra 涉及的漏洞:弱口令 垂直越权 SQL注入 CVE-2016-5195脏牛提权(内核竞争提权漏洞) fla ...

  8. MapReduce框架原理-InputFormat数据输入

    InputFormat简介 InputFormat:管控MR程序文件输入到Mapper阶段,主要做两项操作:怎么去切片?怎么将切片数据转换成键值对数据. InputFormat是一个抽象类,没有实现怎 ...

  9. Java8新特性(一)之Lambda表达式

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...

  10. Linux命令(六)之防火墙iptables的相关操作以及端口的开放

    .personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...