这是我参与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也会保护我们在容器内运行的软件,容器内的任何东西只能访问在它内部的东西。