Docker概念
Docker的理念
Docker是基于Go语言实现的云开源项目. Docker的主要目标是”Build, Ship and Run Any App, Anywhere”, 也就是通过对应组件的封装, 分发, 部署, 运行等生命周期的管理, 使用户的APP(也可以是一个Web应用或数据库应用等)及其运行环境能够做到”一次镜像, 处处运行“.
Linux容器技术的出现就解决了这样的一个问题, 而Docker就是在这个基础之上发展过来的. 将应用打成镜像, 通过镜像称为运行在Docker容器上面的实例, 而Docker容器在任何操作系统上都是一致的, 这就实现了跨平台, 跨服务器. 只需要一次配置好环境换到别的机子上就可以一键部署, 大大的简化了操作.
一句话解释就是, 解决了运行环境和配置问题的软件技术, 方便做持续集成并有助于整体发布的容器虚拟化技术.
虚拟机(virtual mashine)
虚拟机就是带环境安装的一种解决方案. 它可以在一种操作系统里面运行另一种操作系统, 比如Win10系统里面运行Linux系统CentOS7. 应用程序对此是毫无感知的, 因为虚拟机看上去和真实的系统一模一样, 而对于底层系统来说, 虚拟机就是一个普通的文件, 不需要就删除掉, 对其他部分毫无影响. 这一类虚拟机完美的运行了另一套 能够使应用程序, 操作系统和硬件三者之间的逻辑不变.
传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(例如: VirtualBox和VMWare等), 创建虚拟机(虚拟出各种硬件), 在虚拟机上安装操作系统, 再在从操作系统种安装部署各种应用.
虚拟机缺点:
- 资源占用多
- 冗余步骤多
- 启动慢
虚拟化技术
Linux容器(Linux Containers, 缩写为LXC)
Linux容器是与系统其他部分隔离开的一系列进程, 从另一个镜像运行, 并由改镜像提供支持进程所需的全部文件. 容器提供的镜像包含了应用的所有依赖, 因而在开发到测试再到生产的整个过程中,它都具有可移植性和一致性.
Linux容器不是模拟一个完整的操作系统而是对进程进行隔离,. 有了容器, 就可以将软件运行所需的所有资源打包到一个隔离的容器中. 容器与虚拟机不同, 不需要捆绑一整套操作系统, 只需要将软件工作所需的库资源和设置. 系统因此而变得高效轻量并保证部署在任何的软件中都能始终如一地运行.
Docker容器时在操作系统层面上实现虚拟化, 直接复用本地主机的操作系统, 而传统虚拟机则是在硬件层面实现虚拟化. 与传统的虚拟机相比, Docker优势体现为启动速度快, 占用体积小. Docker是内核级虚拟化.
VM | Docker | |
---|---|---|
Size | 大 | 小 |
Startup | 慢 | 快 |
Integration | 复杂 | 简单 |
Docker和传统虚拟机方式的不同之处:
-
传统虚拟机技术是虚拟出一套硬件后, 在其上运行一个完整的操作系统, 在该系统上再运行所需应用进程.
-
容器内的应用进程直接运行在宿主的内核, 容器内没有自己的内核且也没有进行硬件虚拟化,. 因此容器要必传统虚拟机更为轻便, 每个容器之间相互隔离, 每个容器有自己的文件系统, 容器之间进程不会相互影响, 能区分计算资源.
Docker官
Docker Hub官
Docker的基本组成:
- 镜像(image) —- 类模板
- 容器(container) —- 根据模板创建的实例
- 仓库(repository) —- 存放类模板的仓库
Docker是一个C/S模式的架构, 后端是一个松耦合架构, 众多模块各司其职
Docker运行的基本流程为:
- 用户使用Docker Client与Docker Daemon建立通信, 并发送请求给后者
- Dockers Daemon作为Docker架构中的主体部分, 首先提供Docker Server的功能使其可以接受Docker Client的请求
- Docker Engine执行Docker内部的一系列工作, 每项工作都是以JOB的形式存在
- JOB的运行过程中, 需要容器镜像时, 则从Docker Registry中下载镜像, 并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存储
- 当需要为Docker创建 络环境时, 通过 络管理驱动Network driver创建并配置Docker容器 络环境
- 当需要限制Docker容器运行资源或执行用户指令等操作时, 则通过Exec driver来完成
- Libcontainer是一项独立的容器管理包, Network driver以及Exec driver都是通过Libcontainer来实现具体对容器的操作
Docker安装
CentOS Docker安装
Docker并非是一个通用的容器工具, 它依赖于已存在并运行的Linux内核环境. Docker实质上是已经运行的Linux下制造一个隔离的文件环境, 因此他执行的效率几乎等同于所部署的Linux主机. 因此,Docker必须部署在Linux内核的系统上. 如果是其他系统想部署Docker就必须安装一个虚拟机Linux环境.
前提条件
目前CentOS仅发行版中的内核支持Docker. Docker运行在CentOS7(64-bit)上, 要求系统为642位, Linux系统内核版本为3.8以上
Docker常用命令
帮助启动类命令
镜像命令
容器命令
以下的命令都是在docker中pull了一个ubuntu镜像,容器的命令都在ubuntu中演示(centOS大一些200多兆, ubuntu70多兆)
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!