Docker 的应用场景 Web
- 应用的自动化打包和发布。
- 自动化测试和持续集成、发布。
- 在服务型环境中部署和调整数据库或其他的后台应用。
- 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
Docker 的优点
持续部署与测试
- Docker 可以确保从开发到产品发布整个过程环境的一致性。便于部署和开发测试。
多云平台
- 可移植性
环境标准化和版本控制
- 可以方便的进行版本管理
隔离性
安全性
1.优势
docker 启动快,开启一个 container 通常只需要几秒钟,而虚拟机开机至少几十秒;
docker 需要的资源更少, docker 在操作系统级别进行虚拟化, docker 容器和内核交互,几乎没有性能损耗,性能优于通过 Hypervisor 层与内核层的虚拟化;
docker 更轻量, docker 重装或者复制到其他机器比虚拟机快很多,重新安装 docker 容器只需要几十秒种,而虚拟机至少需要几分钟;并且 dockers 的 image 文件导出占用只有几百兆,但是虚拟机的镜像包往往有几个 G; 2.缺点
docker 无法对外开放所有端口,docker 只能对宿主机和同宿主机的 docker 开放所有端口,其他机器访问 dockers 需要通过宿主机进行端口转发,而不能像虚拟机一样通过 IP 访问;
docker 默认安装系统包较少,默认安装的虚拟机往往字段一些常用的系统包,但是 docker 很多常用的包都没有(比如 docker 下 centos7 默认是没有 ip 命令的,也不支持 ssh 登陆);
Docker 的主要用途
(1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构
https://blog.csdn.net/u013007900/article/details/62219169
https://blog.csdn.net/xiangxizhishi/article/details/79441391
Docker 架构
- Docker 基本概念https://blog.csdn.net/omnispace/article/details/79778544
- Docker 介绍以及其相关术语、底层原理和技术:https://blog.csdn.net/zxygww/article/details/53709106
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。
Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类
Docker 术语
集群
一个集群指容器运行所需要的云资源组合,关联了若干服务器节点、负载均衡、专有网络等云资源。
节点
一台服务器(可以是虚拟机实例或者物理服务器)已经安装了 Docker Engine,可以用于部署和管理容器;容器服务的 Agent 程序会安装到节点上并注册到一个集群上。集群中的节点数量可以伸缩。
容器
一个通过 Docker 镜像创建的运行时实例,一个节点可运行多个容器。
镜像
Docker 镜像是容器应用打包的标准格式,在部署容器化应用时可以指定镜像,镜像可以来自于 Docker Hub,阿里云容器 Hub,或者用户的私有 Registry。镜像 ID 可以由镜像所在仓库 URI 和镜像 Tag(缺省为 latest)唯一确认。
编排模板
编排模板包含了一组容器服务的定义和其相互关联,可以用于多容器应用的部署和管理。容器服务支持 Docker Compose 模板规范并有所扩展。
应用
一个应用可通过单个镜像或一个编排模板创建,每个应用可包含 1 个或多个服务。
服务
一组基于相同镜像和配置定义的容器,作为一个可伸缩的微服务。
关联关系
镜像:用来启动容器的只读模板,是容器启动所需的 rootfs,类似于虚拟机所使用的镜像。
容器:Docker 容器是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
镜像是容器的基础,可以简单的理解为镜像是我们启动虚拟机时需要的镜像,容器时虚拟机成功启动后,运行的服务。
其他模块
1 | 其他模块 |
docker load & docker import 的区别
- docker save images_name:将一个镜像导出为文件,再使用 docker load 命令将文件导入为一个镜像,会保存该镜像的的所有历史记录。比 docker export 命令导出的文件大,很好理解,因为会保存镜像的所有历史记录。
- docker export container_id:将一个容器导出为文件,再使用 docker import 命令将容器导入成为一个新的镜像,但是相比 docker save 命令,容器文件会丢失所有元数据和历史记录,仅保存容器当时的状态,相当于虚拟机快照。
docker save 对应 docker load
docker export 对应 docker import