为什么出现docker?
假如您在开发一个项目,您使用了一个笔记本电脑而且您的开发环境具有特定的配置,其它开发人员身处的开发环境也各有不同。你正在开发的应用依赖于你当前的配置而且还依赖某些配置文件。此外你的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件,你希望尽可能多的在本地模拟这些环境而不产生重新创建服务器的开销。请问?
你该如何确保这些应用能够在这些环境中运行或通过质量检?并且在部署中不出现令人头疼的版本。配置问题,也无需重新编写代码和进行故障修复?
答案就是使用容器。Docker之所以发展如此迅速,也是因为它对此给出了一个标准化的解决方案---系统平滑移植,容器虚拟化技术。
环境配置相当麻烦,换一台机器就要重新来一次,费力费时。能不能从根本上解决问题,软件可以带环境安装?。也就是说,安装的时候把环境一模一样的复制过来,开发人员利用Docker可以消除协作编码时"在我的机器上可正常工作的问题"。
Docker是什么?
Docker是基于Go语言实现的开源项目。
Docker的主要目标是"Build, ship and run any app,anywhere",也就是通过对应用组件的封装,分发、部署、运行等生命周期的管理,使用户的App(可以是一个web应用或数据库应用等等)及其运行环境能够做到"一次镜像,处处运行"。
Linux容器技术的出现就解决了这样一个问题,而Docker就是这样发展过来的。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台,跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好。大大简化了操作。
一句话,解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟技术。
传统虚拟机和Docker容器的对比
Docker能干嘛?
技术职级变化:coder(能够做些基础工作的coder,粘贴复制一些东西)-programmer(程序员,能够按照一些规则,做出一些东西)-software engineer(软件开发工程师)-DevOps engineer(开发兼运维)
Docker官网地址
Docker官网:www.docker.com
Docker hub仓库地址:hub.docker.com
Docker hub是安装Docker镜像的仓库
CentOS Docker安装
Docker并非是一个通用的容器工具,它依赖于已存在运行的Linux内核环境。
Docker实质上是在已经运行的Linux下制造一个隔离的文件环境,因此它执行的效率几乎等同于所部署的Linux主机。
因此Docker必须部署在Linux内核的系统上,如果其它系统想部署Docker就必须安装一个虚拟Linux环境。
前提条件
目前,CentOS仅发行版本上的内核支持Docker。Docker运行在CentOS7(64-bit)上。
要求系统为64位,Linux内核版本为3.8以上。这里选用CentOS7.x
查看自己的内核:
cat /etc/redhat -release 查看内核
uname -r 打印当前系统的相关信息
Docker的三要素
镜像(image)
Docker镜像(image)就是一个模板,相当于 类class,镜像可以用来创建Docker容器(container),一个镜像可以创建多个容器。它也相当于一个root文件系统,比如官方镜像CentOS:7就包含了完整的一套CentOS:7最小系统的root文件系统。相当于文件的源码,docker镜像文件类似于java的类模板,而Docker容器实例相当于java中new出来的实例对象。
Docker(管理引擎)把应用程序和配置依赖打包成一个可交付的运行环境,这个打包好的运行环境就是镜像文件。
容器(container)
1.从面相对象角度
Docker利用容器独立运行一个或一组应用,运行程序或服务运行在容器里面,容器就类似于一个虚拟的运行环境,容器是用镜像创建的运行实例。就像面向对象中的类一样,镜像是类,容器是类创建出的实例对象。
容器为镜像提供了一个标准的和隔离的运行环境,它可以本启动、开始、停止、删除。每个容器都是相互隔离的保证安全的平台。
2.从镜像容器角度
可以把容器看做一个简易版的linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在期中的应用程序。
仓库(repository)
仓库是集中存放镜像文件的场所。
类似于github,
Docker公司提供的官方registry被称为Docker hub,存放各种镜像模板的地方。
仓库分为公有仓库(public)和私有仓库(private)两种。
最大的公开仓库是Docker Hub(hub.docker.com),
存放数量庞大的镜像供用户下载,国内公开仓库包括:阿里云、网易云等。
在国内一般用阿里云、网易云这些,访问比较快。
Docker平台架构图解
docker pull 可以从docker hub上拉取镜像
docker build 可以把当前的应用和运行环境打包成镜像
docker run 可以把镜像生成多个容器(实例)