💖5分钟带你跑一跑Docker💖Docker系列入门教程

简介:  虚拟化(英语:Virtualization)是一种计算机资源管理技术,是将计算机的各种硬件资源,比如服务器、网络、CPU、内存及存储等,予以抽象和转换后呈现出一套新的硬件资源环境,在这一套新的硬件环境下可以安装我们的操作系统,部署我们的应用运行环境等,它打破计算机硬件资源不可切割的障碍,使我们可以比原本的计算机硬件资源结构更好的方式来组合应用这些资源。

一、Docker概述


1.1、虚拟化技术发展史


   在虚拟化技术出现之前,如果我们想搭建一台服务器,我们需要做如下的工作:

→ 购买一台硬件服务器。 → 在硬件服务器上安装配置操作系统系统。 → 在操作系统之上配置应用运行环境。 → 部署并运行应用。


   这种方式的缺点就是:


  1. 部署应用非常慢。
  2. 需要花费的成本非常高(时间成本、服务器成本)。
  3. 应用迁移麻烦;要将应用迁移,又得重复部署应用。


   所以,为了解决这个问题,后续出现了虚拟化技术。


1.2、虚拟化技术


   虚拟化(英语:Virtualization)是一种计算机资源管理技术,是将计算机的各种硬件资源,比如服务器、网络、CPU、内存及存储等,予以抽象和转换后呈现出一套新的硬件资源环境,在这一套新的硬件环境下可以安装我们的操作系统,部署我们的应用运行环境等,它打破计算机硬件资源不可切割的障碍,使我们可以比原本的计算机硬件资源结构更好的方式来组合应用这些资源。


1.3、虚拟化技术的优缺点


1.3.1、虚拟化技术的优点


   一台物理服务器可以虚拟化出多个虚拟的服务器,让计算机资源得以充分利用。


1.3.2、虚拟化技术的缺点


  1. 每创建一个虚拟机的时候,都会创建一个操作系统,这个操作系统会占用很多资源,这样无疑大大的增加了资源的消耗,当安装的虚拟机越多,资源消耗就越多。


  1. 环境兼容性问题,开发时的环境运行正常,部署到虚拟机环境测试则有可能发生错误。


1.4、虚拟化分类


       虚拟化一般分为:


  1. 硬件级虚拟化(hardware-level-virtualization)
  2. 操作系统级虚拟化(os-level-virtualization)


1.4.1、硬件级虚拟化


   硬件级虚拟化 是运行在硬件之上的虚拟化技术,它的核心技术是Hypervisor 发音 [haipə'vaizə],Hypervisor 是一种运行在基础物理服务器硬件之上的软件层,可以虚拟化硬件资源,例如 cpu、硬盘、内存资源等。然后我们可以通过在虚拟化出来的资源之上安装操作系统,这也就是所谓的虚拟机。像 VMWare, VirtualBox 等都是使用该技术,我们经常使用的桌面版的虚拟机 VMWare 就是采用这种虚拟化技术。


1.JPG


  通过 Hypervisor 层,我们可以创建不同的虚拟机,并且每个虚拟机都是分离、独立的,这样一来,我们就可以在一台硬件服务器和本地操作系统之上虚拟化出多个服务器,用来部署我们的应用


1.4.2、操作系统级虚拟化


   操作系统级虚拟化,也被称作容器化,是操作系统自身的一个特性,它允许多个相互隔离的用户空间实例的存在。这些用户空间实例也被称作为容器。普通的进程可以看到计算机的所有资源而容器中的进程只能看到分配给该容器的资源。

   

通俗来讲,操作系统级虚拟化将操作系统所管理的计算机资源,包括进程、文件、设备、网络等分组,然后交给不同的容器使用。容器中运行的进程只能看到分配给该容器的资源。从而达到隔离与虚拟化的目的。


1.5、容器技术的发展


   基于硬件级虚拟化技术的缺点和不足,后续又发展出来了另一种虚拟化技术,即操作系统级虚拟化技术。


   操作系统级虚拟化 是运行在操作系统之上的虚拟化技术,它模拟的是运行在一个操作系统上的多个不同进程,并将其封装在一个密闭的容器里面,该技术也称为容器化技术。


   在容器化技术领域,Docker 是目前最流行的一种实现。Docker 发布于 2013 年,Docker 基于 LXC 技术,LXC 是 Linux 平台上的容器化技术实现。


   LXC 是 Linux Container 的简写,它是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源,它与宿主机使用同一个内核,性能损耗小,这种技术是 Linux 提供的,但是直到 Docker出世,该技术才被发挥出来。


1.6、Docker的发展史


2.JPG

 

2010年,几个年轻人在旧金山成立了一家做PaaS(Platform as a Service,平台及服务)平台的创业公司,起名为 dotCloud,并且还获得了创业孵化器 Y Combinator 的支持,虽然 dotCloud 期间获得过一些融资,但随着 IT 巨头(微软、谷歌、亚马逊等)也杀入 PaaS 平台,dotCloud举步维艰。


   2013 年,dotCloud 的创始人,28 岁的 Solomon Hykes 做了一个艰难的决定:将 dotCloud 的核心引擎开源,这项核心引擎技术能够将 Linux容器中的应用代码打包,轻松的在服务器之间迁移。


   然而这个基于 LXC(Linux Container)技术的核心管理引擎开源后,让全世界的技术人员感到惊艳,感叹这一切太方便了!也正是dotCloud 的创始人这个艰难的孤注一掷的决定让所有的 IT 巨头们也为之一颤。


   从 2013 年 Docker 开源开始,Docker 技术风靡全球,于是 dotCloud公司决定将 Docker 作为主要业务进行发展,并把公司改名为 DockerInc,全身心投入到 Docker 的开发中,并于 2014 年 8 月,Docker 宣布把 PaaS(Platform as a Service,平台及服务)业务 dotCloud 出售给位于德国柏林的同样专注于平台即服务业务的提供商 cloudControl,从此 Docker 可以轻装上阵,专注于 Docker 的研发。


   从 2013 年 2 月决定开源,到 2013 年 3 月 20 日发布 Docker 0.1,只用了一个月时间。当前 Docker 的最新版本是 18.03。


   Docker 迅速成长,在 2014 年 6 月 9 日,Docke 团队宣布发布 Docker1.0,1.0 版本标志着 Docker 平台已经足够成熟,并可以被应用到生产产品中(还提供了一些需要付费的支持选项)。


   一年的时间,使一个围绕着 Docker 的小型初创企业生态体系逐渐形成。Docker 先后赢得了 Google、 微软、Amazon、VMware 等 IT 巨头的青睐,他们纷纷表示将保证自己平台与 Docker 容器技术的兼容性。


   2016 年 2 月 29 日,CloudControl 公司在其官方博客中宣告即将破产,隶属于cloudControl公司的dotCloud也宣布将于2月29日关闭服务。作为 Docker 的前身,DotCloud 目睹 Docker 的成长,成为云平台的一颗新星,而自己却力不从心,Docker 的繁荣间接地导致 Docker 的前身 dotCloud 在 PaaS 平台的衰败,兴衰成败,令人唏嘘不已,这也许是颠覆式创新的经典案例。


1.7、Docker是什么


   Docker 是一个开源的应用容器引擎,它基于 Google 公司推出的Go 语言实现,项目代码托管在 GitHub 上进行维护;


   Docker 技术让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,打包好的容器可以发布到任何流行的 Linux 服务器上运行,这样就可以解决开发环境与运维环境不一致的问题了,所以容器技术解决了开发和运维之间的矛盾,让开发专注于开发,运维专注于运维,不要被环境问题所打扰。


   Docker 彻底释放了虚拟化的威力,极大降低了计算机资源供应的成本,Docker 重新定义了程序开发测试、交付和部署过程,Docker 提出了“构建一次,到处运行”的理念,让应用的开发、测试、部署和分发都变得前所未有的高效和轻松!


   Docker 是一种轻量级的操作系统虚拟化解决方案,Docker 的基础是 Linux 容器(LXC)技术,在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机一样简单;Docker 自开源后受到广泛的关注,Docker最早是基于Ubuntu开发的,但后续 CentOS、Debian、Fedora 等主流的 Linux 操作系统都支持 Docker。


   简单地说,Docker 是对软件和其依赖环境的标准化打包,应用之间相互隔离,共享一个 OS Kernel(解决了资源浪费的问题),可以运行在很多主流操作系统上,Docker 本身不是容器,Docker 只是管理容器的引擎。


1.8、容器和虚拟机器的区别


  1. 容器是将代码和环境的关系打包在一起的一个集合,而虚拟机是在物理层面上,分出来的一个操作系统。
  2. 多个容器可以运行在同一台物理服务器上,并共享一个操作系统的内核资源。多个虚拟机也可以运行在同一台机器上,但每个虚拟机都需要一个完整的操作系统。
  3. 容器是在本地操作系统层面上实现虚拟化,直接复用本地主机的操作系统,不需要单独安装操作系统,而传统的虚拟化技术方式则需要单独安装每个虚拟机的操作系统。


比较项 容器 虚拟机
启动时间 秒级 分钟级
硬盘空间 一般为几十 MB 一般为 10GB
性能 接近原生 接近原生
系统支持量 单机支持上千个容器 一般几十个
操作系统 与宿主机共享OS 宿主机上允许虚拟机的OS


1.9、为什么使用 Docker


   作为一种新兴的虚拟化技术,Docker 跟传统的虚拟化方式相比具有众多的优势。


  1. Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。
  2. Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
  3. 容器除了运行其中的应用外,基本不消耗额外的系统资源,使得应用的性能很高。传统虚拟机方式运行 10 个完全不同的应用可能我们会起 10 个虚拟机来部署,而 Docker 只需要启动 10 个隔离的应用即可。
  4. Docker 可以更快速的交付和部署,大量地节约开发、测试、部署的时间,对开发和运维人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
  5. 更高效的虚拟化,Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。
  6. 更轻松的迁移和扩展,Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,这种兼容性可以让用户轻松地把一个

    应用程序从一个平台直接迁移到另一个平台。


二、Docker环境搭建


2.1、Docker版本


   Docker 从 2013 年 3 月 20 日发布 Docker 0.1,到现在已经发布了多个版本,从 2017 年 3 月开始 docker 在原来的基础上分为两个分支版本: Docker CE 和 Docker EE。


  1. Docker CE:社区免费版,可永久免费使用。
  2. Docker EE:企业版,功能更全,更强调安全,但需付费使用。


2.2、Docker的安装


   CentOS7 系统可以直接通过 yum 进行安装。


查看是否已经安装了Docker

yum list installed | grep docker
# 如果有的话则删除对应的包
 yum remove docker...... 
复制代码


使用yum进行安装

yum install docker -y
复制代码


设置Decker开机自启

# 启动 docker 服务端
systemctl start docker
# 启用 docker 服务开机自启
systemctl enable docker
复制代码


查看Docker版本检测是否安装成功

docker -v
复制代码


3.JPG


卸载Docker

yum remove docker.x86_64 -y
yum remove docker-client.x86_64 -y
yum remove docker-common.x86_64 -y
复制代码


2.3、启动Docker


启动

systemctl start docker 
# 或者使用这一条也可以
service docker start
复制代码


停止

systemctl stop docker
# 或者使用这一条
service docker stop
复制代码


重启

systemctl restart docker 
# 或者使用这一条也可以
service docker restart
复制代码


检查 docker 进程的运行状态

systemctl status docker
# 或者是这一条也可以
service docker status
复制代码


查看 docker 进程

ps -ef | grep docker



相关文章
|
Kubernetes API Docker
(一)零基础小白都能懂的超全Docker入门教程之开篇
(一)零基础小白都能懂的超全Docker入门教程之开篇
|
前端开发 JavaScript Java
Docker 极简入门教程,傻瓜都能看懂!
Docker 极简入门教程,傻瓜都能看懂!
512 0
Docker 极简入门教程,傻瓜都能看懂!
|
Linux Shell 网络安全
docker入门教程(搭建docker看)
Docker 查看系统内核和系统信息 命令:
237 0
docker入门教程(搭建docker看)
|
关系型数据库 MySQL 应用服务中间件
Docker容器数据卷入门教程(超详细)
docker的理念将运行的环境打包形成容器运行,运行可以伴随容器,但是我们对数据的要求是希望持久化,容器之间可以共享数据,Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据作为容器的一部分保存下来,那么当容器被删除之后,数据也就没了。为了能够保存数据,在docker容器中使用卷。
488 0
Docker容器数据卷入门教程(超详细)
|
存储 监控 Linux
全面的Docker快速入门教程
全面的Docker快速入门教程
308 0
全面的Docker快速入门教程
|
NoSQL Ubuntu Linux
💖5分钟带你认识Docker核心组件💖Docker系列入门教程
Docker 并不是容器,而只是一个管理容器的引擎,Docker 的底层运行原理:Docker 服务启动→下载镜像→启动该镜像得到一个容器→容器里运行着我们想要的程序。
402 0
💖5分钟带你认识Docker核心组件💖Docker系列入门教程
|
Linux 开发工具 git
Docker 入门教程概念
Docker 入门教程概念
145 0
|
关系型数据库 MySQL Java
💖5分钟带你自定义镜像和安装软件💖Docker系列入门教程
Docker 仓库的概念跟 Git 类似,注册服务器也类似于 GitHub 这样的托管服务。 Dockerfile 用于构建 Docker 镜像,Dockerfile 文件是由一行行命令语句组成,基于这些命令即可以构建一个镜像。
755 0
|
JavaScript 网络协议 Java
Day 21:Docker 入门教程
几个月以前,红帽(Red Hat)宣布了在 Docker 技术上和 dotCloud 建立合作关系。在那时候,我并没有时间去学习关于 Docker 的知识,所以在今天,趁着这个 30 天的挑战,我决定去学习一下 Docker 究竟是怎样的。这篇博文并不是说以后怎么在 OpenShift 上用 Docker 的。请阅读由 Mike McGrath 撰写的 "关于 OpenShift 和 Docker 的技术思考"。也可以看看这个 Stackoverflow 的问题,了解一下 Docker 和 OpenShift 的差别。
162 0
Day 21:Docker 入门教程
|
容器 Docker Ubuntu
【URLOS 应用开发基础课】Docker 官方系统镜像 Alpine 入门教程
Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。本文将为大家详细介绍 Alpine 的安装、配置以及使用的相关内容。
1685 0