前言
本篇文章主要为大家解读Docker中的一些重点名词和使用规则,弄清楚这些会非常有利于我们之后的学习。
Docker是什么
Docker是一种极轻的依赖于虚拟机的容器服务,我们可以把它理解为用来创建虚拟机的软件,只不过不同之处在于,Docker创建的虚拟机是通过镜像来创建,创建成功的虚拟机我们称之为容器。绝大多数我们需要用到的镜像在Docker Hub上都已经有现成的,我们只需要通过一条简单的命令即可将镜像获取到本地,然后通过另一条命令将获取到的镜像来创建一个容器。但是Docker之所以这么火热这么成功的关键点之一就是它所创建的容器也就是我们通常所说的虚拟机的启动、关闭、重启操作耗时为秒级,一般在1-2秒以内,而且每个容器在运行过程中所占用的资源极少,几乎每一台电脑都能同时运行好多个容器。
镜像
Docker初学者很容易将镜像和容器搞混,我们可以这样来理解,还是以虚拟机为例,我们在windows上通过VM来创建虚拟机时,iso镜像文件就是我们Docker中所说的镜像,而通过VM最终创建出来的虚拟机就是我们的容器。
容器
镜像的概念大家应该都清楚,毕竟都是程序界的老司机了,我们就不再过多描述,上文中一直提到容器这个名词,这里我们讲解。
每一个Docker的容器都包含有一个服务,换句话说意思就是每个虚拟机中一般情况下只安装一个软件,以经典web环境lnmp举例,我们如果通过Docker来部署该环境一共需要三个容器,每个容器各包含一个服务,分别为nginx、php、mysql。
我们可以在启动容器时将宿主机上的端口映射到容器上,以此实现宿主机端口接受到的请求交由与该端口进行映射的容器来处理。
容器与容器之间可以进行链接,这样一来我们就能实现包含nginx的容器在接受到http请求后将php的解析工作交给包含php的容器来处理,容器之间的链接和容器与宿主机端口的映射会在后面的文章中介绍。
为什么要一个服务一个容器
这里我们考虑这样一个问题,如果将nginx、php、mysql装在同一个容器中,然后之前我们用的是php5.6的版本,现在我们要改为7.1只需要重新构建一个只包含php7.1的容器,然后直接切换即可实现PHP版本的升级。
Docker解决了什么问题
对于web开发人比如PHPer,可能我们最麻烦的不是怎么写代码,而是繁琐的环境部署,比如nginx、Apache、Redis……等等各种软件,尤其是当我们碰到刚下载的代码在本地却无法运行,比如没有开启或安装某些扩展的时候,比如我的代码在本地运行没问题啊,怎么一上线就出bug的时候,是不是想过如果能有一种工具能够解决这些问题就好了,现在,这种工具有了,就是我们这片文章介绍的软件Docker。它可以快速在windows和Linux上部署一摸一样的web代码运行环境。
结束语
这篇文章我们只介绍一下Docker的作用和大方向的使用原则,具体操作我们将在后面的文章一一说明,通过此Docker文集能让大家成为一个合格的Docker使用者,感受Docker带来的各种便利。
(ps:感觉需要记录一下,本篇文章是在高速上用手机手打诞生)
网友评论