Docker的基本组成部分

2024-05-13 12:18
文章标签 docker 基本 组成部分

本文主要是介绍Docker的基本组成部分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Docker Client 客户端
  • Docker是C/S架构的程序,docker的客户端向服务器端(也就是Docker的守护进程)发出请求,守护进程处理完所有的工作并返回结果;docker客户端向服务器端的访问既可以在本地也可以通过远程来访问;
        
      通过docker客户端执行各种命令,客户端会将这些命令发送给守护进程,守护进程执行的结果还会传回给客户端,使我们可以通过客户端来查看命令运行的结果

Docker Daemon 守护进程
Docker Image 镜像             镜像是docker容器的基石,容器基于镜像启动和运行,镜像好比容器的源代码,保存了启动容器的各种条件;接下来我们来深层理解一下docker的镜像:
  • docker是一个层叠的只读文件系统,它的最低端是一个文件引导系统(bootfs),很像典型的linux引导文件系统;
  • docker用户几乎永远不会和引导文件有交互,实际上当一个容器启动后,它将被移动到内存中,而引导文件系统将会被卸载;
  • docker镜像的第二层是rootfs文件系统,它位于系统文件引导层之上;root文件系统可以是一种或者多种的操作系统,如ubuntu或centos,在传统的Linux引导过程中,root文件系统会最先以只读的方式被加载,当引导结束并完成了完整性检查后,它才会切换为读写模式;在docker里root文件系统永远只能是只读状态,并且docker引用联合加载技术,又会在root文件系统之上加载更多的只读文件系统;
    联合加载指的是,一次同时加载多个文件系统,从外面看起来只能是一个文件系统;
        
       联合加载会将各层文件系统叠加到一起,这样最终的文件系统会包含所有的底层文件目录-----docker称这样的系统为镜像

Docker Container 容器
  • 容器通过镜像来启动,docker的容器是docker执行单元,容器中可以运行客户的一个或者多个进程,如果说镜像是docker生命周期中的构建和打包阶段,那么容器就是启动和执行阶段;
  • 那么容器是怎么通过镜像启动的呢?
    • 当一个容器启动时,docker会在该对象的最顶层加载一个读写文件系统,也就是一个可写的文件层,我们在docker中运行的程序就是在这个层中进行执行的;当docker第一次启动一个容器时,初始的读写层是空的,当文件系统发生变化时,这些变化都会应用到这一层上,比如:如果想修改一个文件,这个文件首先会从该读写层下面的只读层复制到该读写层,该文件的只读版本依然存在,但是已经被该读写层中的该文件副本所隐藏,这就是docker中的一个重要的技术写时复制,每个 只读镜像层都是只读的,并且以后永远都不会变化;当创建一个新容器时,docker会构建出一个镜像栈,就像图中所表现的,在栈的最顶层添加可写层,这个读写层加上下面的镜像层以及一些配置数据就构成了一个容器;容器的这种特点,加上镜像分层的框架使我们可以快速的构建镜像,并运行包含我们自己的应用程序和服务的容器
        
Docker Registry 仓库
  • docker用仓库来保存用户构建的对象,分为公有和私有,Docker公司自己提供了一个公有的,叫Docker Hub。
      





 

20190508202905879.png (18.69 KB, 下载次数: 3)

 

20190508202905879.png

这篇关于Docker的基本组成部分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/985682

相关文章

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

C 语言的基本数据类型

C 语言的基本数据类型 注:本文面向 C 语言初学者,如果你是熟手,那就不用看了。 有人问我,char、short、int、long、float、double 等这些关键字到底是什么意思,如果说他们是数据类型的话,那么为啥有这么多数据类型呢? 如果写了一句: int a; 那么执行的时候在内存中会有什么变化呢? 橡皮泥大家都玩过吧,一般你买橡皮泥的时候,店家会赠送一些模板。 上

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

禅道Docker安装包发布

禅道Docker安装包发布 大家好, 禅道Docker安装包发布。 一、下载地址 禅道开源版:   /dl/zentao/docker/docker_zentao.zip  备用下载地址:https://download.csdn.net/download/u013490585/16271485 数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_P

Java 多线程的基本方式

Java 多线程的基本方式 基础实现两种方式: 通过实现Callable 接口方式(可得到返回值):

Java基础回顾系列-第一天-基本语法

基本语法 Java基础回顾系列-第一天-基本语法基础常识人机交互方式常用的DOS命令什么是计算机语言(编程语言) Java语言简介Java程序运行机制Java虚拟机(Java Virtual Machine)垃圾收集机制(Garbage Collection) Java语言的特点面向对象健壮性跨平台性 编写第一个Java程序什么是JDK, JRE下载及安装 JDK配置环境变量 pathHe

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群

828华为云征文|华为云Flexus X实例docker部署rancher并构建k8s集群 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Nginx等服务的需求,一定不要错过这个机会。赶紧去看看吧! 什么是华为云Flexus X实例 华为云Flexus X实例云服务是新一代开箱即用、体

docker-compose安装和简单使用

本文介绍docker-compose的安装和使用 新版docker已经默认安装了docker-compose 可以使用docker-compose -v 查看docker-compose版本 如果没有的话可以使用以下命令直接安装 sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-c