作者
IronmanJay
责编
王晓曼
出品
CSDN博客
Docker基础介绍
下图为Docker图标(是一个鲸鱼上面是集装箱)。
1、我们为什么要使用Docker
当我们在工作中,一款产品从开发设计到上线运行,其中需要开发人员和运维工程师,开发人员负责代码编写,开发产品,运维工程师需要测试环境,产品部署。这之间就会有分歧。
比如开发人员在自己的电脑上运行产品没有问题,可是换了一个环境,运维工程师部署的时候由于操作环境和开发人员不一致,其中包括操作系统、开发环境、部署文件等等。
开发人员需要告诉运维团队所需的全部配置文件+所有的软件环境,也就导致产品部署出现问题,开发人员和运维工程师出现分歧。
就好比我们要开发一个电商项目,其中肯定包括Java环境/Tomcat/MySQL/JDBC驱动包/相应jar包等,还需要较复杂的安装配置,并且不能跨平台使用,如果开发人员在Windows上开发,而运维工程师部署产品在Linux上,就会导致由于环境不同的产品部署问题,就算不跨系统,而是换一台同样操作系统的服务器,要移植部署依然非常麻烦。为了解决这个问题,我们的Docker应运而生!
2、Docker是什么
说了这么多,那么Docker到底是什么,能帮我们做什么,且听我慢慢道来。
首先我们要知道,Docker是基于Go语言实现的云开源项目,Docker的主要目标是“Build,ShipandRunAnyApp,Anywhere”,Docker其中包括,镜像、容器、仓库,很简单,目的就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的产品(可以是web应用或者数据库应用)及其环境能够做到“一次封装,到处运行”。
再通俗点说,就是我们使用Docker,使得运行在Docker容器上面的应用,配置好一次环境,换到别的机器上可以一键部署,大大简化了操作,实现了跨平台,跨服务器,由下而上打包,达到应用程式跨平台间的无缝接轨运作。
一句话,Docker解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
3、Docker能干什么
这个需要对比来说,其实我们常用的虚拟机就和Docker类似,我将通过之前的虚拟机技术和现在和容器虚拟化技术做一个对比。
(1)之前的虚拟机技术
我们对虚拟机并不陌生,其实它也可以看作是一个Docker,是一种带环境安装的解决方案,可以在一个操作系统中运行另一个操作系统,对于计算机底层来说,虚拟机就是一个软件而已,不需要的时候就可以删掉,对其他部分毫无影响,我们也可以通过虚拟机实现不同产品的打包发布,但是它也有很多缺点,比如:资源占用多、冗余步骤多、启动慢。
(2)容器虚拟化技术
由于前面虚拟机存在诸多问题,Linux发展出了另一种虚拟化技术:Linux容器,Linux容器不是模拟一个完整的操作系统而是对进程进行隔离,有了容器,我们就可以将软件运行所需的所有资源打包到一个隔离的容器中,容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。
(3)小总结
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。4、Docker的优势
更快速的应用交付和部署;更便捷的升级和扩缩容;更简单的系统运维;更高效的计算资源利用。
Docker安装
1、前提说明
目前,CentOS仅发行版本中的内核支持Docker。Docker运行在CentOS-7上,要求系统为64位、系统内核版本为3.10以上。
Docker运行在CentOS-6.5或更高的版本的CentOS上,要求系统为64位、系统内核版本为2.6.32-或者更高版本。
所以我们需要查看自己的Centos内核是否支持Docker,使用下面的命令,可根据上面对照看自己的Centos是否符合要求,如不符合请升级。
[ironmanjay
localhost~]$uname-aLinuxlocalhost.localdomain3.10.0-.12.1.el7.x86_64#1SMPTueFeb:02:59UTCx86_64x86_64x86_64GNU/Linux2、具体安装步骤
Dcoker安装比较简单,只要按照我的步骤一步一步走,肯定没问题,请读者细心。
(1)更新下载源
1、先备份sudomv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup2、更换源sudowget-O/etc/yum.repos.d/CentOS-Base.repo