1.为什么会有一个Docker产品从开发到上线,从操作系统,到运行环境,到应用配置。作为开发+运维的协同,我们需要关心的东西很多。这也是很多互联网公司不得不面对的问题,尤其是经过各个版本的迭代之后,不同版本环境的兼容性对运维人员来说是一个考验。Docker之所以发展如此之快,也是因为它对此给出了标准化的解决方案。环境配置好麻烦。如果换了一台机器,又得从头再来,既费工又费时。很多人想,能不能从根本上解决问题,软件能随环境一起安装呢?也就是说,安装的时候,是原封不动的复制原来的环境。使用Docker,开发人员可以在协同编码时消除“在我的机器上工作”的问题。开发需要明确告诉运维部署团队,所有的配置文件+所有的软件环境都用上了。然而,即便如此,还是经常出现部署失败的情况。Docker镜像的设计使Docker打破了过去“一个程序就是一个应用”的观念。除了操作系统核心通过镜像外,应用运行所需的系统环境自下而上进行封装,实现应用的无缝跨平台运行。在此处插入图像描述。2.什么是DockerDocker是一个基于Go语言的云开源项目。Docker的主要目标是“Build,ShipandRunAnyAPP,Anywhere”,即通过对相应组件的封装、分发、部署、运行等生命周期的管理,使用户的App及其运行环境能够实现“一次性封装”。,runningeverywhere”。Linux容器技术的出现解决了这样一个问题,Docker就是在它的基础上发展起来的。在应用程序运行的Docker容器上,并且Docker容器在任何操作系统上都是一致的,实现了跨平台和跨服务器,只需要配置一次环境,一键部署到另一台机器上,大大简化了操作,Docker解决了运行环境和配置软件容器的问题,方便持续3.虚拟机技术与容器虚拟化技术虚拟机是一种带有环境安装的解决方案,它可以在一个操作系统中运行另一个操作系统,比如在一个操作系统中运行一个Linux系统一个windows系统。应用程序对此没有任何意识,因为虚拟机看起来像一个真实的系统,可以使应用程序、操作系统和硬件之间的逻辑保持不变。虚拟机的缺点:占用资源、冗余步骤多、启动慢由于虚拟机的这些缺点,Linux又开发了另一种虚拟化技术:LinuxContainers(LinuxContainers,缩写为LXC)。Linux容器不是模拟一个完整的操作系统,而是隔离进程。使用容器,可以将运行软件所需的所有资源打包到一个隔离的容器中。与虚拟机不同,容器不需要捆绑一整套操作系统,而只需要捆绑软件工程所需的库资源和设置。系统因此变得高效和轻量级,并确保部署在任何环境中的软件都能一致地工作。比较Docker与传统虚拟机方式的区别:传统的虚拟机技术是在生产出一套硬件后,在虚拟机上运行一个完整的操作系统,在该系统上运行所需要的应用进程;而容器中的应用进程直接运行在宿主机的内核上,容器没有自己的内核,也没有硬件虚拟化。因此,容器比传统的虚拟机更便携。每个容器都是相互隔离的,每个容器都有自己的文件系统。容器之间的进程不会互相影响,计算资源可以区分。4.Docker的基本组成Docker镜像(image)是一个只读模板。镜像可以用来创建Docker容器,一个镜像可以创建多个容器。一个Docker容器(Container)独立运行的一个应用程序或一组应用程序。容器是由镜像创建的运行实例。它可以启动、启动、停止、删除。每个容器都是一个隔离且安全的平台。将容器视为建议的Linux环境和在其中运行的应用程序。容器的定义和图像的定义几乎一样,也是层层叠叠的统一视角。唯一的区别是容器的顶层是可读可写的。Docker仓库(Repository)是镜像文件集中存放的地方。存储库和存储库注册表服务器之间存在差异。仓库注册服务器上往往存放着很多仓库,每个仓库包含多张图片,每张图片都有不同的标签(tag)。仓库有两种类型:公共仓库和私有仓库。最大的公共仓库是DockerHubDocker本身就是一个容器运行载体或者管理引擎。我们打包应用程序或配置依赖项以形成可交付的操作环境。这个打包后的运行环境就像一个镜像镜像文件。只有通过这个镜像文件才能生成Docker容器。镜像文件可以看作是容器的模板。Docker根据镜像文件生成容器实例。可以生成多个容器实例以同时运行。5、为什么使用DockerDocker在以下几个方面有很大的优势:更快的交付和部署Docker可以完美的协助你在整个开发周期中实现快速交付。Docker允许开发人员在容纳应用程序和服务的本地容器中进行开发。可直接融入可持续发展进程。开发者可以使用一个标准镜像构建一套开发容器。开发完成后,运维人员可以直接使用这个容器部署代码。Docker可以快速创建容器,快速迭代应用程序,并让整个过程全程可见,让团队的其他成员更容易了解应用程序是如何创建和工作的。Docker容器非常轻快!容器的启动时间以秒为单位,为开发、测试和部署节省了大量时间。高效部署和扩展Docker容器几乎可以运行在任何平台上,包括物理机、虚拟机、公有云、私有云、个人电脑、服务器等,这种兼容性允许用户将应用程序直接从一个平台迁移到另一个平台。Docker的兼容性和轻量级特性可以轻松实现负载的动态管理。您可以快速扩展或轻松下线您的应用程序和服务,这种速度接近实时。更高的资源利用率Docker对系统资源的利用率很高,一台主机上可以同时运行上千个Docker容器。除了在容器中运行应用外,基本不消耗额外的系统资源,使得应用的性能非常高,同时系统开销也尽可能小。传统的虚拟机方式需要10台虚拟机来运行10个不同的应用,而Docker只需要启动10个孤立的应用。更容易管理使用Docker,只需要很小的修改,可以代替以往大量的更新工作。所有更改都以增量方式分发和更新,以实现自动化和高效的管理。
