Docker 介绍
docker 是一个开源容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
docker 本身并不是容器,它是创建容器的工具,是应用容器引擎。docker 有两句经典的口号:
第一句口号是:Build,Ship and Run ,搭建、发送、运行
第二句就是:Build once,Run anywhere,构建一次,到处使用
Docker 引擎
docker 引擎是一个 C/S 结构的应用,如图
- server 是一个常驻进程
- REST API 实现了 client 和 server 间的交互协议
- CLI 实现容器和镜像的管理,为用户提供统一的操作界面
核心概念
- 镜像(Image):运行环境 + 配置,搞定了环境依赖问题。通过运行镜像启动容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容:代码、依赖库、环境变量、配置文件等
- 容器(Container):容器类似于一个轻量级的沙箱,docker 利用容器来运行和隔离应用。容器是从镜像创建的应用运行实例。可以将其启动、停止、删除,而这些容器都是彼此相互隔离的、互不可见的
- 仓库(Respository):仓库是集中存放镜像文件的场所,docker 仓库可以分为公共仓库和私有仓库,目前最大的公共仓库就是官方提供的 Docker Hub
镜像与容器的关系就相当于 类和对象的关系,镜像提供的是一个个的模板,容器是通过模板来生成的应用
容器与虚拟机区别
虚拟机(virtual machine)运行一个完整的客户操作系统,通过虚拟机管理程序虚拟访问主机资源,一般来说,虚拟机提供的环境比大多数应用程序需要的资源多
docker 容器就是独立运行的一个或一组应用,以及它必须的运行环境,共享主机和其他容器的内核,不占用任何其他可执行文件的内容,使其轻量化
虚拟机属于分钟级启动,且占用资源多,虚拟机文件以 G 为单位
容器属于秒级启动,占用资源少,小则几 kb,大则几 mb
Docker 命令
Docker 应用场景
- 简化配置:开发人员可以将运行环境和配置放在代码中然后部署,同一个 Docker 的配置可以在不同的环境中运行
-环境一致性:保证测试环境与开发环境一致性,减少环境带来的时间成本
- 隔离应用:在一台宿主机上可运行多个应用,应用之间隔离,互不影响
- 快速部署:秒级部署,快速上线