2014年5月30日星期五

MAC_015:你好,Docker!

环境: MAC OS X 10.9.3

最近Docker好像火得不得了,于是跟着Helloworld教程做了一遍。

What is Docker?
Docker is a container based virtualization framework. Unlike traditional virtualization Docker is fast, lightweight and easy to use. Docker allows you to create containers holding all the dependencies for an application. Each container is kept isolated from any other, and nothing gets shared.
Docker 是什么?
Docker 是一个基于容器的虚拟化框架。与传统的虚拟话产品不同,Docker更快、更轻、更易使用。Docker允许你创建这样的容器:与应用有关的所有依赖都打包在容器之中。各个容器之间保持隔离性,不会共享任何东西。

Docker 由下面这些组成:
(1)Docker 服务器守护程序(server daemon),用于管理所有的容器。
(2)Docker 命令行客户端,用于控制服务器守护程序。
(3)Docker 镜像:查找和浏览 docker 容器镜像。https://index.docker.io/

1. 安装
(1)安装VirtualBox,因为Docker 服务器要运行在VirtualBox中
(2)Docker 服务器:brew install boot2docker
(3)Docker 客户端:brew install docker
因为我的环境是MAC OS X,所以使用brew来安装最简单,关于brew的安装,请参考《MAC下安装Homebrew》。
手工安装的方法也有,请参考文献1。

2. 运行 Docker daemon
(1)初始化Docker daemon:boot2docker init
(2)启动Docker daemon:boot2docker up
boot2docker还有很多参数:{init|start|up|pause|stop|restart|status|info|delete|ssh|download}。

3. 运行 Docker客户端
Docker客户端命令就是docker。
(1)docker version
Client version: 0.11.1
Client API version: 1.11
Go version (client): go1.2.1
Git commit (client): fb99f99
Server version: 0.11.1
Server API version: 1.11
Git commit (server): fb99f99
Go version (server): go1.2.1
(2)docker info
Containers: 4
Images: 10
Storage Driver: aufs
 Root Dir: /mnt/sda1/var/lib/docker/aufs
 Dirs: 18
Execution Driver: native-0.2
Kernel Version: 3.14.1-tinycore64
Debug mode (server): true
Debug mode (client): false
Fds: 11
Goroutines: 13
EventsListeners: 0
Init Path: /usr/local/bin/docker

4. Using Docker port forwarding with boot2docker
In order to forward network ports from Docker with boot2docker we need to manually forward the port range Docker uses inside VirtualBox. To do this we take the port range that Docker uses by default with the -P option, ports 49000-49900, and run the following command.
这一步没太明白,照做就是了。注意,要先停掉Docker daemon。

for i in {49000..49900}; do
 VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port$i,tcp,,$i,,$i";
 VBoxManage modifyvm "boot2docker-vm" --natpf1 "udp-port$i,udp,,$i,,$i";
done

5. 升级 Docker daemon
(1)boot2docker stop
(2)boot2docker download
(3)boot2docker start

好了,Docker服务器和客户端都装好了,现在可以下载一个image了。

6. 启动Docker daemon后,下载busybox image:docker pull busybox

7. docker run busybox /bin/echo hello world
这个命令是运行一个简单的echo命令,不过是在busybox这个image中运行的。
(1)docker run 启动一个容器。
(2)busybox是image。
(3)/bin/echo是运行在容器中的命令。

说明:
在~/.boot2docker目录下有:boot2docker-vm.vmdk 和 boot2docker.iso。
打开virtualBox,会发现已经自动装载了虚机:boot2docker-vm。

参考文献:
1. https://www.docker.io/

没有评论: