这篇文章并不是一个大众化的docker介绍,是本人在学习docker中遇到的问题和存在的疑惑在得到解答后所总结出来的内容。
Docker是什么?
Docker首先他是一个软件平台,让您可以快速构建、测试和部署应用程序。顾名思义他是一个项目构建部署的工具。但他和一些Maven之类的构建工具有所不同。他并不是将你的代码构建起来,而是将你的代码封装起来,实现一次构建任何地方都可以实现。
我们知道要运行一段代码或者说一个项目需要配置各种各样的环境变量以及配置等。就算是运行一个简单的“Hello World”代码,你用python需要配置python的环境变量,用java写也需要下载java的jvm才能运行。在一些复杂项目里我们要运行各个服务,例如一般来说我们需要运行许多数据库(mysql等)、中间件(redis、nginx、kafka等)或者apache服务器等。 这些服务的配置和开启都需要和系统里的各种环境配置等深度绑定。所以我们一个系统里通常只能运行一个项目。
这还不是最糟糕的,最糟糕的是我们代码编写过程中要遇到开发环境、测试环境和线上环境等。这些不同的环境其实就是代码在不同的地方运行,也许你作为开发人员在本地电脑上配置好的环境和代码是没有问题的,但是在其他地方部署时却出现了各种问题。虽然现在的很多技术都在提供的自动化构建,如maven等技术就可以通过一个文件来控制你的环境版本等。这样方便你在其他电脑上重新构建该项目。
但是还是没有解决另一个问题,那就是在一个电脑上只能运行一个项目,这样一来docker就应运而生。
Docker介绍
Docker是一个平台,他通过在原先操作系统内核的基础上通过某些方法实现了多个环境共存,这里使用的技术是Linux内核的一些技术包括Linux 内核的命名空间(Namespace)、Linux 内核的控制组(CGroup)、Union 文件系统、Linux 容器(LXC)。这些技术是是什么不重要,原理可以后面再去学。现在可以知道的是Docker通过这几个技术在原先操作系统上面构建了多个虚拟环境,这样实现了多个项目共存。这里多个虚拟环境其实就是指各个环境的链接和配置等。通过docker这个平台来给你自动切换和屏蔽了。
Docker运行起来只是系统中的一个进程,该进程通过上述的几个技术在原linux内核之上构建虚拟环境,他和VM这些虚拟化技术不同的是,他并不是在上面重新创建了一个虚拟系统,而是在原先系统的基础上划分了不同区域,这样一来的好处是占用资源少而且可以动态划分资源。
Docker内容
通常Docker核心技术其实就是镜像、容器和数据卷等。这些内容在其他博客中都详细介绍了,这里就不过多介绍。 这里更多介绍的是对于Docker的理解和应用。
Docker还会有不同容器间通信以及如何多个服务打包到一个容器里等各种操作。
Docker应用
有了docker我就可以在写好一个项目后,将他打包成一个镜像,然后在任何可以安装docker的操作系统中运行。他会借用原操作系统的内核来实现虚拟的环境。这里值得一提的是如果我写的项目是运行在linux系统中,但是我现在需要把他运行在windows操作系统上是不是就不能实现了。因为之前说的是他需要借助原操作系统的功能。
其实是可以实现的,这里windows和Macos采取的措施是要求系统启用了 Hyper-V 虚拟化功能,该功能允许在 Windows 系统上创建和管理虚拟机(VMs)。Hyper-V 虚拟化功能提供了一个完整的虚拟化解决方案,包括虚拟处理器、内存、存储和网络等组件。
这样一来其实就是wondows虚拟了一个linux操作系统,然后在该操作系统上使用docker,docker在该linux系统上划分不同的虚拟环境。
docker的介绍就到这里,以上就是我对docker的一些简单理解。
标签:操作系统,介绍,构建,内核,Docker,docker,运行 From: https://www.cnblogs.com/grfade/p/18104751