Docker 简介

简介: Docker 简介

🟧1. 为什么要用 Docker

我们知道,一个项目从开始开发到开发完成部署上线,往往要经历开发、测试、上线三个阶段,与之对应就是开发环境(用于开发项目)、测试环境(用于测试开发好的项目)和生产环境(测试通过的项目,部署上线)。


那么,这样就会带来一个问题。将开发并测试通过的项目打包成 jar 或 war 包,就可以直接在生产环境中运行了嘛?


答案是否定的。因为开发和生产往往是不同的环境,在开发时,应用需要依赖相应的配置和配置文件,项目部署上线同样需要进行配置,部署过程中往往还要考虑到软件或配置的版本等因素。否则,就会出现在开发环境上运行正常的项目,到了部署的时候死活都运行不了这种情况,为了解决问题,耗费了大量的时间和精力在配置环境上面。


因此,就出现了一个诉求:能不能像打包项目源码那样,把项目运行所需要的环境也一起打包复制过来?这样在部署的时候,直接安装就好了不需要再次进行复杂的环境配置操作,对于运维同学来说简直就是福音啊!


这次的答案是肯定的!Docker 的出现就是为了解决这个难题,提出了一个标准化的解决方案,利用容器虚拟化技术,让系统平滑移植,使得复制运行环境变成可能,使得 “开发环境能跑,部署上线跑不了” 的窘境不再出现!


🟧2. Docker 理念

Docker 是基于 Go 语言实现的云开源项目,是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker 允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。 -------------《维基百科》


它的理念便是 “Build, Ship and Run Any App, Anywhere”,通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的应用及其运行环境能够 “一次构建,到处运行”。2e718f6de6d94987ae2f2182c528d9c8.png

Docker 是在 Linux 容器技术的基础上发展而来的,将应用打包成镜像,通过镜像成为运行在 Docker 容器上的实例,而 Docker 容器在任何操作系统上都是一致的,因此实现了跨平台、服务器。


Docker 解决了运行环境和配置问题,是一种方便做持续集成并有助于整体发布的容器虚拟化技术。


🟧3. 虚拟机与容器虚拟化技术

🟠3.1 虚拟机技术

虚拟机(Virtual Machine)就是带环境安装的一种解决方案,是对硬件的虚拟化。它可以在一种操作系统里面运行另一种操作系统,比如在 Win10 系统里面运行 Linux 系统 CentOS 7. 应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于底层系统来说,虚拟机就是一个普通文件,不需要了就删掉,对其他部分毫无影响。这类虚拟机完美的运行了另一套系统,能够使应用程序,操作系统和硬件三者之间的逻辑不变。2e718f6de6d94987ae2f2182c528d9c8.png

然而,虚拟机技术也有一些缺点:


占用资源。虚拟机需要占用主机的 CPU 、内存空间和网络资源等。

冗余步骤多。新建一个虚拟机,需要进行很多的配置操作。

启动慢。启动虚拟机一般需要几十秒到几分钟的时间。

🟠3.2 容器虚拟化技术

Linux 为了弥补虚拟机技术的缺点,发展出了另一种容器虚拟化技术,Linux 容器 (Linux Containers,LXC) 技术。


Linux 容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项,因而在从开发到测试再到生产的整个过程中,它都具有可移植性和一致性。


Linux 容器不是模拟一个完整的操作系统而是对进程进行隔离。有了容器,就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一地运行。2e718f6de6d94987ae2f2182c528d9c8.png

Docker 容器是在操作系统层面上实现虚拟化,复用本地主机的操作系统,与传统的虚拟机相比,Docker 占用体积小、启动速度块。


Docker 容器和传统虚拟化技术的区别:


传统虚拟机技术虚拟出一套硬件之后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。

容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核也没有进行硬件虚拟,比较轻便。

每个容器之间相互隔离,每个容器有自己的文件系统,容器之间进程不会相会影响,能够区分计算资源。

🟧4. Docker 可以做什么

🟠4.1 更快速的应用交付和部署

传统的应用开发完成后,需要提供一堆安装程序和配置说明文档,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker 化之后只需要交付少量容器镜像文件,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。


🟠4.2 更便捷的升级和扩容

随着微服务架构和 Docker 的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个 Docker 容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容,使应用系统的扩容从原先的天级变成分钟级甚至秒级。


🟠4.3 更简单的系统运维

应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的 bug. 当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。


🟠4.4 更高效的计算资源利用

Docker 是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的 Hypervisor 支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的 CPU 和内存资源的利用率。


相关文章
|
2月前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
7月前
|
Docker 容器
01Docker简介
01Docker简介
25 0
|
7月前
|
SQL 关系型数据库 数据库
SQL Server 简介与 Docker Compose 部署
SQL Server 是由微软公司开发的一款强大的关系型数据库管理系统(RDBMS),广泛应用于企业级应用程序和数据存储。使用 Docker Compose,您可以轻松地将 SQL Server 实例部署到容器化环境中,并方便地进行数据库管理。在本文中,我将简要介绍 SQL Server 的基本概念,并详细阐述如何使用 Docker Compose 部署 SQL Server 容器。
229 2
SQL Server 简介与 Docker Compose 部署
|
9天前
|
NoSQL Redis Docker
[docker] Compose 简介
[docker] Compose 简介
|
2月前
|
Kubernetes Cloud Native 虚拟化
【docker】—— Docker 简介
【docker】—— Docker 简介
|
7月前
|
Oracle 关系型数据库 数据库
Oracle 简介与 Docker Compose部署
Oracle 数据库是一款由 Oracle 公司开发的关系型数据库管理系统(RDBMS)。它被广泛应用于企业级应用程序,提供了可靠的数据存储和强大的数据管理功能。
254 1
Oracle 简介与 Docker Compose部署
|
9月前
|
Docker 容器
Excalidraw 简介及 Docker Compose 部署指南
家人们好,我们在工作生活中经常需要画些图,我们往期了已经出过draw-io私有化部署的文章了,今天我要向大家介绍一款名为 Excalidraw 的绘图工具,这款工具了我个人非常喜欢使用,是因为它可以修改成类似于手写体的字体,并且可以直接绘画,这篇文章我将分享如何使用 Docker Compose 轻松部署 Excalidraw。
450 0
Excalidraw 简介及 Docker Compose 部署指南
|
6月前
|
jenkins 持续交付 数据安全/隐私保护
Jenkins简介及Docker Compose部署
Jenkins是一个开源的自动化服务器,用于自动化构建、测试和部署软件项目。它提供了丰富的插件生态系统,支持各种编程语言和工具,使得软件开发流程更加高效和可靠。在本文中,我们将介绍Jenkins的基本概念,并展示如何使用Docker Compose轻松部署Jenkins服务。
189 3
Jenkins简介及Docker Compose部署
|
6月前
|
Linux 开发工具 git
淘东电商项目(07) -GitLab简介以及Docker部署
淘东电商项目(07) -GitLab简介以及Docker部署
73 0
|
7月前
|
Kubernetes 监控 Go
Docker实战专栏简介
Docker实战专栏简介
32 0