初识 Docker

Docker 是一个最近非常风行的轻量级应用容器。如果不知道的同学自行搜索去吧,这里不在赘述了。针对于 Docker,有个初创公司推出了适用于 Docker 专用的 Linux:CoreOS。一个号称系统运行内存只占用 161MB 的精简系统。这个 CoreOS 只提供了 Docker 需要的必须环境和管理功能,因此很轻量级,非常适合批量部署和我们这种用来研究学习目的的。

值得一提的是里面的管理工具也是由 Golang 开发的,提供 json api 接口,有兴趣的话可以自行查看源代码。

安装必须软件

必须软件需要 Vargrant 和 VirtualBox。Vargrant 可以当作是一个虚拟机和镜像管理器,VirtualBox 我就不用说了吧。安装下载就不说立刻,下载安装地址见下:

1
2
http://www.vagrantup.com/downloads.html
https://www.virtualbox.org/wiki/Downloads

CoreOS 配置

CoreOS 的 Vargrant 脚本可以在 https://github.com/coreos/coreos-vagrant/ 找到,下载下来的方法很简单:

1
2
git clone https://github.com/coreos/coreos-vagrant/
cd coreos-vagrant

然后执行命令直接开启虚拟机了:

1
vagrant up

如果第一次执行,会下载 CoreOS 的镜像,站点在国外,难免会慢一点,不过也没啥关系,稍微等一下吧,如果出现问题了,就重新执行一下。

如果出现下面错误:

1
2
3
4
You specified a box version constraint with a direct box file
path. Box version constraints only work with boxes from Vagrant
Cloud or a custom box host. Please remove the version constraint
and try again.

注释掉 Vagrantfile 文件中的 config.vm.box_version 这行。

执行完成上面的指令之后,CoreOS 就运行了,同时你也注意到有一些关于 ssh 的信息。这个时候怎么登陆到 CoreOS 呢?

1
vagrant ssh

然后就登录到了 CoreOS 系统了。

如果你有代理想要下载加速,也是可以的,在命令行中执行 (Windows):

1
set all_proxy=socks5://127.0.0.1:1080

Docker 试用

先来一个简单的 hello world:

1
docker run ubuntu /bin/echo hello world

嗯,据说国内以后会有源,不过现在还没有,所以镜像又得从国外下载,又是一个漫长的等待…. 经过一天一夜的下载,我的 repo 终于下载成功了….

1
2
core@core-01 / $ docker run ubuntu /bin/echo hello world
hello world

这样就表示一个 docker 模版安装成功了。不过这还早,怎么利用 docker 部署 python 应用呢?

首先是创建一个 Docker 容器:

1
sudo docker run -i -t -p 80:80 ubuntu /bin/bash

执行完成之后,你不仅会创建一个容器,并且会登录到这个容器内了。这样就可以当作一个简单的系统来应用了。退出容器的方法是按快捷键 CTRL+P 和 CTRL+Q。列举运行的 docker 可以使用 sudo docker ps 命令,然后 docker attach [id] 方式进入容器。

根据之前提到的内容,我们现在可以执行 coreos 里面没有的命令了,比如说 apt-get:

1
2
apt-get update
apt-get upgrade

接下来是安装必须的工具了:

1
2
apt-get install -y tar git curl nano wget dialog net-tools vim build-essential zlib1g-dev
apt-get install -y python python-dev python-setuptools python-pip libxml2-dev libxslt-dev libffi-dev

接下来安装一些 python 依赖库:

1
2
pip install cython gevent flask falcon sqlalchemy lxml cffi somplejson
pip install --allow-external mysql-connector-python mysql-connector-python

下面就是开发一些的东西啦,每个人都不同,这里就不多说了。docker 自动化部署之类的东西就放在下个日志来讲好了。