【Docker01】入门

news/2024/5/4 1:04:32/文章来源:https://blog.csdn.net/qq_38690917/article/details/130256570

目录

概述

Docker平台

Docker可以做什么

快速、一致地交付应用程序

响应式部署和扩展

在同一硬件上运行更多工作负载

Docker架构

Docker守护程序(The Docker daemon)

Docker客户端(The Docker client)

Docker桌面(Docker Desktop)

Docker仓库(Docker registries)

Docker对象(Docker objects)

镜像(Images)

容器(Containers)

docker run命令示例

底层技术 


概述

        Docker是一个用于开发、交付和运行应用程序的开放平台。Docker使我们能够将应用程序与基础设施分离,以便快速交付软件。使用Docker,可以像管理应用程序一样管理基础设施。通过利用Docker的方法快速发送、测试和部署代码,可以显著减少编写代码和在生产中运行代码之间的延迟。

Docker平台

        Docker提供了在一个称为容器的松散隔离环境中打包和运行应用程序的能力。隔离和安全性允许您在给定的主机上同时运行多个容器。容器是轻量级的,包含运行应用程序所需的一切,因此不需要依赖于主机上当前安装的内容。就可以在工作时轻松地共享容器,并确保与您共享的每个人都能获得以相同方式工作的相同容器。

        Docker提供工具和平台来管理容器的生命周期:

  • 使用容器开发应用程序及其支持组件。
  • 容器成为分发和测试应用程序的单元。
  • 准备就绪后,将应用程序部署到生产环境中,作为容器或协调服务。无论您的生产环境是本地数据中心,云提供商还是两者的混合,这都是一样的。

Docker可以做什么

快速、一致地交付应用程序

        Docker允许开发人员使用提供应用程序和服务的本地容器在标准化环境中工作,从而简化了开发生命周期。容器非常适合连续集成和连续交付(CI/CD)工作流。

考虑以下示例场景:

  • 开发人员在本地编写代码,并使用Docker容器与同事共享他们的工作。
  • 他们使用Docker将应用程序推入测试环境,并执行自动化和手动测试。当开发人员发现错误时,他们可以在开发环境中修复它们,并将它们重新部署到测试环境中进行测试和验证。
  • 测试完成后,将修复程序发送给客户就像将更新后的映像推送到生产环境中一样简单。

响应式部署和扩展

        Docker基于容器的平台允许高度可移植的工作负载。Docker容器可以在开发人员的本地笔记本电脑上、数据中心的物理或虚拟机上、云提供商上或混合环境中运行。

        Docker的可移植性和轻量级也使其能够轻松地动态管理工作负载,根据业务需求几乎实时地扩展或拆除应用程序和服务。

在同一硬件上运行更多工作负载

        Docker重量轻、速度快。它为基于虚拟机管理程序的虚拟机提供了一种可行、经济高效的替代方案,因此可以使用更多的服务器容量来实现业务目标。Docker非常适合高密度环境和需要用更少资源做更多事情的中小型部署。

Docker架构

        Docker使用客户端-服务器体系结构。Docker客户端与Docker守护进程进行对话,后者负责构建、运行和分发Docker容器。Docker客户端和守护进程可以在同一系统上运行,也可以将Docker客户端连接到远程Docker守护进程。Docker客户端和守护进程通过UNIX套接字或网络接口使用RESTAPI进行通信。另一个Docker客户端是Docker Compose,它允许您使用由一组容器组成的应用程序。

Docker守护程序(The Docker daemon)

        Docker守护进程(dockerd)监听Docker API请求并管理Docker对象,如镜像、容器、网络和卷。守护进程还可以与其他守护进程通信,以管理Docker服务。

Docker客户端(The Docker client)

        Docker客户端(Docker)是许多Docker用户与Docker交互的主要方式。当您使用诸如docker run之类的命令时,客户端会将这些命令发送给dockerd,后者会执行这些命令。docker命令使用docker API。Docker客户端可以与多个守护进程进行通信。

Docker桌面(Docker Desktop)

        Docker Desktop是一款适用于Mac、Windows或Linux环境的易于安装的应用程序,使您能够构建和共享容器化的应用程序和微服务。Docker Desktop包括Docker守护进程(dockerd)、Docker客户端(Docker)、Docker-Compose、Docker Content Trust、Kubernetes和Credential Helper。

Docker仓库(Docker registries)

        Docker仓库存储Docker镜像。Docker Hub是一个任何人都可以使用的公共仓库,默认情况下,Docker被配置为在Docker Hub上查找镜像。您甚至可以运行自己的专用仓库。当使用docker pull或docker run命令时,所需的镜像将从配置的仓库中提取。当使用docker push命令时,镜像将被推送到配置的仓库中。

Docker对象(Docker objects)

        当使用Docker时,正在创建和使用镜像、容器、网络、卷、插件和其他对象。本节简要概述了其中一些对象。

镜像(Images)

        镜像是一个只读模板,带有创建Docker容器的说明。通常,一个镜像是基于另一个镜像,并进行一些额外的自定义。例如,可以构建一个基于ubuntu镜像的镜像,但安装Apache web服务器和应用程序,以及运行应用程序所需的配置详细信息。可以创建自己的镜像,也可以只使用他人创建并在仓库中发布的镜像。要构建自己的镜像,可以创建一个Dockerfile,该文件使用简单的语法来定义创建镜像和运行镜像所需的步骤。Dockerfile中的每个指令都会在镜像中创建一个层。当更改Dockerfile并重建镜像时,只会重建那些已更改的层。与其他虚拟化技术相比,这是使镜像如此轻便、小巧和快速的部分原因。

容器(Containers)

        容器是镜像的可运行实例。可以使用Docker API或CLI创建、启动、停止、移动或删除容器。可以将容器连接到一个或多个网络,将存储连接到容器,甚至可以根据容器的当前状态创建新镜像。默认情况下,容器与其他容器及其主机的隔离相对较好。可以控制容器的网络、存储或其他底层子系统与其他容器或主机的隔离程度。容器由其镜像以及创建或启动时提供给它的任何配置选项定义。删除容器后,未存储在永久存储中的对其状态的任何更改都将消失。

docker run命令示例

        以下命令运行一个ubuntu容器,以交互方式连接到本地命令行会话,并运行/bin/bash。

docker run -i -t ubuntu /bin/bash

        当您运行此命令时,会发生以下情况(假设使用的是默认仓库配置):

  1. 如果在本地没有ubuntu映像,Docker会从配置的仓库中提取它,就像手动运行docker pull ubuntu一样。
  2. Docker创建了一个新的容器,就像手动运行了一个Docker容器创建命令一样。
  3. Docker为容器分配一个读写文件系统,作为容器的最后一层。这允许运行中的容器在其本地文件系统中创建或修改文件和目录。
  4. Docker创建了一个网络接口,将容器连接到默认网络,因为没有指定任何网络选项。这包括为容器分配一个IP地址。默认情况下,容器可以使用主机的网络连接连接到外部网络。
  5. Docker启动容器并执行/bin/bash。因为容器以交互方式运行并连接到您的终端(由于-i和-t标志),所以可以在输出记录到终端时使用键盘提供输入。
  6. 当键入exit以终止/bin/bash命令时,容器会停止,但不会被删除。可以重新启动或删除它。

底层技术 

        Docker是用Go编程语言编写的,并利用Linux内核的几个特性来提供其功能。Docker使用一种名为名称空间的技术来提供称为容器的隔离工作空间。当你运行一个容器时,Docker会为这个容器创建一组名称空间。

        这些名称空间提供了一层隔离。容器的每个方面都在一个单独的命名空间中运行,其访问权限仅限于该命名空间。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_102114.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis框架与SpringBoot的整合及详细学习汇总

目录 springBoot整合Redis Redis 的优势 Redis安装 Redis数据类型 springboot操作Redis springboot 配置redis RedisTemplate及其相关方法 springBoot实现上传下载 RedisTemplate及其相关方法 springBoot实现上传下载 springBoot CORS(跨域资源共享&#…

使用opencv进行场景识别

opencv场景识别 文章目录 opencv场景识别一、需求1、现状2、设想 二、模型使用1、opencv dnn支持的功能2、ANN_MLP相关知识3、图像分类模型训练学习4、目标检测模型5、opencv调用darknet物体识别模型 三、模型训练1、现状2、步骤-模型编译3、步骤-模型训练 一、需求 1、现状 …

按照条件向Spring容器中注册bean

1.Conditional注解概述 Conditional注解可以按照一定的条件进行判断,满足条件向容器中注册bean,不满足条件就不向容器中注册bean。 package org.springframework.context.annotation;import java.lang.annotation.Documented; import java.lang.annota…

9. 树的进阶

9. 树的进阶 ​ 之前我们学习过二叉查找树,发现它的查询效率比单纯的链表和数组的查询效率要高很多,大部分情况下,确实是这样的,但不幸的是,在最坏情况下,二叉查找树的性能还是很糟糕。 例如我们依次往二叉…

RelativeLayout相对布局

一、官方地址&#xff1a; https://developer.android.google.cn/reference/kotlin/android/widget/RelativeLayout?hlen 二、概述 相对布局&#xff08;RelativeLayout&#xff09;是一种根据父容器和兄弟控件作为参照来确定控件位置的布局方式 三、基本格式 <RelativeLay…

Jenkins配置邮箱发送报告

本文以qq邮箱为例 1.下载Email Extension Plugin插件 2.在Manage Jenkins--System&#xff0c;Jenkins Location下配置理员邮件 Extended E-mail Notification 下配置Jenkins SMTP server&#xff08;邮箱服务&#xff09;、SMTP Port&#xff08;邮箱端口&#xff09;、Cred…

无法解析的外部符号 __mingw_vsprintf

windows下的ffmpeg是采取mingw平台上编译&#xff0c;本人采用的是msys2&#xff0c;本人需要h264&#xff0c;于是先在msys2里面编译了x264静态库&#xff0c;注意这里是静态库&#xff0c;动态库经过了链接&#xff0c;不会出现下面的问题&#xff0c;然后在ffmpeg里面用下面…

Java项目打包exe运行文件

Java项目打包exe运行文件 JavaSE打包成exe运行文件的方法有很多种&#xff0c;此处我们主要讲解我常用的一种exe4j&#xff0c;打包前我们需要先安装exe4j这个工具。 注意&#xff1a;exe4j仅支持最低JDK1.8最高JDK11&#xff0c;所以在安装之前一定要查看自己的JDK版本&#…

【移动端网页布局】移动端网页布局基础概念 ⑤ ( 视网膜屏技术 | 二倍图概念 | 代码示例 )

文章目录 一、视网膜屏技术二、二倍图概念三、代码示例 一、视网膜屏技术 PC 端 和 早期的 移动端 网页中 , CSS 中配置的 1 像素 对应的就是物理屏幕中的 1 像素 ; Retina 视网膜屏幕 技术出现后 , 将多个物理像素压缩到一块屏幕中 , 可以达到更高的分辨率 , 画面显示效果更好…

C/C++笔记-写一个Makefile并链接QtCore库使用QString,QDebug

如下cpp代码&#xff0c;调用QDebug打印程序&#xff1a; #include <QDebug> #include <QString>int main(int argc, char *argv[]){QString testStr "hello";qDebug() << testStr;return 0; } 如下makefile&#xff1a; test: main.cppg -c -…

自编码器简单介绍—使用PyTorch库实现一个简单的自编码器,并使用MNIST数据集进行训练和测试

文章目录 自编码器简单介绍什么是自编码器&#xff1f;自动编码器和卷积神经网络的区别&#xff1f;如何构建一个自编码器&#xff1f;如何训练自编码器&#xff1f;如何使用自编码器进行图像压缩&#xff1f;总结使用PyTorch构建简单的自动编码器第一步&#xff1a;导入库和数…

【JavaEE】社区版IDEA(2021.X版本及之前)创建SpringBoot项目

目录 下载Spring Boot Helper 创建项目 下载相关依赖 判断成功 删除多余文件 项目建好后添加依赖 输出Hello World SpringBoot的优点 下载Spring Boot Helper 创建项目 下载相关依赖 如果没有配置过国内源&#xff0c;参考【JavaEE】Spring项目的创建与使用_p_fly的博…

M_Map工具箱简介及地理图形绘制

M_Map工具箱简介及地理图形绘制 1 M_Map简介1.1 具体代码说明 2 地理图形绘制案例2.1 M_Map给定案例2.1.1 M_Map Logo2.1.2 Lambert Conformal Conic projection of North American Topography2.1.3 Stereographic projection of North Polar regions2.1.4 Colourmaps 2.2 案例…

【社区图书馆】 Go佬—Go程序开发实战宝典书评

文章目录 前言内容介绍文章大致划分总结 前言 《Go 程序开发实战宝典》是一本非常实用的 Go 语言开发工具书&#xff0c;本书由深入浅出的案例讲解、详细的技术实现、贴近实际的应用开发等组成&#xff0c;非常适合 Go 语言开发爱好者、从事相关行业的工程师、技术负责人以及深…

Spring依赖注入的三种方式使用及优缺点

初学Spring的时候,我们从Spring容器中获取Bean对象都是通过bean标签先将Bean对象注册到Spring容器中&#xff0c;然后通过上下文对象congtext的getBean方法进行获取&#xff0c;显然这种方法较为麻烦&#xff0c;所以有了更简单的存方法&#xff1a;五大类注解&#xff1b;取方…

Elasticsearch:了解和解决文档更新后 Elasticsearch 分数的变化

问题 问卷中有如下这样的文档&#xff0c;开发者想通过 match query 搜索这些文档来使用分数。 POST sample-index-test/_doc/1 {"first_name": "James","last_name" : "Osaka" } 以下是对上述文档的示例查询&#xff1a; GET sam…

贾其萃 : 笃行实践 筑梦扬帆 | 提升之路系列(二)

导读 为了发挥清华大学多学科优势&#xff0c;搭建跨学科交叉融合平台&#xff0c;创新跨学科交叉培养模式&#xff0c;培养具有大数据思维和应用创新的“π”型人才&#xff0c;由清华大学研究生院、清华大学大数据研究中心及相关院系共同设计组织的“清华大学大数据能力提升项…

LeetCode特训 --- Week2 (主打滑动窗口 + 字符串匹配题目)

目录 滑动窗口原理 真懂了滑动窗口? 滑动 字符串细节 开干切题 滑动窗口原理 滑动窗口&#xff1a;维护一前一后两根指针, 或者说一左一右两个指针。更主要的是维护左右指针中的区间. 同时不断的向前滑动&#xff0c;直到整个序列滑动结束&#xff0c;前指针走到序列末尾…

有什么好用的远程工具吗

沟通在任何类型的工作中都扮演着重要的角色。但当谈到远程工作时&#xff0c;这一点就更为重要。因此&#xff0c;您的组织必须找到可以让您的团队保持一致的工具。 在某些方面&#xff0c;项目管理扮演着类似的角色。 您会注意到&#xff0c;下面的大多数工具都会直接影响您的…

Java核心技术 卷1-总结-10

Java核心技术 卷1-总结-10 通配符类型通配符概念通配符的超类型限定无限定通配符通配符捕获 通配符类型 通配符概念 通配符类型中&#xff0c;允许类型参数变化。 例如&#xff0c;通配符类型Pair<? extends Employee>表示任何泛型Pair类型&#xff0c;它的类型参数是…