docker之程序员系列 (一)
因为我主要使用 ubuntu 做服务器,所以以下的操作都是在 ubuntu server 14.04下进行。
OSX 下的选择
虽然官方提供了一个工具(boot2docker),但是说到底,它其实也是在 OSX 下使用 virtualbox 虚拟了一个 linux 出来,然后再在 linux 下进行 docker 操作。那么对于我这样的凡事都希望清晰、简单的人来说,第一选择肯定不会使用这个工具,而是会选择从头开始。如果你和我一样,那么我们需要下面这几样东西:
- virtualbox
- ubuntu server 14.04
linux 安装完成之后,为了更好的使用,你需要知道几件关于 virtualbox 的事情:
- 如何映射端口
- 在命令行启动虚拟机
映射端口在 virtualbox 的gui 界面中就可以简单的完成。下面我贴出命令行启动和保存虚拟机的代码:
VBoxManage startvm Ubuntu --type headless |
VBoxManage controlvm Ubuntu savestate |
Ubuntu 下 docker 安装和配置
docker 安装和配置和其他程序没有什么两样。使用apt-get进行安装:
sudo apt-get udpate |
此时 docker 的每次运行都需要加上前缀sudo,比较麻烦。可以进行如下的处理:
sudo groupadd docker |
其中,${USER}
代表 ubuntu 的当前用户。具体可以参考 askubuntu.com。
第一个 image
现在我们需要一个 image。这里也有几种选择:
- 从网上下载。如果网络速度比较快的话,可以使用下面的命令从 docker 官方库中搜索并拉一个 image 下来:
docker search ubuntu
docker pull ubuntu - 自己做一个
如果你选择自己做一个,也是有多个选择,但这里我选择简单一点,使用 debootstrap 工具。而使用这个工具,不需要一个参数一个参数自己输入,docker 官方提供了一个脚本mkimage.sh
。
git clone https://github.com/docker/docker.git |
按照提示进行即可。
运行容器
现在我们有了一个baseimage,在我们启动它之前,我们可以给它打一个 tag。
# 查看当前用于的 image |
当我们拥有多个 image 之后,可以很容易的通过 tag 来识别各自的用处。
# 运行这个 dock |
这样就启动了一个容器,把这个容器命名为 first,并且获得一个控制台。
保存修改
容器的一大优势就是很方便的丢弃一些数据和状态。如果你只是临时性的运行一下程序,验证一些想法,容器是非常方便的。当退出并且删除容器之后,所有的数据都会被抛弃。
但是当你需要保存数据或是状态,那么需要显示的进行保存。docker 的一些概念和 git 相似,这里也是通过 commit 来保存容器:
docker commit first tag |
tag可以是原来的 image 的 tag,也可以是一个新的 tag。