Dylan's Blog

世界那么精彩,多体验,多分享

Git 内部原理解析

相信你一定对 git 并不陌生,日常开发都在用 git 来管理代码,但是你真的懂它吗?不妨思考一下这几个问题: 不小心 commit 了一个大文件,删掉后还会占用 git repo 的空间吗? git 是否保存的是文件的 diff? 删除一个 branch 真正是删除了什么? Detached HEAD 是什么意思? rebase 和 merge 有什么区别? 如...

镜像构建工具 Habitus

Habitus 是一个独立的 Docker 镜像构建工具,它基于 Dockerfile 和 build.yml 来构建 Docker 镜像。Habitus 可以将工作流添加到镜像的构建过程中,允许使用者创建一个构建链,根据工作流生成最终的镜像。这个和 Openshift 的 source-to-image 以及 Docker 17.05 开始支持的 multi-stage builds 有些...

iptables详解

iptables是一个Netfilter管理工具,能够实现对内核中网络防火墙的管理。它工作在用户空间中,通过规则来定义防火墙的行为。 Netfilter是由Rusty Russell提出的Linux 2.4内核防火墙框架,该框架简洁而灵活,可以实现数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换等安全策略应用中的功能。 tables & chains iptable...

Redis+Keepalived高可用方案

借助于Redis Sentinel(哨兵)和Keepalived,我们可以实现Redis的高可用性。其中Sentinel是个基于Redis HA的解决方案,它支持Redis自身的主从角色替换,所以严格来说它其实只是个Redis的主从监控服务。当Redis主从发生变化,由于Master的IP发生了变化,我们需要借助于Keepalived的VIP来实现IP的漂移。 本文中我们将部署三个节点...

Docker架构

Docker主要由三部分组成:Docker Daemon,Docker Client以及Registry。Docker Daemon和Docker Client采用client-server的架构,如下图所示,Docker Daemon运行在宿主机上,Docker Client通过REST API与其交互,完成镜像、容器的管理。 Docker Engine ~1.11 在Doc...

容器内多进程管理

容器内多进程指在一个容器中运行多个进程的情况(一般并不推荐这种用法)。虽然Docker鼓励“一个容器一个进程(one process per container)”的方式,然而,在有些情况下,我们不得不选择这种折衷的方案。比如一些传统的由多个进程紧密耦合的应用,就很难拆分到多个容器中。再如docker-in-docker的应用场景,我们需要在容器中启动docker deamon进程,同时运行...