Docker,它是什么,目的是什么
我前几天听说过Docker,并希望跨过。
但实际上,我不知道这个“容器”的目的是什么?
什么是容器?
它可以替代专用于开发的虚拟机吗?
简单地说,在公司中使用Docker的目的是什么? 主要优势?
Docker:
码头工人是什么?
Docker是一个容器管理服务。 Docker的关键字是在任何地方开发,运输和运行的。 Docker的整个想法是让开发人员轻松开发应用程序,将其发布到容器中,然后将其部署到任何地方。
初始版本:2013年3月
主要用于基于敏捷的项目。
参考
为什么码头工人?
更多细节:为什么码头工人
条款:
Docker引擎: “Docker引擎”是创建和运行Docker容器的Docker的一部分。
Docker Hub:用于共享和管理应用程序堆栈的SaaS服务。
(Docker Hub是一个云上的注册表服务,允许您下载其他社区构建的Docker镜像,也可以将自己的Docker镜像上传到Docker中心)
Docker Compose: Docker Compose是用于定义和运行多容器Docker应用程序的工具。 它使用Yaml文件来配置应用程序的服务,并使用单个命令执行所有容器的创建和启动过程。
使用Compose基本上是一个三步过程。
欲了解更多详情:Docker撰写
Docker Image:在Docker中,一切都基于图像。
Docker文件: Dockerfile实质上是构建映像的构建指令。
有关更多详细信息:Docker文件
Docker-compose.yml:配置。 应用程序的服务。
VM Machine:使用VM Machine软件,例如,Ubuntu可以安装在Windows内部。 他们都会同时运行。 这就像在一个操作系统内部构建一个PC,其核心组件如CPU,RAM,磁盘,网卡等,并将它们组装成像真正的PC一样工作。 这样,虚拟PC就成为了一台真正的PC中的“客户”,它的操作系统被称为主机。
容器:与上述相同,但不是使用整个操作系统,而是削减虚拟操作系统的“不必要”组件,以创建它的最小版本。 这导致了LXC(Linux容器)的创建。它比VM机器更快。
Docker:与虚拟机和容器不同, Docker容器不需要或包含单独的操作系统。 相反,它依赖于Linux内核的功能并使用资源隔离。
Docker的目的:其主要目标是自动化软件容器内的应用程序部署以及Linux上操作系统级别虚拟化的自动化。 这是容器轻量级,并在几秒钟内启动。
(请注意,在Docker情况下不需要任何操作系统)
[注意,这个答案重点关注Linux容器,可能并不完全适用于其他操作系统。 ]
什么是容器?
它是一个应用程序 :容器是运行彼此隔离的应用程序的一种方式。 而不是虚拟化硬件以运行多个操作系统,容器依靠虚拟化操作系统来运行多个应用程序。 这意味着您可以在与VM相同的硬件上运行更多容器,因为您只有一个操作系统副本在运行,并且不需要为应用程序的每个实例预先分配内存和CPU内核。 就像任何其他应用程序一样,当容器需要CPU或内存时,它将分配它们,然后在完成时释放它们,以便其他应用程序稍后可以使用那些相同的有限资源。
它们利用内核命名空间 :默认情况下,每个容器都会收到命名空间为以下的环境:
/
容器中的/
不同于主机上的/
。 这些名称空间中的每一个都可以防止容器看到主机上或其他容器中的文件系统或进程等事物,除非您明确地删除该隔离。
和其他Linux安全工具 :容器还利用其他安全功能,如SELinux,AppArmor,Capabilities和Seccomp来限制容器内的用户(包括root用户)无法逃离容器或对主机产生负面影响。
将应用程序与其依赖关系打包以实现可移植性 :将应用程序打包到容器中不仅包含应用程序本身,还包含运行该应用程序所需的所有依赖关系,并将其集成到便携式映像中。 该映像是用于创建容器的基本文件系统。 由于我们仅隔离应用程序,因此此文件系统不包含虚拟化整个操作系统所需的内核和其他OS实用程序。 因此,容器的映像应该比等效虚拟机的映像小很多,这样可以更快地将其部署到整个网络中的节点。 因此,容器已成为将应用程序部署到云和远程数据中心的常用选项。
它可以替代专用于开发的虚拟机吗?
这取决于 :如果您的开发环境正在运行Linux,并且您不需要访问硬件设备,或者直接访问物理硬件是可以接受的,那么您会发现迁移到Linux容器非常简单。 Docker容器的理想目标是应用程序,如基于Web的API(例如REST应用程序),您可以通过网络访问它。
简单地说,在公司中使用Docker的目的是什么? 主要优势?
开发或运营 :Docker通常被引入两条路径之一的环境中。 开发人员正在寻求更快速地开发和本地测试应用程序的方法,以及希望在硬件上运行更多工作量的操作,而不是虚拟机上可能实现的操作。
或者Devops :其中一个理想的目标是立即从CI / CD部署工具中利用Docker,编译应用程序并立即构建部署到开发,CI,prod等的映像。容器通常会减少移动应用程序的时间从代码签入到可用于测试,让开发人员更有效率。 而且,如果设计得当,开发人员和CI工具测试和批准的相同图像可以部署到生产环境中。 由于该映像包含了所有的应用程序依赖关系,因此在开发过程中发生的某些事件中断的风险显着降低。
可伸缩性 :我会提到的容器的最后一个关键优势是它们考虑了横向可伸缩性。 当您在无负载状态下使用无状态应用程序时,容器由于其较小的图像大小和较低的开销而更容易且更快地扩展。 出于这个原因,您会看到许多大型网络公司都在使用容器,例如Google和Netflix。
链接地址: http://www.djcxy.com/p/18201.html