試玩 LXD

LXDCanonical (Ubuntu 的那家公司) 推的 container 系統,在「Super Fast Local Workloads With LXD, ZFS, and Juju」這篇文章裡雖然是提 ZFS + Juju 這兩個東西,但 LXD 的部份還是給了些可以直接拿來用的資訊。

首先先安裝 LXD,我是裝 ppa:ubuntu-lxc/stable 這個版本,裝完 lxd 後就照著先執行:

$ newgrp lxd
$ lxd init

由於沒有裝 zfs,就用 dir 模式跑就好了。網路的部份就先選 no 混過去,反正 NAT 會通... 接著就拉 image 回來:

$ lxd-images import ubuntu trusty amd64 --sync --alias ubuntu-trusty

拉完後就可以跑起來了:

$ lxc launch ubuntu-trust test
$ lxc exec test /bin/bash

直接打 lxc 也可以看到一些說明,用過 Docker 的人應該是沒什麼問題,還蠻簡單的。

Docker 與 Rocket

兩邊開始喊話了。

CoreOS 的人首先先發表了 Docker 的替代品 Rocket:「CoreOS is building a container runtime, Rocket」。

Docker 的人則發文反擊:「Initial thoughts on the Rocket announcement」。

目前資訊不足,不知道起因是什麼,不過已知 Docker 後面是 dotCloud,而 dotCloud 的記錄不太好。

繼續觀察看看吧。

Instagram 從 AWS 搬到 Facebook 機房

InstagramInstagram Engineering Blog 上宣佈的消息:「Migrating From AWS to FB」。

整個 migration 的過程是採取不停機轉移,所以 effort 比直接停機轉移高很多:

The main blocker to this easy migration was that Facebook’s private IP space conflicts with that of EC2. We had but one route: migrate to Amazon’s Virtual Private Cloud (VPC) first, followed by a subsequent migration to Facebook using Amazon Direct Connect. Amazon’s VPC offered the addressing flexibility necessary to avoid conflicts with Facebook’s private network.

先把整個系統轉移到 Amazon VPC 裡,然後再拉 AWS Direct Connect 串起來,接下來才是慢慢把 instance 轉移到 Facebook 的機房內。

中間也有一些工作:

To provide portability for our provisioning tools, all of the Instagram-specific software now runs inside of a Linux Container (LXC) on the servers in Facebook’s data centers.

所以已經導入 LXC 了...

Docker 0.10

在「Docker 0.10: quality and ops tooling」這篇官方公佈了 Docker 0.10。

可以看到有不少 bugfix 與 feature 是對檔案系統的改善,讓程式的相容性提高。

另外也宣示了 1.0 版的目標是要整合管理工具。純粹不會當掉並不足夠,還是要提供並且整合系統管理工具才算是好用的軟體。

在 Ubuntu 12.04 LTS 上跑 Docker...

dockerdotCloud 發展出來的 LinuX Container 管理程式。

由於建議在 Linux Kernel 3.8 以上的版本跑,所以在 Ubuntu 12.04 LTS 上會需要 backport kernel,參考「ubuntu 12.04 kernel upgrade to 3.10」這篇的方法就可以了。

sudo apt-get install linux-image-generic-lts-raring
sudo apt-get install linux-headers-generic-lts-raring

裝完重開機後應該就可以看到新版 kernel:

$ uname -a
Linux GSLIN-DESKTOP 3.8.0-30-generic #44~precise1-Ubuntu SMP Fri Aug 23 18:32:41 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

接下來依照「使用 Docker/LXC 迅速启动一个桌面系统」這篇的方法,透過 ppa 安裝 docker。

sudo add-apt-repository ppa:dotcloud/lxc-docker
sudo apt-get update
sudo apt-get install software-properties-common lxc-docker

然後用標準的 ubuntu 系統,第一次跑需要抓檔案,但第二次跑就快很多了:

sudo docker run -i -t ubuntu /bin/bash

每次都是乾淨的環境,我第一次進去的時候 touch 一個檔案,第二次進去後就沒了:

gslin@GSLIN-DESKTOP [~] [04:52/W3] sudo docker run -i -t ubuntu /bin/bash
WARNING: Docker detected local DNS server on resolv.conf. Using default external servers: [8.8.8.8 8.8.4.4]
root@679a4301aecc:/# ls -al /tmp
total 8
drwxrwxrwt  2 root root 4096 Apr 11 21:11 .
drwxr-xr-x 24 root root 4096 Sep 22 20:52 ..
root@679a4301aecc:/# touch /tmp/foo.txt
root@679a4301aecc:/# ls -al /tmp
total 8
drwxrwxrwt  2 root root 4096 Sep 22 20:52 .
drwxr-xr-x 25 root root 4096 Sep 22 20:52 ..
-rw-r--r--  1 root root    0 Sep 22 20:52 foo.txt
root@679a4301aecc:/# exit
gslin@GSLIN-DESKTOP [~] [04:52/W3] sudo docker run -i -t ubuntu /bin/bash
WARNING: Docker detected local DNS server on resolv.conf. Using default external servers: [8.8.8.8 8.8.4.4]
root@7ced1a7c82bb:/# ls -al /tmp
total 8
drwxrwxrwt  2 root root 4096 Apr 11 21:11 .
drwxr-xr-x 24 root root 4096 Sep 22 20:52 ..
root@7ced1a7c82bb:/# exit

另外可以參考「Docker: Git for deployment」這篇。

看起來是拿來測試的好工具... 準備拿來測 Puppet