Docker基础
Docker
Docker 是一种开源项目,可将应用程序的部署自动化,将应用程序部署为可在云或本地运行的可移植独立容器。
容器扮演什么角色?
容器化是软件开发的一种方法,通过该方法可将应用程序或服务、其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像。 可以将容器化应用程序作为一个单元进行测试,并将它们作为容器映像实例部署到主机操作系统 (OS)。
就像船只、火车或卡车运输集装箱而不论其内部的货物一样,软件容器充当软件部署的标准单元,其中可以包含不同的代码和依赖项。 通过这种方式容器化软件,开发人员和 IT 专业人员可以在几乎不进行修改的情况下完成跨环境部署。
从中可以看出,将应用程序容器化是实现微服务体系结构模式的一种有效方法。 容器的优点几乎与微服务的优点一一对应。
容器化的另一个优势在于可伸缩性。 通过为短期任务创建新容器,可以快速扩大。 从应用程序的角度来看,实例化映像(创建容器)类似于实例化 服务或 Web 应用等进程。
简而言之,容器能在整个应用程序生命周期工作流中提供隔离、可移植性、灵活性、可伸缩性以及控制方面的优势。
什么是映像?
使用 Docker 时,开发人员会创建一个应用或服务,并将它及其依赖项打包到一个容器映像(镜像)中。 映像是应用或服务及其配置和依赖项的静态表示形式。
它在运行时便成为了我们的容器。 容器是映像的内存中实例。
容器映像是不可变的。 生成映像后,无法更改该映像。 因为无法更改映像,所以如果需要进行更改,将创建一个新映像。 此特性可保证在生产环境中使用的映像与在开发环境和 QA 环境中使用的相同。
什么是 Dockerfile?
Dockerfile 是包含有关如何生成 Docker 映像的说明的文本文件。 Dockerfile 使用专为生成和配置映像设计的最小化脚本语言编写。 它们还记录从基本映像开始生成映像所需的操作。
若要创建包含应用程序的 Docker 映像,通常首先是确定要添加其他文件和配置的基本映像。 要确定合适的基本映像,首先通常在 Docker 中心搜索现成映像,其中已包含应用程序框架和 Linux 发行版的所有实用程序和工具,如 Ubuntu 或 Alpine。 例如,如果有想要打包到容器中的 ASP.NET Core 应用程序,则 Microsoft 会发布已包含 ASP.NET Core 运行时且名称为 mcr.microsoft.com/dotnet/core/aspnet
的映像。
在自定义映像时,可以首先使用具有基本映像的容器,然后再对其进行更改。 更改通常会涉及多种活动,例如将文件从本地文件系统复制到容器,以及运行各种工具和实用程序来编译代码。
换句话说,Docker 文件是一组指令,用于构建 Docker 映像,其中包含运行应用程序所需的确切软件(包括应用程序本身)。
为什么要在 .NET 中生成微服务?
从 .NET Core 开始一直到当前迭代,.NET 最初构建为云原生。 它跨平台运行,因此你的 Docker 映像可以基于 Linux 的风格,而 .NET 代码仍将运行。 此外,Microsoft 还为 Docker 创建了 .NET 映像。 另外,.NET 的速度非常快,ASP.NET 的 Kestrel Web 服务器的性能通常优于其他 Web 服务器。
Docker 管理命令
builder Manage builds 管理构建
config Manage Cocker configs 管理配置
container Manage containers 管理容器
context Manage contexts 管理上下文
engine Manage the docker engine 管理引擎
image Manage images 管理镜像
network Manage networks 管理网络
node Manage swarm nodes 管理节点(集群)
plugin Manage plugins 管理插件
secret Manage Docker secrets 管理密钥
service Manage services 管理服务
stack Manage Docker stacks 管理
swarm Manage Swarm 管理集群
system Manage Docker 管理系统
trust Manage trust on Docker images 管理信任
volume Manage volumes 管理数据挂载(数据持久化===永久保存)