Jan 01, 0001

layout: post title: LinuxKit date: 2017-04-19 11:09:53 tags: [docker]

LinuxKit是Docker最新发布的一个用于为容器构建安全、便携、可移植操作系统的工具包。它根据用户编写的yaml(指定kernel和基于docker image的一些列服务)自动构建一个常见虚拟化平台或云平台的虚拟机镜像,并自动运行起来。主要特性包括

  • 增强安全性
  • 易用、可扩展
    • 所有服务均可定制,且用户服务和系统服务都是基于docker image
    • 构建过程基于docker
    • 基于Infrakit方便部署生成的镜像

安装

git clone https://github.com/linuxkit/linuxkit $GOPATH/src/github.com/linuxkit/linuxkit
make && make install

原理

编写yaml

LinuxKit需要编写一个yaml文件,来配置所需要的服务。可选的配置包括

...
Jan 01, 0001

layout: “post” title: “Alpine Linux” date: “2016-03-26 14:27”

Alpine Linux

随着Alpine Linux被越来越多的官方镜像使用,我们有必要了解一下Alpine Linux到底是个什么鬼。

Alpine Linux 是一个面向安全应用的轻量级 Linux 发行版。它采用了musl libc和busybox以减小系统的体积和运行时资源消耗,同时还提供了自己的包管理工具apk。Alpine Linux的内核都打了grsecurity/PaX补丁,并且所有的程序都编译为Position Independent Executables (PIE) 以增强系统的安全性。

...
Jan 01, 0001

layout: “post” title: “Docker Datacenter” date: “2016-02-26 17:38” category: docker tags: [docker, cluster]

Docker annonced Docker Datacenter (DDC) at Februrary 23. It is an integrated, end-to-end platform for agile application development and management from the datacenter to the cloud.

With Docker Datacenter, organizations are empowered to deploy a Containers as a Services (CaaS) on-premises or in your virtual private cloud. A CaaS provides an IT managed and secured application environment of content and infrastructure where developers can build and deploy applications in a self service manner.

...
Jan 01, 0001

layout: “post” title: “Google’s Transition From Single Datacenter, To Failover, To A Native Multihomed Architecture” date: “2016-02-24 10:33” category: cluster tags: [highscalability, google]

The main idea of the paper is that the typical failover architecture used when moving from a single datacenter to multiple datacenters doesn’t work well in practice. What does work, where work means using fewer resources while providing high availability and consistency, is a natively multihomed architecture:

Our current approach is to build natively multihomed systems. Such systems run hot in multiple datacenters all the time, and adaptively move load between datacenters, with the ability to handle outages of any scale completely transparently. Additionally, planned datacenter outages and maintenance events are completely transparent, causing minimal disruption to the operational systems. In the past, such events required labor-intensive efforts to move operational systems from one datacenter to another

...
Jan 01, 0001

layout: “post” title: “Hello world to Docker Mac” date: “2016-04-15 16:34”

终于等到了Docker for Mac。如之前期待的,体验真的很棒:

  • 安装简单了,标准的Mac Application
  • VPN无障碍
  • 原生的(osxfs)文件系统共享(其实还支持9p方式)
  • Docker Application管理 xhyve VM,更改配置后会自动重启
  • 速度快,在使用体验上跟在Linux上面已经差别不大
  • 可以与docker toolbox共存:Docker for Mac也会像Linux上面一样监听一个/var/run/docker.sock,这样客户端默认情况下就会走它的API;但也可以通过环境变量告诉docker CLI调用其他Docker Daemon的API(比如docker-machine管理的vm等)

...
Jan 01, 0001

layout: “post” title: “Kubernetes drain” date: “2016-02-17 18:57”

Kubernetes v1.2以前,如果想要对某个NODE(也就是Kubelet和Docker所在的机器)进行维护(比如升级Docker或者内核等)又不想影响运行中的Pod的话,需要手动做很多的步骤:

...
Jan 01, 0001

layout: “post” title: “Kubernetes network policy” date: “2016-02-17 18:53”

Kubernetes network policy

Kubernetes社区(确切的说是Kubernetes Network SIG [1])正在讨论Network Policy Proposal,以实现SDN、网络隔离、IP Overlapping等[2]复杂的网络需求。

...
Apache的Mesos和Google的Kubernetes 有什么区别 Jan 01, 0001

Kubernetes是一个开源项目,它把谷歌的集群管理工具引入到虚拟机和裸机场景中。它可以完美运行在现代的操作系统环境(比如CoreOS和Red Hat Atomic),并提供可以被你管控的轻量级的计算节点。Kubernetes使用Golang开发,具有轻量化、模块化、便携以及可扩展的特点。我们(Kubernetes开发团队)正在和一些不同的技术公司(包括维护着Mesos项目的MesoSphere)合作来把Kubernetes升级为一种与计算集群交互的标准方式。Kubernetes重新实现了Google在构建集群应用时积累的经验。这些概念包括如下内容:

...
awesome quick start Jan 01, 0001

awesome是Linux平台出色的窗口管理器,具有速度快、界面简捷等优点。其安装也比较简单:

sudo apt-get install -y awesome awesome-extra gnome-settings-daemon nautilus
sudo apt-get install -y --no-install-recommends gnome-session
mkdir -p ~/.config/awesome

常用快捷键整理:

切换程序
切换到下一个程序:Mod4 + j
切换到上一个程序:Mod4 + k
切换到主窗口中的第一个程序:Mod4 + Ctrl + Return

切换tag
切换到上一个选择的tag:Mod4 + Esc
切换到某个指定的tag:Mod4 + 1-9
切换到前一个tag:Mod4 + Left
切换到下一个tag:Mod4 + Right

程序窗口状态修改
最大化/非最大化:Mod4 + m
浮动/平铺:Mod4 + Ctrl + Space
最小化:Mod4 + n
从最小化中恢复:Mod4 + Ctrl + n
关闭程序:Mod4 + Shift + C

程序窗口的转移和显示
转移到某个tag:Mod4 + Shift + 1-9(或在某个tag名上按Mod4+鼠标左键)
增加到某些tag:Mod4 + Shift + Ctrl + 1-9
转移到下一个窗口中的位置:Mod4 + Shift + j
转移到上一个窗口中的位置:Mod4 + Shift + k

布局修改
当前程序窗口宽度增加5%:Mod4 + Shift + h
当前程序窗口宽度减少5%:Mod4 + Shift + l
切换到下一种布局方式:Mod4 + Space
切换到上一种布局方式:Mod4 + Ctrl + Space

窗口管理
重启awesome:Mod4 + Ctrl + r
退出awesome:Mod4 + Shift + q
运行某个命令:Mod4 + r
打开awesome菜单:Mod4 + w

多显示器下的操作
切换到下一个屏幕:Mod4 + Ctrl + j
切换到上一个屏幕:Mod4 + Ctrl + k
将程序发送到下一个屏幕:Mod4 + o
awk examples Jan 01, 0001
  • precede each line by line number
awk '{print NR, $0}' filename
  • replace first field by line number
awk '{$1=NR; print}' filename
  • print field 1 and field 2
awk '{print $1,$2}' fielname
  • print last field
awk '{print $NF}' filename
  • print non empty lines
awk 'NF>0{print $0}' filename
  • print if more than 4 fields
awk 'NF>4{print $0}' filename
  • print matching lines (egrep)
awk '/test.*/{print $0}'  filename
  • print lines where first field matches
awk '$1 ~ /^print.*/{print $0}' filename
  • calcuting sum of field 2
awk 'BEGIN{sum=0}{sum+=$2}END{print sum}' filename
  • for loop
awk '{sum=0; for(i=1;i<=NF;i++)sum+=$i; print sum}' filename
  • make arrays
awk '{n = split($0, array); print array[1], array[3]} ' filename 
  • reverse a file
awk '{x[NR]=$0} END{for(i=NR;i>0;i--)print x[i]}' filename 
  • Associative Arrays
awk '{amount[$1]=$2} END{for(name in amount) print name, amount[name]}' filename