有实际工作经验的小伙伴们应该都知道一款产品在不同的环境和配置下可能会发生很多问题。比如:
1. 我在我的电脑上可以运行为什么到你这就不行了!
2. 版本更新,导致服务不可用!
这对于运维来说考验十分大!!! 环境配置是十分的麻烦的,在docker或者说在容器化技术出现之前每一个机器都要部署环境(集群Redis、ES、Hadoop…) !而且不同 *** 作系统在安装相同软件时会出现不同的意外,费事费力。于是有些人就想:发布一个项目( jar + (Redis MySQL JDK ES) ),能不能带上环境安装打包?打包后能不能跨平台运行?最后这些人搞出了docker来解决这些问题。总的来说Docker具备以下优势:
1.更快速的交付和部署应用:传统方式通过安装程序以及对应的文档一步一步安装部署测试,而 Docker通过与Jekins、k8s结合可以以流水线的方式将打包、部署、测试一键运行完毕
2.更便捷的升级和扩缩容:基于相同的镜像快速增加容器实例
3.更简单的系统运维:在容器化之后,我们的开发,测试环境都是高度一致的
4.更高效的计算资源利用:Docker是内核级别的虚拟化,可以在一个物理机上可以运行很多的镜像实例(容器)!服务器的性能可以被压榨到极致
Docker基本组成及运行原理Docker由以下4部分组成:
1.Docker主机(Host):安装了Docker程序的机器(Docker直接安装在 *** 作系统之上)
2.Docker仓库(Registry):用来保存各种打包好的软件镜像(类似 maven)
3.Docker镜像(Images):软件打包好的镜像;放在Docker仓库中
4.Docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用
我们平时所说的“Docker”通常是指 Docker Engine,它是一个客户端 - 服务器应用程序,由 Docker 守护进程、一个REST API指定与守护进程交互的接口、和一个命令行接口(CLI)与守护进程通信(通过封装REST API)。Docker Engine 从 CLI 中接受docker 命令,例如 docker run 、docker ps 来列出正在运行的容器、docker images 来列出镜像,等等。
Docker与虚拟机比较特性 | 容器 | 虚拟机 |
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 较弱 |
内存代价 | 很小 | 较多 |
硬盘使用 | 一般为MB | 一般为GB |
运行密度 | 单机支持上千个容器 | 一般几十个 |
隔离性 | 完全隔离 | 完全隔离 |
迁移性 | 优秀 | 一般 |
传统的虚拟机方式提供的是相对封闭的隔离。Docker利用Linux系统上的多种防护技术实现了严格的隔离可靠性,并且可以整合众多安全工具。从 1.3.0版本开始,docker重点改善了容器的安全控制和镜像的安全机制, 极大提高了使用docker的安全性。
Docker命令分类Docker的命令有很多,总的来说大体分为以下几种:
1.Docker环境信息 — docker [info|version]
2.容器生命周期管理 — docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]
3.容器 *** 作管理 — docker [ps|inspect|top|attach|wait|export|port|rename|stat]
4.容器rootfs命令 — docker [commit|cp|diff]
5.镜像仓库 — docker [login|pull|push|search]
6.本地镜像管理 — docker [build|images|rmi|tag|save|import|load]
7.容器资源管理 — docker [volume|network]
8.系统日志信息 — docker [events|history|logs]
从docker命令使用出发,梳理出如下命令结构图
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)