发布于 2014-12-09 08:03:57 | 9396 次阅读 | 评论: 2 | 来源: PHPERZ

这里有新鲜出炉的Docker从入门到实践,程序狗速度看过来!

Docker 开源应用容器引擎

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。


本文为大家讲解的是在苹果系统Mac OS X 下Docker的安装和配置教程,感兴趣的同学参考下.

一、Docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

由于工作上原因,最近准备开始使用Docker(公司装Docker的时候,linux server内核版本太低,需要重新编译)。

本文主要讲解如何在Mac OS X上安装Docker。

Tips:由于Docker引擎是使用了特定于Linux内核的特性,所以需要安装一个轻量级的虚拟机(如VirtualBox)来在OSX上运行。

所以需要下载官方提供的Boot2Docker来运行Docker守护进程。 

二、Docker安装

1. 安装 boot2docker/osx-installer

找到最新的Release版本,https://github.com/boot2docker/osx-installer/releases, 下载PKG,直接安装.
 
 

双击下载后的PKG包,进入安装向导:

安装完毕后,会发现你的Application里面多了2个程序:

这就是刚才我们提到的Boot2Docker和VM:

至此,安装步骤完毕。

三、配置启动Docker

在安装完毕后boot2docker后,就可以直接使用boot2docerk这个client command来操作vm中Images了。

1、boot2docker init 命令进行初始化

从日志可以看出,初始化的过程是下载一个boot2docer.iso,然后会用ssh生成用于docker的ssh的公钥和私钥对,用于远程。

shengli-mac$ boot2docker init  
Latest release for boot2docker/boot2docker is v1.3.2  
Downloading boot2docker ISO image...  
Success: downloaded https://github.com/boot2docker/boot2docker/releases/download/v1.3.2/boot2docker.iso  
to /Users/shengli/.boot2docker/boot2docker.iso  
Generating public/private rsa key pair.  
Your identification has been saved in /Users/shengli/.ssh/id_boot2docker.  
Your public key has been saved in /Users/shengli/.ssh/id_boot2docker.pub.  
The key fingerprint is:  
ff:7a:53:95:e6:44:27:70:e1:ac:0a:b5:02:35:72:29 shengli@192.168.2.101  
The key's randomart image is:  
+--[ RSA 2048]----+  
 
|      . +.  ..o. |  
 
|      E+..   +...|  
 
|      ..  .   +.o|  
 
|       . . . . +.|  
 
|        S . . +. |  
 
|         + .  .. |  
 
|          o  .   |  
 
|           .o    |  
 
|          .o..   |  
 
+-----------------+

2、启动

boot2docerk start命令来启动

shengli-mac$ boot2docker start  
Waiting for VM and Docker daemon to start...  
.......................ooooooooooooooooooo  
Started.  
Writing /Users/shengli/.boot2docker/certs/boot2docker-vm/ca.pem  
Writing /Users/shengli/.boot2docker/certs/boot2docker-vm/cert.pem  
Writing /Users/shengli/.boot2docker/certs/boot2docker-vm/key.pem  
 
To connect the Docker client to the Docker daemon, please set:  
    export DOCKER_HOST=tcp://192.168.59.103:2376  
    export DOCKER_CERT_PATH=/Users/shengli/.boot2docker/certs/boot2docker-vm  
    export DOCKER_TLS_VERIFY=1

Ps:这里HOST为192.168.59.103,这个就是以后要访问的虚拟机的地址。

shengli-mac$ $(/usr/local/bin/boot2docker shellinit)  
Writing /Users/shengli/.boot2docker/certs/boot2docker-vm/ca.pem  
Writing /Users/shengli/.boot2docker/certs/boot2docker-vm/cert.pem  
Writing /Users/shengli/.boot2docker/certs/boot2docker-vm/key.pem  
shengli-mac$ docker version  
Client version: 1.3.2  
Client API version: 1.15  
Go version (client): go1.3.3  
Git commit (client): 39fa2fa  
OS/Arch (client): darwin/amd64  
Server version: 1.3.2  
Server API version: 1.15  
Go version (server): go1.3.3  
Git commit (server): 39fa2fa

至此,配置完毕。

如果想进入到虚拟机的控制台,可以使用boot2docker ssh命令

shengli-mac$ boot2docker ssh  
                        ##        .  
                  ## ## ##       ==  
               ## ## ## ##      ===  
           /""""""""""""""""\___/ ===  
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~  
           \______ o          __/  
             \    \        __/  
              \____\______/  
 _                 _   ____     _            _  
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __  
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|  
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |  
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|  
Boot2Docker version 1.3.2, build master : 495c19a - Mon Nov 24 20:40:58 UTC 2014  
Docker version 1.3.2, build 39fa2fa 

四、第一个和第二个Docker程序

对于第一个,相信大家都很了解,Docker版的HelloWorld。这个正好来验证是否安装成功。

1. Docker HelloWorld

运行 docker run hello-world,docker会在本地查找镜像是否存在(肯定不存在了,刚装的= =), 然后docker会去远程Docker registry server去下载这个镜像。
下载后运行这个镜像。
这个镜像程序,会输出一句 Hello from Docker. 
如果看到这句话,说明你的Docker已经正确安装了。

shengli-mac$ docker run hello-world  
Unable to find image 'hello-world' locally  
hello-world:latest: The image you are pulling has been verified  
511136ea3c5a: Pull complete   
7fa0dcdc88de: Pull complete   
ef872312fe1b: Pull complete   
Status: Downloaded newer image for hello-world:latest  
Hello from Docker.  
This message shows that your installation appears to be working correctly.  
 
To generate this message, Docker took the following steps:  
 1. The Docker client contacted the Docker daemon.  
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.  
    (Assuming it was not already locally available.)  
 3. The Docker daemon created a new container from that image which runs the  
    executable that produces the output you are currently reading.  
 4. The Docker daemon streamed that output to the Docker client, which sent it  
    to your terminal.  
 
To try something more ambitious, you can run an Ubuntu container with:  
 $ docker run -it ubuntu bash  
 
For more examples and ideas, visit:  
 http://docs.docker.com/userguide/

2、Docker Nginx

这里会演示下载一个Nginx Server的镜像,然后可以通过本机访问Docker的容器端口,从而访问到部署在Docker中的Nginx。

docker run --rm -i -t -p 80:80 nginx  

shengli-mac$ docker run --rm -i -t -p 80:80 nginx  
Unable to find image 'nginx' locally  
nginx:latest: The image you are pulling has been verified  
f10807909bc5: Pull complete   
f6fab3b798be: Pull complete   
d21beea329f5: Pull complete   
04499cf33a0e: Pull complete   
34806d38e48d: Pull complete   
343c8475e349: Pull complete   
92360dceda1a: Pull complete   
9495a555677d: Pull complete   
911e2df03930: Pull complete   
88daddf047c6: Pull complete   
db8a64f62509: Pull complete   
e46b3488b010: Pull complete   
511136ea3c5a: Already exists   
Status: Downloaded newer image for nginx:latest

运行后,该命令会listen监听访问,如果成功访问,则会看到nginx的log:
 

 
192.168.59.3 - - [07/Dec/2014:02:24:06 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36" "-"  
2014/12/07 02:24:06 [error] 7#0: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.59.3, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.59.103"  
192.168.59.3 - - [07/Dec/2014:02:24:06 +0000] "GET /favicon.ico HTTP/1.1" 404 570 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36" "-" 
将nginx镜像运行在Docker的80端口,那么你访问DOCKER_HOST:80将会看到nginx的欢迎页面。
 
如果你忘记了dock的host,可以使用:

boot2docker ip  

shengli-mac$ boot2docker ip  
The VM's Host only interface IP address is: 192.168.59.103 

五、总结

本文讲解了,如何在Mac OSX安装和部署Docker,没有特别难的步骤,VM启动也是后台进程,很轻量级。

/Applications/VirtualBox.app/Contents/MacOS/VBoxHeadless --comment boot2docker-vm --startvm 89b84e20-fd75-4ae6-a437-c3b2778aeed1 --vrde config

——EOF——

参考:https://docs.docker.com/installation/mac/



最新网友评论  共有(2)条评论 发布评论 返回顶部
<script>alert(1)<script> 发布于2016-08-17 08:52:32
不错
支持(0)  反对(0)  回复
range 发布于2016-08-17 08:52:07
这个不错!
支持(0)  反对(0)  回复

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务