【Docker学习总结】2.Docker的基本组成介绍

【Docker篇】Docker的基本组成,底层原理分析 文章目录1. Docker的基本组成1.1 Docker的架构图1.2 几个名词解释2. Run的执行原理3. Docker底层工作原理 Docker官网:https://www.docker.com/ Docker Hub官网:https://hub.docker.com/ 1. Docker的基本组成 在讲解原理之前,我们先要了解一下Docker的基本组成以及一些常用到的名词解释,以便在后续的文章中能更好地理解。 1.1 Docker的架构图 从架构图中可以看出,一个完整的Docker有以下几个部分组 阅读详情

Docker Client客户端
Docker Daemon守护进程
Docker Image镜像
Docker Container容器
Docker Registry仓库

 整个流程就是,Docker Client客户端发布请求指令,Docker Daemon守护进程接受指令(守护进程位于一台服务器),然后操作基于Docker Image镜像的Docker Container容器中的应用,同时Docker Registry仓库提供了另外叠加的Docker Image镜像文件系统
 

一、Docker客户端/守护进程

Docker是C/S(客户端/服务器)架构的程序,Docker的客户端,向Docker的服务端(即守护进程)发出请求,守护进程处理完所有的工作,并返回结果。
Docker客户端对服务器端的访问,既可以是在本地,也可以通过远程来访问。

                                                     

我们通过Docker客户端,执行各种命令,然后Docker客户端会将这些命令发送给守护进程。守护进程执行的结果,还会传回给客户端,使我们能够通过客户端,开查看命令运行的结果。

二、Docker Image镜像

镜像是Docker容器的基石,容器基于镜像启动和运行。镜像就好比容器的源代码,保存了用于启动容器的各种条件。
如果更深一层的剖析Docker的Image镜像,其是一个层叠的只读系统:

它的最底端,是一个引导文件系统,即bootfs。计算机系统中引导程序的作用是进行系统初始化工作,以及将OS的核心程序装入主存。这很像典型的Linux引导系统,而用户几乎不会和引导文件系统进行交互。
实际上,当一个容器启动后,它将会被引入到内存中,而引导文件系统会被卸载。

它的第二层,是rootfs(root文件系统),它位于引导文件之上。root文件系统可以是一种或者多种的操作系统,例如Ubuntu或Cent OS。在传统的Linux引导过程中,root文件系统以只读的方式加载,当引导结束并完成了完整性检查后,它才会被切换为读写模式。但是在Docker容器中,root文件系统永远只能为只读状态,并且Docker利用联合加载(union mount)技术,又会在root文件系统之上,加载更多的只读文件系统。联合加载的意思就是,一次同时加载多个文件系统,但是在外面看起来,只能看到一个文件系统。联合加载会将各层文件系统叠加到一起,让最终的文件系统,会包含所有的底层文件和目录。

Docker将这样的文件系统成为“镜像”。一个镜像可以放到另一个镜像的顶部,位于下面的镜像,称为父镜像,可以以此类推,直到镜像栈的最底部,而最底部的镜像,称为“基础镜像”。也就是上图的镜像栈中的rootfs文件系统。所有的层都会有一个指针指向下一层。


三、Docker Container容器

Docker Container容器是通过镜像启动的,Container容器是Docker的执行单元,容器中可以运行客户的一个或多个进程。
如果说镜像是Docker生命周期的【构建和打包阶段】,那么容器则是Docker生命周期的【启动和执行阶段】。

那么,容器是怎么通过镜像来启动的呢,看一下上面的镜像结构图:


当一个容器启动时,Docker会在容器的最顶层,加载一个读写文件系统,也就是一个可写的文件层。我们在Docker中运行的程序,就是在这个层中进行执行的。
当Docker第一次启动一个容器时,初始的读写层是空的。当文件系统发生变化时,这些变化都会应用到这一层上。比如,我们想修改一个文件,这个文件首先会从读写层下面的只读层,复制到上面的读写层,该文件的只读版本依然存在,但是已经被读写层中的该文件副本所隐藏,这就是Docker中的一个重要技术,即“写时复制(copy on write)”,每个只读镜像层都是只读的,并且以后永远不会变化。
当创建一个新容器时,Docker会构建一个镜像栈,就像上图中展现的,在栈的最顶层添加可写层。这个读写层,加上下面的镜像层,以及一些配置数据,就构成了一个容器,也即是:容器 = 镜像 + 可读层。

容器的这种特点,加上镜像分层的框架,使我们可以快速的构建镜像,并允许包含我们自己的应用程序和服务的容器。
 

四、Docker Registry仓库

 

Docker用仓库来保存用户构建的镜像,仓库分为“公有”和“私有”两种。Docker公司自己提供了一个公有的仓库,叫做“Docker Hub”。我们可以在“Docker Hub”上去注册账号,分享并保存自己的镜像。目前“Docker Hub”已经有了非常丰富的镜像,所以我们也可以通过“Docker Hub”来查找我们需要的镜像,为我们节省很多的构建镜像的时间。
当然,我们也可以架设自己的私有仓库。

 我们通过客户端,来访问Docker的守护进程,从而操作Docker的容器,而容器是通过镜像来创建的,而镜像保存在仓库中。

手把手教你RK3588 NPU驱动与RKNN Toolkit,AI开发不迷路! 本文详细介绍了RK3588 NPU驱动安装与RKNNToolkit使用方法。首先阐述了RK3588芯片在嵌入式AI领域的优势,包括6TOPS算力和混合量化支持。随后分步骤讲解了NPU驱动安装流程,包括准备工作、编译安装、验证调试及常见问题解决。接着全面介绍了RKNNToolkit的环境搭建、基本使用流程和图像分类实战案例,涵盖模型转换、推理优化等关键环节。最后展望了RK3588在智能安防、工业自动化等领域的应用前景,为开发者提供了完整的嵌入式AI开发指南。 阅读详情

相关推荐

VCSA 6.7证书过期别慌!手把手教你通过SSH修改系统时间恢复登录(附STS证书修复脚本)

本文详细介绍了VCSA 6.7证书过期的应急处理方案,包括通过SSH修改系统时间临时恢复登录、全面更新证书体系以及专项修复STS证书的实战步骤。文章还提供了后期验证和系统加固的建议,帮助运维人员有效应对证书过期问题,确保虚拟化平台的稳定运行。

weixin_31292729的博客 418

docker主要组成

docker的主要组成: 1、docker client 客户端 2、docker Daemon 守护进程 Docker是C/S架构的程序,Docker的客户端向守护进程发起请求,守护进程处理完成后返回结果。 Docker客户端既可以在本底访问守护进程,也可以远程访问守护进程。 2、docker Image(镜像) 3、docker Container(容器) 镜像就相当于C++或Java中的类,...

EricLee23 2537

详解相机的sensor工作原理

目录sensor成像原理拜尔马赛克变换(BAYER DEMOSAICING)维伦阵列摩尔纹 sensor成像原理 相机或摄像头使用数百万个微小的光腔(感光元件)来记录图像。 成像时,sensor将镜头投射来的光子储存为模拟电信号。 曝光完成后,相机关闭这些光腔(感光元件),然后通过测量模拟电信号的强度来评估每个腔中有多少光子掉入来计算数字电信号的数值。 然后模拟电信号转换为数字电信号,数字电信号的数值由位深度决定(RGB的位深度)。 最后,根据正在记录的文件格式(8位JPEG位0-255),可能会再次降低

路人coder 2万+

docker笔记4-docker的三要素

docker三要素 镜像、容器、仓库 镜像 docker镜像(image)就是一个 只读 的模板。 镜像可以用来创建docker容器,一个镜...

cjfcxf010101的博客 308

VMware Workstation Pro 17 最新破解版安装教程(附永久激活密钥)

本文详细介绍了VMware Workstation Pro 17专业版的安装与配置指南,包括系统要求检查、官方版本安装流程、高级配置优化及常见问题排查。通过合规使用官方版本,开发者可以充分利用其强大的虚拟化能力,提升多平台开发与测试效率。

weixin_29327977的博客 3587

基于STM32L4XX 、HAL库的SGM452B数字温度传感器驱动应用C语言程序设计

SGM452B_RESOLUTION_12BIT = SGM452B_CONFIG_R1 | SGM452B_CONFIG_R0 /* 12位分辨率,精度0.0625°C,转换时间200ms */SGM452B_RESOLUTION_11BIT = SGM452B_CONFIG_R1, /* 11位分辨率,精度0.125°C,转换时间100ms */SGM452B_RESOLUTION_10BIT = SGM452B_CONFIG_R0, /* 10位分辨率,精度0.25°C,转换时间50ms */

PP_Cottage的博客 330

Docker容器系列(一)Linux内核Namespace和Cgroup浅析

Linux内核中六种Namespace解析,和Cgroup各层级结构关系以及测试试验

97运维的博客 2974

ZooKeeper 实战:使用 Docker Compose 部署 ZooKeeper 集群

ZooKeeper是一个开源的分布式协调服务,用于管理大型分布式系统中的数据。它由Apache软件基金会提供,最初是Hadoop的一个子项目,但后来发展成为一个独立的顶级项目。ZooKeeper提供的一致性协调服务对于构建分布式应用和服务非常重要,特别是在需要精确的领导选举、配置管理、命名服务、分布式同步和提供分布式锁等功能时。

SmartSi 1544

docker的基本操作

2、查看所有状态容器——docker ps -a run指令 运行①**检测**本地有没有该镜像(没有的话直接到docker hub上下载)②create(将镜像创建为容器)+ start 将创建好的容器运行起来 工作流程docker client可以是多种形式,比如"docker"命令工具所在的终端 二、docker 镜像操作 1、搜索镜像(公共仓库)——docker search 默认是在公共仓库找,如果有私有仓库,会在私有仓库找 2、下载镜像——docker pu

weixin_64015933的博客 3967

Vue3 + uniapp 踩坑:iOS 真机调试一直报错Maximum call stack size exceeded,和(in promise)MiniProgramError err的解决方法

不是你写错代码,是微信开发工具和 iOS 真机调试的兼容问题。开个空项目都报错,勾个设置就没问题,不是你,是工具的锅。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1269

大厂面经:大疆嵌入式面试题及参考答案(4万字长文:持续更新)

目录 Linux 系统调用的过程,中间发生了什么? 表格总结 Linux 中断流程,谈谈你对中断上下文的理解 中断流程 中断上下文理解 Linuxschedule()函数的原理和调用的时机 schedule()函数原理 调用时机 页表实现机制,分页的缺点? 页表机制 分页的缺点 介绍操作系统的多级反馈调度策略,时间片轮转,在项目中如何指定优先级来调度进程完成快速响应(nice命令) 多级反馈队列调度 时间片轮转 使用nice命令 聊内存分配,进程内存分配,段页式存

大模型大数据攻城狮的专栏 4172

Docker的基本组成

DuckerDucker的基本组成什么是Ducker镜像多个镜像什么是Ducker容器 Ducker的基本组成 Ducker Client客户端 Ducker Daemon 守护进程 Ducker Image 镜像 Ducker Container 容器 Ducker Registry 仓库 Ducker客户端将命令发送给守护进程,守护进程将结果传给客户端,通过客户端来查看命令运行的结果。 什...

狂风的博客 2338

yolov26改进 | Neck/颈部创新篇 | 独创HFPN利用分层特征融合块HFFB模块融合多层次特征改进yolov26(全网独家创新)

本文提出了一种创新的分层特征融合模块HFFB(Hierarchical Feature Fusion Block)来改进YOLOv26的neck部分,构建了名为HFPN的新型特征金字塔网络。该模块通过三分支结构融合局部特征(CNN提取)、全局特征(Swin Transformer提取)和中间特征,并包含空间注意力(SA)、通道注意力(CA)和残差反向MLP(IRMLP)等组件来优化特征融合效果。实验表明,该方法能针对不同尺度目标(大/中/小)进行自适应检测,可根据具体数据集需求选择不同配置。文章详细提供了核

Snu77的博客 486

Docker从入门到精通——Docker的基本组成

Docker安装前言Docker的基本组成镜像容器仓库镜像 容器 仓库 他们之间的关系 前言 在上一篇博客我们简要介绍了一下Docker以及我们为什么需要学习Docker。感兴趣的话可以浏览一下Docker概述 在进行Docker安装之前我们需要了解一下Docker由哪几部分组成,各个部分之间有什么关联,最后在进行Docker的安装。 Docker的基本组成 Docker主要由三部分组成 镜像、容器、仓库。 镜像 Docker镜像可以看做一个文件系统,镜像提供了容器运行所需要的程序、库资源、配置等等。这

理想主义的花最终会盛开在浪漫主义的土壤里,我的热情永远不会熄灭在现实的平凡之中,我们终将上岸,阳光万里。 7090

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

docker基本介绍

docker是一个开源的容器平台,用于开发、交付和部署 运行应用程序简单来说 也就是docke他允许开发者将自己的操作环境以及依赖关系打包成一个容器,移动到其他机器上可以供其他人使用,还可以打包成镜像,上传到网络,如果想使用可以随时拉下来。虚拟化: 就是将多个相同的物理硬件或软件、虚拟成逻辑的一个整体从而提高资源的利用率并打破物理设备不可分割的情况容器:将应用程序包含运行环境整体打包成一个标准的应用单元实现应用的交付和部署容器技术: 就是一种应用程序打包技术。

weixin_61255403的博客 1375

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

[Docker] 2 Docker 基本概念

Docker 基本概念

qq_24907431的博客 1651

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Docker学习笔记(一):入门篇,Docker概述、基本组成等,对Docker有一个初步的认识

本文进行了Docker概述,介绍其历史、优势、作用,以及基本组成。通过此,相信大家对Docker有了一个初步的认识。

积累,沉淀,温故而知新 1585

介绍 Docker 的基本概念和优势V2.0

每个Docker容器都包含了应用程序及其依赖项,因此它们是自包含的。这意味着每个容器都可以独立运行,而不需要依赖于其他容器或系统级的环境。这种自包含性使得应用程序的部署和管理更加简单和可靠,同时也提高了应用程序的可维护性和可测试性。每个Docker容器都在主机操作系统上运行,但它们被隔离在自己的进程和文件系统中,因此它们不会互相干扰。这种隔离性使得每个容器都可以拥有自己的网络、存储和进程空间,从而提高了应用程序的安全性和稳定性。Docker提供了一组简单的命令和API,用于管理和操作容器。

华为奋斗者精神 2800

2.Docker基本介绍以及环境安装

1Docker容器 1.1安装Docker 环境下载 下载关于Docker的依赖环境 yum -y install yum-utils device-mapper-persistent-data lvm2 设置一下下载的Docker的镜像 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 安装Docker yum makacache fast yum

XiaoCai 1585

Docker基本介绍

一简介。 Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。 二Docker与OS。 内核支持: Docker需要内核支持,3.10+。 Docker进程: '/usr/bin/docker'既是server端也是client docker进程:/usr/bin/docker daemon --storage-driver=overlay -H fd:// docker不制定dameon参数时作为客户端 dock...

kwdecsdn的博客 5656

docker学习文档

在部署实操完后,对操作过程中涉及到的内容进行梳理,方便后续回顾

qq_45511700的博客 1084

Docker 介绍以及基本指令

在Docker中有服务端与客户端的概念(也就是常说的C\S架构),有三大基本组件:Docker镜像(Docker image)、Docker仓库(Docker registry)、Docker容器(Docker container).

2302_77518847的博客 1674
上一篇: 【Docker学习总结】1.Docker简介
下一篇: 【Docker学习总结】3.Docker 容器相关技术简介
Rita楠神
博客等级 码龄9年 27粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值