Docker基础知识

2022-11-22 08:37:31 浏览数 (1)

✧ 概述

Docker是一种容器,只不过相比其他容器而言性能更好。容器是一个标准的软件单元。Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。它打包了代码,以及所有的依赖项和运行环境等。之前我们使用springboot打包,打包后他只是一个jar包,并没有包含他的java环境等依赖。Docker可以使打包后的应用程序从一个运行环境到另一个运行环境都能够运行,解决了一个应用程序在我的电脑上面可以运行,在其他电脑上不能运行的情况。Docker包含了应用程序运行所需要的一切,不仅仅包含代码。它最主要的作用就是把环境相关的问题统一一切解决掉,提升了开发部署的效率。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

Docker的应用场景有:Web 应用的自动化打包和发布,自动化测试和持续集成、发布,在服务型环境中部署和调整数据库或其他的后台应用。

✧ Docker 架构

这张图最左边是Client,也就是Docker的客户端,如果这个客户端作为本机去访问远端的一个Docker服务器,这个时候本机就是客户端。它可以使用各种各样的命令,比如说docker build、docker pull等。这个命令传到了Docker Host ,这个Docker Host 就可以理解为是一个Docker的服务器,命令首先传到的是Docker daemon,然后由它进行一个分发和处理。Docker daemon是进行统一指挥的。Images称为镜像,Containers叫做容器,右侧的Registry我们叫做仓库。

Docker要把程序和环境要一起打包。那打包到哪里去呢?其实就是产出这样的Image镜像,这个镜像里面就包含了我们的核心程序,并且还包含了我们所需的环境。因此,如果你拥有了一个Image镜像的话,也就意味着这里面包含的程序和环境你都有了。因此我们也可以得到一个结论就是假设你有了一个完整得image,也就意味着你能确保你的程序能够跑起来。这是因为在这个镜像中已经包含了整个应用启动所需的程序和环境。这就是关于镜像的概念。镜像通常都是分层的,最底层可能是某一个操作系统,比如说Cent OS ,在这基础上可能会有java的运行环境和数据库等,在这之上,可以有我们程序的jar包。我们可以使用别人的镜像作为我们的基础再往上叠加。

一个镜像可以有多个容器,举个例子:好比我们有一个镜像,他是Nginx的一个镜像,然后我们第一个容器把它启动起来,然后把端口配置成80,我们再启动一个容器,我们把端口配置成81,我们可以继续去启动配置成其他端口都可以。这些容器之间有一个共同的特点,就是来自于同一个镜像。这就好比说我们在java中有类的概念和实例的概念,镜像就好比是java类,而容器就是实例。也就明白了,其实容器也就是把镜像启动起来之后,所形成的一个产物。那假设我们要用Docker去运行我们的程序,想要让他跑起来呢,我们只有前面的镜像还远远不够。我们需要把这个镜像给运行起来,运行起来之后,他就变成了所谓的容器。实际上我们的程序是跑在容器里面的,而且如果我们的镜像有多个容器,这多个容器之间也是相互隔离的。关于容器还有一个点就是可以进一步修改。比如说我们运行了一个程序以后,你进到这个容器里面,比如说这是一个MySQL的容器,你进去里面,把他的用户名,或者端口啊进行了一些调整,如果你觉得这个环境特别好,你就可以以这个环境作为基础去生成新的镜像,未来啊假如你以这个镜像作为基础去启动的话,那生成的环境也是经过你编辑修改过的。这就是关于容器的特点。

仓库的概念是比较简单的,仓库起到的作用是集中存储。就像我们的中央仓库一样。相当于是你把你的程序统一统一推送到中央仓库去进行一个集中的存储,然后我们的同事就可以把他下载下来。这个和GitHub也是非常类似的。我们的仓库在架构图中体现在最右侧的Registry里面有各种各样的程序,你想用什么,直接去里面找就可以了。通常我们常用的软件他都有提供,Docker有一个官方的中央仓库DockerHub。我们可以在里面进行搜索我们想要的镜像,比如nginx等。国内有一个仓库就DaoCloud

镜像(Image):相当于是一个 root 文件系统。Docker 镜像是用于创建 Docker 容器的模板。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。 Docker 客户端(Client):Docker 客户端通过命令行或者其他工具使用 Docker SDK 与 Docker 的守护进程通信。 Docker 主机(Host) :一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 Docker Registry: Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Machine:Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker。

这一节我学习了Docker相关的一些概念,下一节学习如何安装和使用Docker。

0 人点赞