Docker简介与安装

目录

一、docker为什么会出现

二、docker简介

三、传统虚拟机和容器的对比

四、docker能解决什么问题

五、docker三要素

5.1. 前置条件

5.2. 查看自己的内核

5.3. docker的基本组成

5.4.三要素总结

5.4.1.Docker

5.4.2.镜像文件

5.4.3.容器实例

5.4.4.仓库

六、Docker工作原理

七、docker安装


一、docker为什么会出现

不同环境的依赖、配置的差异导致不同环境之间的切换成本非常高,随着项目数量的增多,这种成本与日俱增。

为了解决不同环境、不同配置之间的切换、扩缩容等问题,便出现了以docker为代表的容器化技术。

这个标准化的解决方案就是,系统平滑移植,容器虚拟化技术。

docker解决的问题,简单说就是,软件可以带环境安装。也就是,安装的时候把原始环境一模一样地复制过来。开发人员利用docker可以消除协作编码时“在我的机器上可以正常工作”的问题。

docker包含两方面技术:

  1. 镜像技术:打破“代码即应用”的观念,从系统环境开始,自底至上打包应用。
  2. 镜像即应用。

运行文档、配置环境、运行环境、运行依赖包、操作系统发行版、内核等,一起打包成镜像。

一次镜像,处处运行。

VMware就是一个虚拟化技术的代表软件。

二、docker简介

Docker是基于Go语言实现的云开源项目,主要目标是:“Build,Ship and Run Any App, Anywhere”,即构建、装载、运行任何应用、任何环境。通过对应用组件的封装、奋发、部署、运行等声明周期的管理,使用户的app(可以是一个web应用或数据库应用等)及其运行环境能够做到“一次镜像,处处运行”。

Docker也是Linux容器技术的一种实现。

将应用打成镜像,通过镜像成为运行在Docker容器上面的实例。而docker容器在任何操作系统上都是一致的,这就实现了跨平台、夸服务器。只需要一次配置好环境,换到别的机器上就可以一键部署,大大简化了操作。

docker就是解决运行环境和配置问题的软件容器,方便做持续集成,并有助于整体发布的容器虚拟化技术。

三、传统虚拟机和容器的对比

虚拟机就是带环境安装的一种解决方案。可以在一个操作系统上运行另一套操作系统。

虚拟机技术基于安装在主操作系统上的虚拟机管理系统(比如,VMware、VirtualBox等),创建虚拟机(虚拟出各种硬件),在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用。

虚拟机技术的缺点:

  1. 资源占用多;
  2. 冗余步骤多;
  3. 启动慢。

鉴于此,Linux发展出了另一种虚拟化技术:

Linux容器(Linux Containers,缩写LXC)

Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程需要的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试最后到生产的整个过程,它都具有可移植性和一致性。

Linux容器不是模拟一个完整的操作系统,而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此变得高效、轻量并保证部署在任何环境中的软件都能始终如一地运行。

Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,docker优势提现为启动速度快、占用体积小。

基于容器的虚拟化,仅包含业务运行所需的runtime环境,centos/ubuntu基础镜像仅170M;宿主机可部署100~1000个容器。

总结:

  1. 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整的操作系统,在该系统上再运行所需的应用程序;
  2. 容器内的应用进程直接运行与宿主的内核,容器没有自己的内核也没有运行硬件虚拟。因此,容器要比传统虚拟机更为轻便;
  3. 每个容器之间互相隔离,每个容器都有自己的文件系统,容器之间的进程不会相互影响,能区分计算资源。

四、docker能解决什么问题

DevOps:开运/运维

一次构建、到处运行:

  • 更快速地应用交付和部署;
  • 更便捷地升级和扩缩容;
  • 更简单地系统运维;
  • 更高效地计算资源利用。

Docker借鉴了集装箱的理念,不同的是docker运输的是镜像,集装箱运输的是货物。

五、docker三要素

几个重点:

  • 镜像文件
  • 容器虚拟化技术
  • docker hub——安装docker镜像的仓库
  • docker官网

docker官网:Home - Docker

docker hub:https://hub.docker.com/

Docker并非是一个通用的容器工具,它依赖于已存在并运行的linux内核环境。

Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境,因此它执行的效率几乎等同于所部署的linux主机。

因此,docker必须部署在Linux内核的系统上。如果其他系统想部署docker,就必须安装一个虚拟linux环境。

在windows上部署docker的方法是先安装一个虚拟机,并在安装linux系统的虚拟机中运行docker。

5.1. 前置条件

目前CentOS仅发行版本中的内核支持Docker。Docker运行在CentOS7(64-bit)上,要求系统为64位、linux系统内核版本为3.8以上。

5.2. 查看自己的内核

cat /etc/redhat-release

# 或者

uname -r

5.3. docker的基本组成

docker三件套、三要素:

  1. 镜像(image)
  2. 容器(container)
  3. 仓库(repository)

镜像可比拟为java的类,容器可比拟为java的类实例,仓库可比拟为我们的maven仓库。

docker镜像就是一个只读模板。镜像可以用来创建docker容器,一个镜像可以创建很多容器。

它也相当于一个root文件系统。比如官方镜像centos:7就包含了完整的一套centos:7最小的root文件系统。

还相当于容器的“源代码”,docker镜像文件类似于Java的类,而docker容器实例类似于Java中new出来的实例对象。

Docker Java
镜像
容器 对象

1.从面向对象角度

docker利用容器(container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。就像Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的、隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

2.从镜像容器角度

可以把溶气气看做是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

仓库

仓库(repository)是几种存放镜像文件的场所。类似于maven仓库,存放各种jar包的地方;GitHub仓库,存放各种Git项目的地方;docker公司提供的官方registry被成为Docker Hub,存放各种镜像模板的地方。

仓库分为公开仓库(public)和私有仓库(private)两种形式。

最大的公开仓库是Docker Hub(HTTPS://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云、网易云等。

5.4.三要素总结

5.4.1.Docker

Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成docker容器实例(类似于Java中new出来的一个对象)。

image文件可以看作是容器的模板。docker根据image文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。

5.4.2.镜像文件

image文件生成的容器实例,本身也是一个文件,成为镜像文件。

5.4.3.容器实例

一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器。

5.4.4.仓库

就是存放镜像的地方,我们可以把镜像发布到仓库中,需要的时候再从仓库拉下来就可以了。

六、Docker工作原理

Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。

Docker简介与安装_第1张图片

 Docker简介与安装_第2张图片

七、docker安装

docker的安装比较简单,但是也会有坑,可以参考我的这篇文章:

Linux系统上安装Docker

至此,我们的docker简介与安装已经完毕!

你可能感兴趣的:(云原生,docker,容器,运维)