为了在云主机上面部署项目和安装程序,我们选择了Docker环境,所以这节课咱们先来学习一下Docker技术。如果有的同学已经掌握了Docker技术,那就可以跳过这个小节,直接看下节课的视频。
一、Docker是什么?
Docker是轻量级的虚拟机产品,我们在使用Docker的时候,它并不会为每个虚拟化实例(容器)创建完整的虚拟硬件环境,而是为每个实例虚拟化少量的硬件环境(例如网卡)。这些虚拟化实例直接共享使用Linux系统的CPU、内存和硬盘资源。因此说,采用Docker的Linux主机,可以轻松创建几十个容器。运行在容器中的程序,除了有良好的隔离性之外,跟直接在Linux上运行没什么性能损失。
VMware这种重量级的虚拟机,无法做到这一点。VMware虚拟机创建每个实例,都要虚拟化完整的硬件环境,所以在Linux或者Windows系统上面根本无法创建多个这样的虚拟机实例。
二、Docker只能使用Linux吗?
所有的Docker容器都是建立在Linux系统之上的,所以建议大家在Linux环境中安装Docker程序。如果你本地不是Linux系统,可以先通过虚拟机安装Linux,然后在Linux上面安装Docker程序。
虽然Docker也提供了Windows版本和MacOS版本,但是安装程序都包含了简化版的Linux内核,这个简化版的Linux功能有限,所以无法发挥出Docker所有的功能,所以建议大家在Linux系统上面安装Docker,才能发挥出Docker全部的功能。
三、为什么要使用Docker?
有很多同学都不明白为什么要在云主机上安装Docker,把程序直接部署在Linux上不行吗?其实,使用Docker主要有两点原因:
首先,Docker容器之间是相互隔离的,我们可以在容器中部署程序的同时,不用担心跟其他容器产生冲突。例如某公司几年前开发的Java程序用的是JDK1.6,但是现在要部署的Java项目用JDK1.8开发的,现在我们无法在服务器上面同时安装JDK1.6和JDK1.8环境。如果我们用上了Docker程序,先创建出两个容器,然后分别安装JDK1.6和JDK1.8,接下来分别部署新旧程序。这就能做到在一个服务器上面可以部署若干程序的时候,不用担心发生矛盾冲突。其实你在阿里云和腾讯上面购买的云主机实例,就是这种虚拟化的容器。如果你想让容器之间可以通过网络访问,可以采用端口映射或者host模式,一会儿我会讲这个事情。
其次,Docker能为我们提供快速化部署。比如说有人在网上提供了PHP镜像,里面包括了PHP环境、Apache服务器和MySQL数据库,我们从网上下载镜像,然后创建容器,就直接可以部署PHP项目了,非常的方便。再比如,你自己也可以创建镜像,把要部署的程序和运行环境打成Docker镜像,分发给其他人,他们创建容器就可以直接运行程序了。
总结成一句话,Docker有毒,用上就会让人上瘾。
四、镜像和容器
Docker为了最大化的共享资源,减少资源浪费,创造出了镜像技术。镜像是虚拟实例之间相同的部分,差异化的部分叫做容器。比如说一个JDK镜像,里面安装了JDK1.8,然后我为这个镜像创建出3个容器,这三个容器共享使用JDK镜像中的Java环境,并且我可以在每个容器中部署不同的Java程序。如果Docker没有镜像技术,我们只能分别在三个容器中安装JDK环境,这就造成了不必要的重复浪费。
需要注意的是,容器只能读取镜像中的数据,不能修改镜像的内容,也就是说,镜像对于容器是只读的。
五、关闭SELINUX
SELINUX是CentOS自带的安全服务,因为晦涩难用,并且跟很多程序冲突,所以强烈建议大家关闭这个服务。
找到/etc/sysconfig/selinux
文件,把其中的SELINUX
设置为disabled
,保存文件之后重启CentOS系统。
六、安装Docker程序
执行下面的指令,稍等片刻,Docker程序就安装好了 。
yum install docker -y
管理Docker程序的命令也非常简单,如下:
service docker start
service docker stop
service docker restart
七、配置加速器
因为Docker在线安装镜像是从国外的DockerHub网站下载文件,所以速度超级慢,所以我们要给Docker设置加速器。我们用的是腾讯云主机,当然设置腾讯云加速器是最快的。
打开/etc/docker/daemon.json
文件,然后设置成如下内容:
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
重新启动Docker服务,加速器才能生效。
service docker restart