[docker]1.初识Docker

本文的目的

编写Docker的教程,并不是系统的对Docker进行了解,而是通过一个Java工程师的口吻,来快速入门了解Docker的内容。

本文的目的很简单

  1. 快速了解Docker几个概念,能够通过与Java相关的类比,快速勾勒Docker的模型
  2. 在自己的系统上面安装docker成功即可,由于CentOS是一个比较好的平台了解Docker的内容,所以期待对Docker的学习能够在Linux系的平台上进行,这样能够更加快速的学习。

1.1 Docker介绍

Docker是一项基于操作系统级别的虚拟技术,即通过创建多个的操作系统实例(内核和库)来隔离不同的进程的技术。

在现阶段,很多项目面临着测试环境好好的,一旦到了上线部署的时候,就出现很多的问题。这些问题原因很多来自于宿主环境的不同。所以Docker做了一项任务,即在项目打包的时候,顺便把环境给打包上去,但是这个环境又不会是整个操作系统(如Linux系统),而是通过上面所说的系统的最小运行条件去打包。所以我们在上线、测试部署的时候,把环境以及项目带上,就可以在不同的环境进行项目的部署而不必去担心因为环境的不同导致项目出现严重的错误。可以说是运维工程师的福音了。

1.2 Java和Docker的理念对比

Docker的理念即是:一次封装,到处运行。

这让我一个Java狗很快想到Java的理念:一次编写,到处运行。

所以我想,Java和Docker进行一次对比可能能够很快的了解Docker是个什么东西?

我们知道,我们的Java能够实现一次编写到处运行的原因在于,SUN公司给Java编写了一款叫做虚拟机(JVM)的软件,JVM的简单理解就是在我们的电脑内存中启动一个虚拟的电脑,使得这个电脑可以读取Java特定的字节码文件,所以SUN公司只要为所有平台上都开发虚拟机,就可以让Java代码很简单的在多个平台上进行运行。

那么Docker的公司也是为每个平台(Windows、Linux、OSX)去开发相对应的Docker环境,那么只要是Docker的镜像,这里先简单的理解为Docker的程序,就可以在多个平台上面进行运行,而且每次打包都是将环境与项目一块打包,部署的时候将环境与项目一块部署启动,那么就可以解决环境上一致性的问题。

2. Docker中的概念

作为开发人员,并不会一股脑儿理解Docker中的所有概念,我这里大概的抽取为三条,通过与Java的比较,理解好这三条概念就可以理解Docker在日常中的使用了。

那么在Docker中需要理解的概念就是三个:镜像(image)、容器(container)、构建文件(docker-file)、仓库。那么接下来,我将分点对这三个概念进行说明理解:

2.1 镜像(image)

一个Docker镜像既是一个包含需要运行的环境以及程序,一般来说一个镜像只包含一个程序,这样子就可以很简单的将程序抽取为类似于服务的东西在系统中进行运行

2.2 容器(container)

镜像启动后就变成一个容器,往往我们在启动镜像的时候,就会把所需要的参数在命令中进行传递,运行一次镜像就生成一个容器,里面还包含了上次运行中所生成的一些文件(比如temp文件)或者参数,所以当接下来我们再次需要这个程序的时候,只需要启动容器就可以快速还原到上次容器关闭时的状态。

2.3 构建文件(docker-file)

官方提供的镜像已经有很多了,有centos环境、jdk8环境、MySQL环境等等,但是这些镜像根本就不足以我们在日常开发中的需求,所以这时候我们可以根据官方提供的镜像作为基础,将我们要运行的程序结合基础镜像打包成为一个新的镜像,就需要构建文件(docker-file),构建文件包含了镜像所需要运行的环境定义等等,像maven的pom文件一样,定义程序运行所需要的东西,然后调用docker软件的构建方法即可构建我们自己的镜像。

2.4 仓库

当然我们自己的镜像可以放在docker官方的仓库里面,但是由于这样的安全性总是觉得欠缺,所以我们往往会给自己的公司再启动一个私有的仓库,这时候就可以存放我们自己的所有镜像,以便在多台服务器之间进行传递。

2.4 镜像与容器的关系

简单大白话讲,镜像就是Java类,容器就是Java对象,所以当我们需要运行多少个实例的时候,就从镜像中构建多少次容器即可.

3. Docker的安装

3.1 CentOS下的安装

要求:CentOS7

yum install docker-engine

3.2 Windows或OSX下的安装

我万万没想到这两个平台居然可以放在一起描述

这两个平台的安装比较傻瓜式,只要从官方网站上面下载最新的Docker软件进行安装即可

3.3 验证安装成功

无论是Linux下还是其他平台,只要运行一次下面的命令,可以显示相对于的版本号,即使安装成功

docker -v

4. HelloWorld

其实上一步是否输出docker版本号以及可以决定docker安装的成功与否,但是出于程序员的礼貌性,我们还是要打一声招呼的。

docker run hello-world

当docker程序遇到run命令的时候,首先会检查本地是否存在docker镜像,如果不存在,默认从docker官方仓库拉取然后直接进行启动,当运行完上面的命令的时候,在控制台看到Hello from Docker!即表示已经运行成功,此时本地也已经有了该镜像的存在。

点赞