Docker| 01 认识Docker

110 阅读3分钟

这是我参与8月更文挑战的第13天,活动详情查看:8月更文挑战

Docker 是一个工具

场景:

  • 使用一款新Linux软件,但担心是恶意代码,可先在Docker中运行该软件
  • 作为一名系统管理员,可通过使用Docker作为软件管理工具集
  • 新编写好的软件,通过Docker发布,你的用户更容易安装并运行它
  • 大型系统或数据中心,通过Docker来创建build,测试和部署管道会变得很简单

Docker 包括一个命令行程序、一个后台守护进程,以及一组远程服务。Docker解决软件常见的问题,并简化了安装、运行、发布和删除软件。

容器

以上提到的场景,基本一个共同的目标:隔离所有资源。

在没有Docker时,以前都是使用虚拟机,通过硬件虚拟化来提供隔离,虚拟机提供虚拟的硬件,安装操作系统和其他程序,相当于在本机中通过虚拟机使用另一台电脑。而Docker容器不是硬件虚拟化,所有运行在Docker容器中的程序接口和主机的Linux内核直接打交道。

容器中运行的程序和计算机的操作系统之间没有额外的中间层,没有资源被冗余软件的运行或虚拟硬件的模拟而浪费。

Docker镜像

Docker容器可比作一个集装箱,可以执行,复制和分发容器。Docker通过一种打包和分发的软件,完成传统容器的封装,这个用来充当容器分发角色的组件被称为镜像。

Docker 镜像,是一个容器中运行程序的所有文件的捆绑快照。镜像在Docker生态系统中是可交付的基本单位。

Docker解决什么问题

当我们开发一个产品或者一个服务时,可能需要数据库,缓存,注册中心等等且很多软件我们还要考虑安装环境,安装位置,依赖性太大,到部署上线还需要完全一致部署到生产环境时,整个过程变得很复杂且依赖性比较大,关键有些软件的安全性问题也是一些重要考虑指标。

Docker能够有效解决很多问题:

  • docker使得组织有序,将相关依赖其他应用合理的进行隔离,且有序的管理,且部分依赖应用环境要求复杂或要求独占资源等特殊要求时,相互隔离互不影响
  • 提高可移植性,无论程序还是服务是在什么样操作系统设计或什么样的运行环境下,在docker中都可配置相对应环境进行运行,即便你的docker安装在任何操作系统上
  • 保护机器,运行的程序可能携带病毒或者有害的程序,docker也会保护我们在容器内运行的软件,容器内的任何东西只能访问在它内部的东西。