在MAC上快速安装Docker

一 系统需求
git

MAC OSX的系统要10.8 Mountain Lion以上,我用的是EL Captain,10.11.2。github


二 安装说明docker

由于Docker daemon须要用到Linux特性的内核,所以没法在OSX上直接运行,须要将docker-machine 加载并运行在一个Linux虚拟机上,这个虚拟机运行在MAC的OSX之上。示意以下:shell

wKiom1aN7PWwjpKdAAFcz7fxUrQ134.png

Docker 提供toolbox工具箱,能够快速安装并拥有一个Docker环境,工具箱的最新版本是1.9.1g,ide

存放在github上,我把它下载下来,放在网盘上,供国内用户快速下载。工具

MAC 版下载连接: ui

http://pan.baidu.com/s/1Omab8 密码: 4vcpspa

Windows 版下载连接:命令行

 http://pan.baidu.com/s/1dDR3FNz 密码: 2a6s3d


Toolbox中包含的组件有:

  • Oracle VM VirtualBox:Oracle的虚拟软件

  • Docker Machine :Linux VM

  • Docker Engine : docker 

  • Docker Compose :  docker-compose

  • Kitematic, the Docker GUI

  • a shell preconfigured for a Docker command-line environment


三 安装Toolbox

Toolbox的安装很简单,过程略。安装完成后,在OSX上,会新增三个应用:

wKioL1aN6-TSyoIpAAJXYb3WJwQ309.png

Docker Quickstart Terminal: Docker命令窗口,默认链接到Default的Docker machine

Kitematic:Docker hub的图形链接工具

Virtualbox:虚拟机管理工具,在OSX中,自动安装了docker-machine 应用,




四 运行一个容器Container


安装完成后,运行Docker Q..(quick start) Terminal, 会自动运行toolbox预置好的脚本,在Virtual box中生成一个虚拟机,并配置好Docker环境,脚本的执行过程和结果以下:

wKioL1aOctOj_XpzAAKtKMd8N7c218.png

此时,Virtual box中新增一个Default VM

wKioL1aOcxbxkpwuAASV29bDlWM588.png


也能够在OSX Shell中手动去建立一个Container,基本的过程包括:

  1. 从OSX的Shell中,经过docker-machine命令建立新的Docker虚机(虚机名称2nd)

    docker-machine create --driver virtualbox 2nd  

    wKiom1aOgxeTOlL0AAQ41_1tg3g088.png

    docker-machine 是用来管理Virtual box虚机的,能够支持命令行的开关机及重启等操做,而且能够docker-machine ls                     查看全部的虚拟机及信息

    wKioL1aOhH7T5JCEAAEQqsNiSe8404.png

    docker-machine env VM名称    查看某个虚机的环境变量

    wKioL1aOhm6za_OdAALZ_oZ3iPg759.png


  2. 链接到新建立的虚机中

      在OSX shell中,链接到docker-machine中

      eval $(docker-machine env 2nd)

   

若是使用Quickstart terminal,步骤一、2会在打开时自动执行。


五 运行第一行docker命令

在Quickstart terminal,OSX shell或者Virtualbox的虚机中,均可以执行docker命令,这第一行的命令,天然是Hello world啦,

         docker run hello-world

wKioL1aOfFGzLCktAAHWdeMPj9o768.png


看到输出正常,心理是否是还有点小兴奋呢?

这短短的命令里面,却也蕴藏着Docker原理。

  1. Docker客户端链接到了Docker的进程Deamon

  2. Docker进程从Docker hub中,pull下了 hello-world 的镜像

  3. Docker daemon用这个镜像建立了一个新的容器,而且生成了你如今看到的内容

  4. Docker daemon将输出传输到客户端。