博主
258
258
258
258
专辑

第一节 Docker简介

亮子 2021-06-08 00:53:57 5443 0 0 0

1、Docker是什么?

图片alt

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

官方网站:

https://www.docker.com/

2、为什么需要Docker?

一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各种版本的迭代之后,不同版本环境的兼容,对运维人员都是巨大的考验。

Docker之所以发展如此迅速,也是因为它对开发与运维之间的问题,给出了一个标准化的解决方案。环境配置如此麻烦,换一台机器,就要重来一次, 费力费时。

于是很多人想到,能不能从根本上解决问题,软件可以带环境安装?也就是说安装的时候,把原始环境一模一样地复制过来。开发人员利用Docker可以消除协作编码时“在我的机器上可以正常工作”的问题。

Docker的理念是:一处封装、处处运行。

Linux容器技术的出现就解决了这样一个问题,而Docker就是在它的基础上发展过来的。将应用运行在Docker容器上面,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了部署操作,排除环境因素的干扰。

  • 开发和运维之间因为环境不同而导致的矛盾
  • 集群环境下每台机器部署相同的应用
  • DevOps(Development and Operations)

3、Docker的优点

1)、简化程序:

Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就能完成。

2)、避免选择恐惧症:

如果你有选择恐惧症,还是资深患者。Docker帮你打包你的纠结!比如Docker镜像;Docker镜像中包含了运行环境和配置,所以Docker可以简化部署多种应用实例工作。比如Web应用、后台应用、数据库应用、大数据应用比如Hadoop集群、消息队列等等都可以打包成一个镜像部署。

3)、节省开支:

一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker改变了高性能必然高价格的思维定势。Docker与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

4、Docker架构

Docker使用C/S架构,Client通过接口与Server进程通信实现容器的构建,运行和发布,如图:

图片alt

1)、Host(Docker 宿主机)

安装了Docker程序,并运行了Docker daemon的主机。

2)、Docker daemon(Docker 守护进程):

运行在宿主机上,Docker守护进程,用户通过Docker client(Docker命令)与Docker daemon交互。

3)、Images(镜像):

将软件环境打包好的模板,用来创建容器的,一个镜像可以创建多个容器。

4)、Containers(容器):

Docker的运行组件,启动一个镜像就是一个容器,容器与容器之间相互隔离,并且互不影响。

5)、Docker Client(Docker 客户端)

Docker命令行工具,用户是用Docker Clients与Docker daemon进行通信并返回结果给用户。也可以使用其他工具通过Docker Api与Docker daemon通信。

6)、Registry(仓库服务注册器)

经常会和仓库(Repository)混为一谈,实际上Registry上可以有多个仓库,每个仓库可以看成是一个用户, 一个用户的仓库放了多个镜像。仓库分为了公开仓库(Public Repository)和私有仓库(Private Repository),最大的公开仓库是官方的Docker Hub,国内也有如阿里云、时速云等,可以给国内用户提供稳定快速的服务。用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可以使用push命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上pull下来就可以了。

5、Docker三大要素

  • 镜像(image)

  • 容器(container)

  • 仓库(Repository)

Docker 面向对象
容器 对象
镜像

Docker镜像(Image)就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。

图片alt