/images/avatar.jpg

一步步自己做个Docker之Docker网络原理

/images/docker-logo.png

本文环境:

  • OS:Ubuntu 18.04.4 LTS
  • Golang版本:1.12.13

自己创建Docker网络

当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。 同时,Docker 随机分配一个本地未占用的私有网段(在 RFC1918 中定义)中的一个地址给 docker0 接口。比如典型的 172.17.42.1,掩码为 255.255.0.0。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16)的地址。 当创建一个 Docker 容器的时候,同时会创建了一对 veth pair 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 eth0;另一端在本地并被挂载到 docker0 网桥,名称以 veth 开头(例如 vethAQI2QT)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。如图 https://s1.ax1x.com/2020/04/29/J7aODe.png

Linux之iptables

简介

管理网络流量是系统管理员必需处理的最棘手工作之一,我们必需规定连接系统的用户满足防火墙的传入和传出要求,以最大限度保证系统免受攻击。iptables正是这样的工具。

Elasticsearch简单使用

https://s1.ax1x.com/2020/04/23/Jd4MOf.png

Elasticsearch

Elasticsearch是一个基于Lucene的搜索服务器(Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库)。Elasticsearch使用Java编写并使用Lucene来建立索引并实现搜索功能,但是它的目的是通过简单连贯的RESTful API让全文搜索变得简单并隐藏Lucene的复杂性。

Python曲线拟合

Python曲线拟合

https://s1.ax1x.com/2020/04/16/JkSI7F.png

本文环境:

  • OS:Ubuntu 18.04.4 LTS
  • Python版本:3.6.9

曲线拟合

现在我们有一组数据,表达的含义是在不同的时间点的充值金额,反映在坐标上就是一系列的散点,我们希望选择适当的曲线类型(如y = a*x^2 + b)“最佳”地逼近或拟合已知数据,这便是曲线拟合(curve fitting)。当然,变量间未必都是线性关系,我们可能会用到指数函数、对数函数、幂函数等。

Java经典回顾之Java Web

/images/java-web-develop.jpg

本文环境:

  • OS:Ubuntu 18.04.4 LTS
  • Java版本:1.8.0_221

Java Web

虽然我们现在会用SpringBoot快速创建一个Web Demo,但是基础不能忘(SpringBoot或者SpringMVC都是封装后的产物),下面就让我们回顾一下一个最基本的Java Web项目。

一步步自己做个Docker之Cgroups

/images/docker-logo.png

本文环境:

  • OS:Ubuntu 18.04.4 LTS
  • Golang版本:1.12.13

什么是Linux Cgroups

Linux Cgroups(Control Groups)提供了对一组进程及将来的子进程的资源限制、控制和统计的能力,这些资源包括CPU、内存、存储、网络等。本质上来说,Cgroups 是内核附加在程序上的一系列钩子(hook),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的。