Docker 简介 安装

一.什么是Docker

  • Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力。在云服务概念兴起之后,Docker的使用场景和范围进一步发展,如今在微服务架构越来越流行的情况下,微服务+Docker的完美组合,更加方便微服务架构运维部署落地。
  • Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
  • 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
  • Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)。

二.Docker三大核心概念

1.镜像

  • 镜像类似于虚拟机镜像,可以把它理解为一个只读的模板。 镜像是创建 Docker 容器的基础,通过版本管理和增量文件系统, Docker 提供了一套机制来创建或更新现有的镜像,我们还可以从网上下载并使用别人已经做好的镜像。
  • 镜像本身是只读的。

2.容器

  • Docker 容器类似于一个轻量级沙盘, Docker 利用容器来运行和隔离上层应用。容器与镜像的关系类似于面向对象编程中的对象与类。从镜像中创建的应用,在容器中运行实例,从而保证实例之间不会相互影响。容器可以启动 、 开始 、 停止 、 删除,并且这些容器都是彼此相互隔离 、 互不可见的。
  • 容器会在启动镜像时,在镜像的最上层创建一个可写层,执行一些必要的写入操作。

3.仓库

  • Docker 仓库类似于代码仓库,是集中存放 Docker 镜像文件的地方。根据所存储的镜像是否公开,我们可以把仓库分为公开仓库 ( Public ) 和私有仓库 ( Private ) 两种形式。
  • 目前,最大的公开仓库是官方提供的 Docker Hub,其中存放着数量庞大的镜像供我们下载使用。国内也有不少云服务提供商 ( 如腾讯云 、 阿里云等 ) 也提供了仓库的本地源,为我们提供稳定的国内访问。
  • 我们创建好自有镜像后就可以使用 push 命令将它上传到指定的公有或者私有仓库。这样其他人就可以在另外一台机器上下载并使用该镜像,这很像 Git 代码仓库的管理与使用方式。
  • Docker 就是依靠镜像、容器和仓库所构建起来的

二.Docker的优势

1、更快速的交付和部署

  • 对开发和运维(devop)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
    开发者可以使用一个标准的镜像来构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器来部署代码。 Docker 可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,使团队中的其他成员更容易理解应用程序是如何创建和工作的。 Docker 容器很轻很快!容器的启动时间是秒级的,大量地节约开发、测试、部署的时间。

2、更高效的虚拟化

  • Docker 容器的运行不需要额外的 hypervisor 支持,它是内核级的虚拟化,因此可以实现更高的性能和效率。

3、更轻松的迁移和扩展

  • Docker 容器几乎可以在任意的平台上运行,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。

4、更简单的管理

  • 使用 Docker,只需要小小的修改,就可以替代以往大量的更新工作。所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。

5、更快的启动时间

  • 传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接 运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启 动时间。大大的节约了开发、测试、部署的时间。

三.Docker真实应用场景

  • web应用的自动化打包和发布
  • 自动化测试和持续集成、发布
  • 在服务型环境中部署和调整数据库或其他应用

1.简化配置

  • Docker公司宣传的Docker的主要使用场景。虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平台(软件、系统),Docker在降低额外开销的情况下提供了同样的功能。它能让你将运行环境和配置放在代码中然后部署,同一个Docker的配置可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间耦合度。

2.代码流水线(Code Pipeline)管理

  • 代码从开发者的机器到最终在生产环境上的部署,需要经过很多的中间环境。而每一个中间环境都有自己微小的差别,Docker给应用提供了一个从开发到上线均一致的环境,让代码的流水线变得更加简单。

3. 提高开发效率

  • 我们需要将每一个服务都跑在独立的虚拟机中以便监控生产环境中服务的运行状态。然而,我们却不想每次都需要网络连接,每次重新编译的时候远程连接上去特别麻烦。这就是Docker做的特别好的地方,开发环境的机器通常内存比较小,之前使用虚拟的时候,我们经常需要为开发环境的机器加内存,而现在Docker可以轻易的让几十个服务在Docker中跑起来。

4.隔离应用

  • 有很多种原因会让你选择在一个机器上运行不同的应用,一是因为要降低成本而进行服务器整合,二是将一个整体式的应用拆分成松耦合的单个服务。Docker可以起到隔离的效果。

5.整合服务器

  • Docker隔离应用的能力使得Docker可以整合多个服务器以降低成本。由于没有多个操作系统的内存占用,以及能在多个实例之间共享没有使用的内存,Docker可以比虚拟机提供更好的服务器整合解决方案。

6.调试能力Docker

  • Docker提供了很多的工具,这些工具不一定只是针对容器,但是却适用于容器。它们提供了很多的功能,包括可以为容器设置检查点、设置版本和查看两个容器之间的差别,这些特性可以帮助调试Bug。

7.多租户环境

  • 使用Docker,可以为每一个租户的应用层的多个实例创建隔离的环境,这不仅简单而且成本低廉,当然这一切得益于Docker环境的启动速度和其高效的diff命令。

8.快速部署

  • 在虚拟机之前,引入新的硬件资源需要消耗几天的时间。Docker的虚拟化技术将这个时间降到了几分钟,Docker只是创建一个容器进程而无需启动操作系统,这个过程只需要秒级的时间。这正是Google和Facebook都看重的特性。

四.Docker安装

系统环境:docker最低支持centos7且在64位平台上,内核版本在3.10以上

yum -y install yum-utils device-mapper-persistent-data lvm2                                        #下载关于Docker的依赖环境

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo      #设置下载Docker的镜像源

yum makecache fast
yum -y install docker-ce     #安装docker-ce

systemctl start docker       #开启服务
systemctl enable docker      #设置开机自启动
systemctl status docker      #查看运行状态
docker run hello-world       #测试
#配置加速器(执行完重启服务)
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ipefbrwp.mirror.aliyuncs.com"]
}
EOF
#注册阿里云进去查看

systemctl daemon-reload       #重载系统参数
systemctl restart docker      #重启服务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 网络优化
vim /etc/sysctl.conf
net.ipv4.ip_forward=1

systemctl restart docker
systemctl restart network

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/LI_MINGXUAN/article/details/115021147