Docker试用感受

United Stack的Denny Zhang同学刚写了篇Docker的介绍文章。

http://www.unitedstack.com/blog/episode-1-what-is-docker/


顺便试了一下,简单说一下安装的步骤吧。以Redhat RHEL为例。

http://docs.docker.io/en/latest/installation/rhel/

$ sudo yum -y install docker-io
$ sudo service docker start
$ sudo chkconfig docker on
$ sudo docker run -i -t ubuntu /bin/bash


Docker会自动去下载Ubuntu for Docker的images。然后自动进入VM,其实这不是虚拟机,只是一个隔离出来的环境。Docker就是它的container。

[root@localhost mongo]# docker run -i -t ubuntu /bin/bash
root@bf6e7b27c8fe:/#


你会发现它其实很简单,甚至连ifconfig命令都没有,但'ip a'还是能查它的ip地址的。

root@bf6e7b27c8fe:/# ip a
55: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether ca:f2:56:e9:d4:6e brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.13/16 brd 172.17.255.255 scope global eth0
    inet6 fe80::c8f2:56ff:fee9:d46e/64 scope link
       valid_lft forever preferred_lft forever
57: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
[root@localhost zzhan17]# iptables-save|grep docker0
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT


Docker主页上还给出了一个如何build MongoDB的image的例子。这个也很快能试成功,注意在Host机器上需要先yum install -y mongodb。

http://docs.docker.io/en/latest/examples/mongodb/


它的原理就是在iptables里加了一条DNAT,把目标端口为49153的访问变成访问虚拟机的27017。

-A DOCKER ! -i docker0 -p tcp -m tcp --dport 49153 -j DNAT --to-destination 172.17.0.11:27017


Docker的最大优势在于快和轻量,而Heat支持的Cloudformation是Cluster级别的,你可以在Heat template中指定启动多少个虚拟机,什么情况下启动(比如CPU利用率大于50%)。而Docker还是定位在单节点上的虚拟化。


最新的OpenStack Havana已经支持了Docker,如果用Heat+Docker, 倒是可能产生奇妙的效果。总之对用户来说是个不错的新选择。



你可能感兴趣的:(docker,试用感受)