本文发自 http://www.binss.me/blog/learn-docker-with-me-about-installation/,转载请注明出处。

Docker是什么?

官方定义是这样的:

Docker is an open platform for building, shipping and running distributed applications. It gives programmers, development teams and operations engineers the common toolbox they need to take advantage of the distributed and networked nature of modern applications.

简单来说,Docker就是一种新的虚拟化解决方案。相信使用Mac的同学都或多或少地使用过虚拟机,比如Parallels Desktop和VMware,在安装这种虚拟机的时候,我们首先要使用目标系统的安装镜像进行安装,在忍受漫长的安装和新手引导后终于把系统装好了,然后终于可以进入系统,安装和使用一些虚拟机平台下的软件。

在这种技术下,由于需要完整地安装操作系统,所以存在虚拟机建立时间长,镜像大的问题。在运行时,由于必须将虚拟系统的指令翻译成宿主机的指令,又带来了巨大的性能开销。

而Docker通过使用LXC技术(LXC技术提供了轻量级的虚拟化,隔离了进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性),直接复用本地主机的操作系统,实现了操作系统层面上的虚拟化,应用程序被装在容器中在宿主机上允许。比起传统的虚拟机技术,Docker性能更高,部署更快,管理更灵活。

我为什么要使用Docker?

当年年少无知,Mac买来之后开始乱装东西:Mysql来一个,Mongodb来一个,Npm来一个......每次装的时候,依赖的一堆库也就装上来了。而其实我并不是常常需要用到这些服务,有了Docker后,我可以将它们装在不同的容器里,想用的时候把容器跑起来然后再连上去就是了,不想要的时候直接删掉容器,系统依然干干净净。

下图为连接docker容器中的mysql:

还有一件事情促使我使用Docker。当时和小伙伴合作做作业,我把搭好的Django project发给小伙伴结果他死活跑不起来,最后发现是他的Django版本太新了,由于他没有使用pip,于是又折腾了半天降级的事......此时我的内心是崩溃的。使用Docker,以后遇到这种情况的时候直接扔个镜像过去就得了。

安装Docker

对于Windows用户,请参考:

https://docs.docker.com/installation/windows/

对于Linux用户,比如说Ubuntu,请参考:

https://docs.docker.com/installation/ubuntulinux/

对于Mac用户,我想说:相比以前苦逼地装完virtualbox又装boot2docker又配啊配,如今直接安装Docker全家桶即可。

下载地址:

https://www.docker.com/toolbox

全家桶包括以下东西:

Docker Client

客户端?

Docker Machine

由于Docker用了LXC,所以只能跑在Linux上。因此Mac和Windows的解决方案是跑一个Linux虚拟机。Docker Machine做的就是创建虚拟机,安装Docker Engine,配置好环境。

Docker Compose (Mac only)

用于描述和组装多容器的分布式应用。简单来说就是把一堆应用打包成一个文件然后用一个命令就可以启动全部。命令为docker-compose

Docker Kitematic

图形化操作工具。可以很方便的下载镜像、安装容器。看界面有种强烈的既视感,解包一看哦果然是Electron。Electron这种跨平台方案越来越受到人民群众的喜爱了。

VirtualBox

开源的虚拟机软件,用来跑Docker依赖的Linux。性能上被VMware和Parallels Desktop吊打。唯一的优点是免费。。。

一路next安装全家桶。装完之后在Applications中可以看到两个新图标:

点击Docker Quickstart Terminal启动Docker。启动后,就可以使用该terminal输入docker命令与之交互。

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/


docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com

bash-4.3$

看到萌萌的鲸鱼代表启动成功啦!咦,等等,我明明平时用的都是iTerm2,为什么弹出的是Terminal?

查看Docker Quickstart Terminal.app/Contents/Resources/Scripts/main.scpt ,发现这个applescript做的就是通过Terminal去调用start.sh。为了能用iTerm2运行,可以选择直接执行start.sh,或者用我修改之后的main.scpt覆盖原文件。

修改后的main.scpt:

http://cdn.sinacloud.net/binsite/main.scpt

至此,我们已经对Docker有了初步的了解并安装了它。下一篇文章会介绍一些使用方法。