作为软件开发者,平常最痛恨的应该就是环境配置问题了吧。比如说,我要在一台新电脑(新环境)上安装tomcat跑一个javaweb应用,因为tomcat是java代码编写的,所以首先我要安装一个java运行时环境(JRE),配置JAVA_HOME,然后才能安装tomcat开始跑javaweb。还有,如果我要学习一门新的语言go、或新的中间件RabbitMQ、可能花费在安装这些环境的时间就让你想放弃了。 而作为运维人员,平时肯定也为部署新环境折腾得焦头烂额,一下子要为好几台新机器配置运行环境,每台机器上执行相同操作,十分机械化。 知道了平时开发中的痛点,那是否有一种工具,能让我快速安装tomcat而不用去理会环境问题。能让我把go、RabbitMQ整个环境下载下来,不需任何配置,我就能在这个环境中直接运行go代码。能让我配置了一台机器后,原样复制一份,发到其他机器直接运行,不用再做配置就可以得到相同的环境?是有这种工具的,它就是虚拟化容器技术,而docker,就是这门技术中的佼佼者。

1. 什么是docker

docker是一门虚拟化容器技术

其设计理念是"build once, run anywhere"(一次构建,到处运行),听起来,是不是跟java的"wirte once, run anywhere"(一次编写,到处运行)很像?那么,什么是虚拟化容器技术呢?docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器,程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。正如开篇第一张图docker的标志一样,docker就是这条鲸鱼,其上驮着的集装箱,就是一个个互相隔离的容器,你可以随时往上添加集装箱,不会影响到原有集装箱里的内容

2. docker和虚拟机的区别

docker 和传统虚拟化方式的不同之处,传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,共享宿主机的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

3. 安装docker

docker可以在各个操作系统上安装,过程很简单,安装教程请看这里:www.runoob.com/docker/wind… docker在windows上安装是一件麻烦事,但不想在vm虚拟机中的linux上安装因为懒得开,所以还是在windows上安装了,windows上有两种安装方法:

3.1. 安装docker toolbox遇到的问题

这是安装docker toolbox遇到的卡在下载boot2docker.iso的问题,安装docker其他版本的这节可以忽略不看。 docker toolbox安装完成后,会有如下三个图标,

启动docker需要点击Docker Quickstart,其会查找指定目录下的boot2docker.iso(一个轻量级的linux虚拟机)文件,并根据该文件创建一个名为default的linux虚拟机,初次点击时找不到该文件,会从github下载,但docker下载速度相当慢,等了个把小时都无法完成。提示如下:

Running pre-create checks...
(default) No default Boot2Docker ISO found locally, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v1.12.1
(default) Downloading C:\\Users\\huang\\machine\\cache\\boot2docker.iso from <https://github.com/boot2docker/boot2docker/releases/download/v1.12.1/boot2docker.iso>...
复制代码

解决方案是:使用浏览器(或者迅雷)到boot2docker的主页下载最新版boot2docker.iso,地址:(github.com/boot2docker…),如下图:

下载完成后断开网络,将下载好的boot2docker.iso放到提示的位置,我这里是: