Docker 容器使用小结

目前也已经将生产环境中所有服务运行在 Docker 容器中,从一年前就一直想写一篇有关 Docker 的文章,可是年初以来一直没有时间,趁着这个中秋节假期,终于开始着笔。

介绍

Docker 是一个开源的应用容器引擎,使用轻量级的容器虚拟化技术,开发者可以方便的打包他们的应用以及依赖包到一个可移植的容器中,来发布到任何流行的 Linux 发行版上。

  • 命名空间: Docker 引擎采用 namespaces 来提供一个隔离的工作区,通过 kernel 的 pid、net、ipc、mnt、uts 等 namespaces 实现对进程、网络、消息、文件系统以及 HostName/DomainName 的隔离。
  • 资源配置:通过 cgroups 来控制容器的硬件资源。
  • 文件系统:利用 UnionFS,通过创建图层来实现对容器的轻量与快速更新。Docker 引擎可以使用多个 UnionFS 的变种,包括 AUFS、btrfs、vfs 与 DeviceMapper。
  • 容器格式:Docker 引擎结合 namespaces、cgroups、UnionFS 一起组成 libcontainer 容器格式,将来或许会支持更多的譬如 BSD Jails、Solaris Zones 容器格式。

Docker 已经成熟并被大量的应用到生产环境,所以概念部分就不阐述了,针对与 Virtual Machines 的区别说一下。

解决 Windows Thin PC 中无法更新的问题

虚拟机几乎已经变成必备工具,只不过,开启虚拟客户机的次数越来越少,到最后,唯有在网银支付的时候才会开启虚拟机应付一下。之前我的虚拟客户机 Windows XP 切换到 Windows 10,看着这个笨重的家伙,固态盘上占用的恐怖的体积,促使我寻找一个轻量级的虚拟客户机。

不得不承认,老了就跟不上时代了,通过搜索才发现,原来 Microsoft 早就提供了一款专门面向虚拟桌面基础架构消费者的操作系统 Windows Thin PC,该系统是 Windows 7 的超轻量级版本,主要面向企业客户。

闲话少说,MSDN 版下载:

ed2k://|file|en_windows_thin_pc_x86_697681.iso|1576980480|2D0E6A048EB3F314F556B4F0834A95E2|/

创建你自己的 DNS 缓存服务器

好长时间没写文章了,琢磨着写些啥。正好今天有个一个需求,需要自建 DNS 来避免污染。于是今天花了些时间,研究了下自建 DNS。也正好将一些过程与心得写下来,期间在两个发型版 ( CentOS 7、Gentoo ) 上尝试了下,正常使用。

自建 DNS 的方案可以多种搭配,不过如果项目团队内部使用的话,个人还是推荐 Dnsmasq + DNSCrypt-proxy 方案,小巧,部署方便。

  • Dnsmasq:
    • 提供 DNS 缓存和 DHCP 服务功能
  • DNSCrypt-proxy:
    • 在客户端与 DNS 服务端之间提供加密与认证

工具清楚了,那么开始动手

托管 Github Pages 的博客升级至 jekyll 3

昨天收到 Github 的邮件,提示 GitHub Pages 将于 5 月 1 号以后只支持 kramdown。

马上翻到官网看了下,在 Jekyll 3 中,一些功能被剥离,成为插件,这意味着 --safe 模式下,一些 Jekyll 2 下的功能不被支持,如下:

  • jekyll-paginate
  • jekyll-coffescript
  • jekyll-gist
  • pygments.rb
  • redcarpet
  • toml
  • classifier-reborn

Homebrew 与 Caskroom 的 Coding 镜像

面对抽风的网络是多么的无奈,我等只是一个守着自己一亩三分田的小农,没办法,今天抽空将 Homebrew 与 Caskroom 的一部分在 Coding 上做了个镜像 (原 gitcafe ),至少不用每次 update 时在一串命令行前输入 all_proxy=socks5://127.0.0.1:8087 了。

事实上,就算输了 proxy 变量也还是经常抽风,这才是促使我做这件事的原因。同时感谢 Coding,^_^