细谈 docker

AUFS

docker 使用了一个叫 AUFS 的文件系统,这是一个很诡异的文件系统,他允许你将若干个文件系统“合并”成为一个新的文件系统,这意味着你可以将“增量式”的文件系统改变存放在各自的“commit”中,最终使用的时候通过 AUFS 呈现出来。为什么 docker 要求使用新的内核呢?AUFS 的主页上有一些支持的内核列表,很明显 3.8 之后可以用到新版本的 AUFS。

Vagrant

在 docker 的安装说明中常提到 vagrant 这么个东西,这其实是一个 ruby 写的 package,它也是一个“管理”程序,管理的对象是基于 virtual box 的虚拟机,你可以为虚拟机提供需要的 provision、需要程序集合等配置(通过 ruby),这样将基于 virtual box 虚拟机提供的开发环境弄得更加适合程序员使用。非 Linux 系上如果想玩 docker 很明显需要用 vagrant 提供一个 Linux 的平台,在此之上再玩 container。

docker

从这个角度上来看,如果你的系统已经支持 AUFS,docker 是可以直接弄来玩玩的,尽管现在 docker 仍在大力推进中,这个月份应该有个 release 出来了。在 debian 里面如果想 docker(俺是 sid),可以直接下载 binary(见此),然后就能通过这个 docker 命令干活了(不是太好用 =.=):

  • 首先需要让 docker 在后台运行起来,docker -d,注意默认情况下写 /var/lib/docker 里面东西,我忘记把 var 从 SSD 分出来了,这个目录放 SSD 上感觉比较浪费(因为就试验下),于是先 mount –bind 把别的目录弄到这个地方去,daemon 一定是 root 启动的,但是后面的那些 client 命令可以使用 docker 这个 group 里面的用户来直接提交
  • docker pull ubuntu 下载个 ubuntu 的镜像就可以开始玩了,pull 之后你会发现出现了一些东西,container 目录暂时为空,graph 里面有几个看起来像是 hash value 的目录,对应下载的 commit 部分,volumn 暂时也是空的,repositories 是个 json 文件存放了现在这些 commit 之间的关系
  • 每个 commit 里面大致有 json 和 layer 两个东西,前者是一些基本信息,layer 里面似乎是展开以后的文件系统,估计 AUFS 就会使用这些目录来构造我们的 container
  • docker image 可以列出现在已經存在 image
  • 执行 docker run 之后就会创建 container,这时候会使用 lxc 系列命令来处理产生需要的 container

似乎在 debian 里面这套东西还是有问题,问题来源可能是 lxc 的配置或者是 docker 需要的 lxc 版本不大一样(ubuntu 上似乎好用的是 0.7,debian 里面已经有 1.0),不过匆匆试用的初步感受是如果你需要有一个开发环境,lxc 进行部署就已经很好了,如果是做 deployment 可能更希望有个 docker?最后说一句的是基于 chroot 的 container 被人诟病的一点是“安全性”但是实际上 lxc 也并不安全,有空看看 OpenVZ 是不是个更好的选择。

——————
And it came to pass, when Rachel had born Joseph, that Jacob said unto Laban, Send me away, that I may go unto mine own place, and to my country.

Advertisements
细谈 docker

一个有关“细谈 docker”的想法

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s