学习参考:尚硅谷Docker实战教程、Docker官网、其他优秀博客(参考过的在文章最后列出)
举个例子:
你开发好了项目,准备发布。
你说:“我开发好,你部署一下吧‘,
运维:“根本运行不了!”
你说:”???我这一切正常呀,你搞错了吧!“
运维:”我xxx“
...
(一场战争就此爆发)
这就是没有Docker前容易出现的情况。很难去在开发环境、测试环境、生产环境中保持基础环境的统一。
能不能让软件带环境呢?————Docker
Docker官网 这里是学怎么用
Docker Hub 这个是安装docker镜像的仓库
Docker的主要目标是“Build,Ship and Run Any App.Anywhere”,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到“一次镜像,处处运行”
Docker是一个用于开发、发布和运行应用程序的开放平台。Docker使您能够将您的应用程序与基础设施分离,以便您可以快速交付软件。使用Docker,你可以像管理应用程序一样管理你的基础设施。通过利用Docker的方法来快速交付、测试和部署代码,您可以显著减少编写代码和在生产中运行代码之间的延迟。
Docker 提供了在称为容器的松散隔离环境中打包和运行应用程序的能力。隔离和安全性允许您在给定主机上同时运行多个容器。容器是轻量级的,包含运行应用程序所需的一切,因此您无需依赖主机上当前安装的内容。您可以在工作时轻松共享容器,并确保与您共享的每个人都获得以相同方式工作的相同容器。
Docker 提供工具和平台来管理容器的生命周期:
总结:就是一个容器,里面装好了我开发的程序所运行的各种环境配置,保证各个到处运行的”一致性“。这个容器还能共享。
1. 一次构建、随处运行
2. 更便捷的升级和扩缩容
3. 更简单的系统运维
4. 更高效的计算资源利用
虚拟机(virtual machine)就是带环境安装的一种解决方案。是硬件层面的,比如我们使用VMware安装Linux系统时,会为其分配cpu、内存、存储等这些资源。本质上虚拟机是一个iso文件,但是实际运行后就和真实的操作系统没有甚差别。
传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统(如: VirtualBox和VMWare等),创建虚拟机(虚拟出各种硬件),在虚拟机上安装从操作系统,在从操作系统中安装部署各种应用。“
虚拟机的缺点:
这3个缺点,相信使用过的人都有所感受。
由于前面虚拟机存在某些缺点,Linux发展出了另一种虚拟化技术:Linux容器(Linux Containers,缩写为 LXC)
Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。
Linux 容器不是模拟一个完整的操作系统而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。
Docker 容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker 优势体现为启动速度快、占用体积小。
就像是一个一个的类模板。
Docker 镜像(Image)就是一个只读的模板。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。它也相当于是一个root文件系统。比如官方镜像 centos:7 就包含了完整的一套 centos:7 最小系统的 root 文件系统。相当于容器的“源代码”,docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。
运行镜像,来获得实例对象
从面向对象角度
Docker 利用容器(Container)独立运行的一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台
从镜像容器角度
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
存放镜像
仓库(Repository)是集中存放镜像文件的场所。类似于
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云等
Docker的架构模式是C/S,后端是一个松耦合架构,众多模块各司其职。
Docker是一个由三部分镜像
、容器
、仓库
组成的一个简易版Linux系统(只包含程序运行所需要的依赖项,而不是整个Linux)
。我对自己的要求就是先会用,逐渐的深入原理、分析其架构。
https://docs.docker.com/get-started/overview/ ↩︎
https://docs.docker.com/get-started/overview/#docker-architecture ↩︎