后端学习 - Docker

news2024/9/21 12:34:43

文章目录

  • 基本概念
    • 三个核心概念:镜像、容器、仓库
    • 联合文件系统 UnionFS
    • 常用命令
    • Docker File

基本概念

  • 一次配置,处处使用
  • 运行在同一宿主机上的容器是相互隔离的,各自拥有独立的文件系统
  • 容器模型和虚拟机模型的主要区别
    • 相较于虚拟机而言,容器虚拟化是更轻量级的,Docker 是容器虚拟化的一种实现
    • 每个虚拟机都依赖于专用的操作系统;容器不会独占操作系统,运行在相同宿主机上的容器共享一个操作系统
    • 虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且没有进行硬件虚拟

在这里插入图片描述

三个核心概念:镜像、容器、仓库

  • 镜像:类比 Java 类
    • 镜像的基础是联合文件系统
    • 操作系统分为内核和用户空间,对于 Linux 而言,内核启动后,会挂载 root 文件系统为其提供用户空间支持,而 Docker 镜像就相当于是一个 root 文件系统
    • Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)
    • 镜像不包含内核,容器共享所在主机的内核
  • 容器:类比 Java 对象
    • 容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间
    • 因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间
  • 仓库:存放镜像

在这里插入图片描述

悬虚镜像

  • 名称和版本显示为 :
  • 出现的原因是,构建新的镜像时,新镜像和原镜像名和版本重复
  • 移除悬虚镜像的命令 docker image prune

联合文件系统 UnionFS

  • 是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加
  • 镜像并非是像一个 ISO 那样的打包文件,镜像只是一个虚拟的概念,实际并非由一个文件组成,而是由多层文件系统联合组成
  • 联合文件系统是 Docker 镜像的基础,镜像可以通过分层来进行继承,基于基础镜像(没有父镜像的镜像),可以制作各种具体的应用镜像
  • 不同 Docker 容器可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率
  • 镜像层是只读的,容器层是可写的,容器启动时创建容器层(或者说,前一层是后一层的基础,每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层)
  • 在构建镜像的时候,每一层尽量只包含该层需要添加的东西,任何额外的东西应该在该层构建结束前清理掉

在这里插入图片描述

常用命令

docker system df  # 概览
docker images  # 查看本地镜像
docker pull [IMAGE]  # 从远程库拉取镜像
docker search [IMAGE]  # 从远程库搜索镜像
docker run [IMAGE]
#	-d: 后台运行容器(守护式)
#	-it: 交互模式启动容器
#	-P/p: 随机端口映射/指定端口映射
#	--name: 命名

ctrl+p+q  # 从容器退出,不终止容器
docker exec -it [CONTAINER ID] [ARGS]  # 返回运行中的容器
docker attach [CONTAINER ID]  # 返回运行中的容器
举例:返回正在运行CentOS的容器
docker exec -it 95dc01c22d9a /bin/bash
docker attach 95dc01c22d9a
区别:
exec 在容器打开了新的终端,exit 不会导致容器停止
attach 直接进入容器的终端,不会启动新的进程,exit 会导致容器停止

docker ps  # 查看运行容器
docker start/restart/stop/kill/rm [CONTAINER(ID)]  # 启动/重启/停止/强制停止/删除 容器
docker cp [CONTAINER ID: CONTAINER PATH] [SERVER PATH]  # 从容器中拷贝文件到主机
docker export [CONTAINER ID] > [PATH]  # 导出容器为.tar镜像文件
cat [PATH] | docker import - [USER]/[IMAGE]:[VERSION]  # 从.tar导入镜像

docker commit [...] [CONTAINER ID] [REPOSITORY]  # 将容器提交到本地镜像库
  • docker commit 的问题
    • 任何修改的结果仅仅是在当前层进行标记、添加、修改,而不会改动上一层
    • 如果使用 docker commit 制作或修改镜像,每一次修改都会让镜像更加臃肿一次,所删除的上一层的东西并不会丢失,即使根本无法访问到
    • 使用 docker commit 意味着所有对镜像的操作都是黑箱操作,生成的镜像也被称为 黑箱镜像,换句话说,就是除了制作镜像的人知道执行过什么命令、怎么生成的镜像,别人根本无从得知

在这里插入图片描述
在这里插入图片描述

Docker File

  • 官方文档
  • 最主要的用途是指导 Docker 进行应用的容器化(创建一个包含当前应用的镜像
  • 大部分指令都会创建一层新的镜像并进行提交
    在这里插入图片描述
FROM [基础镜像]  # 首行,指定基础镜像
RUN [执行命令]  # build 时执行的命令
EXPOSE [端口号]  # 暴露端口号
WORKDIR [工作目录]  # 设置工作目录,不会创建新镜像层
ENV [K] [V]  # 配置环境变量
COPY [宿主机文件地址] [容器文件地址]  # 将宿主机文件拷贝到容器
ADD [宿主机文件地址] [容器文件地址]  # 将宿主机文件拷贝到容器,并自动解压.tar
CMD [执行命令]  # 容器启动后执行的命令
			  # 如果有多个,只有最后一个生效
			  # 会被 docker run 之后的参数替换
			  # 如果同时存在 ENTRYPOINT,则只作为 ENTRYPOINT 的参数
ENTRYPOINT [执行命令]  # 容器启动后执行的命令

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Pytorch项目实战】之生成式网络:编码器-解码器、自编码器AE、变分自编码器VAE、生成式对抗网络GAN

文章目录生成式网络 - 生成合成图像算法一:编码器-解码器算法二:自编码器(Auto-Encoder,AE)算法三:变分自编码器(Variational Auto Encoder,VAE)算法四:生成式…

九型人格是什么?

九型人格是什么? 九型人格学(Enneagram/Ninehouse)是一个有2000多年历史的古老学问,它按照人们习惯性的思维模式,情绪反应和行为习惯等性格特质,将人的性格分为九种,又被称为九柱图,起源于中亚西亚地区,和中国的八卦图有点像,近代的九型是由六十年代智利的一位心理学…

计算机组成原理 | 第四章:存储器 | 存储器与CPU连接 | 存储器的校验 | Cache容量计算

文章目录📚概述🐇存储器分类🐇存储器的层次结构🥕原理🥕主存速度慢的原因🥕存储器三个主要特征的关系🥕缓存-主存层次和主存-辅存层次⭐️📚主存储器🐇概述🥕…

【opencv】Haar分类器及Adaboost算法人脸识别理论讲解

提到opencv,就不得不提其图像识别能力,最近旷世开源的YoloX项目兴起,作为目前Yolo系列中的最强者,本人对其也很感兴趣,但是完全没用机器学习和计算机视觉的基础,知其然,不知其所以然,于是想稍稍入坑一下opencv图像识别,了解一下相关算法,(说不定以后毕设会用到呢)。…

磨金石教育影视干货分享|朋友亲身经历—给新人剪辑师的三个建议

大学的时候有一个同学很喜欢视频剪辑。平时没事就蹲在电脑前,下载一些素材,自学剪辑软件,慢慢的搞一些创意剪辑。那时候自媒体短视频已经很火爆,这位同学剪辑的视频,不管质量如何就往上面发。一开始我们对于新事物的认…

Java---微服务---分布式搜索引擎elasticsearch(2)

分布式搜索引擎elasticsearch(2)1.DSL查询文档1.1.DSL查询分类1.2.全文检索查询1.2.1.使用场景1.2.2.基本语法1.2.3.示例1.2.4.总结1.3.精准查询1.3.1.term查询1.3.2.range查询1.3.3.总结1.4.地理坐标查询1.4.1.矩形范围查询1.4.2.附近查询1.5.复合查询1…

SpringBoot+Vue项目学生读书笔记共享平台

文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏…

一起自学SLAM算法:10.3 机器学习与SLAM

连载文章,长期更新,欢迎关注: 前面已经分析过的8种SLAM算法案例(Gmapping、Cartographer、LOAM、ORB-SLAM2、LSD-SLAM、SVO、RTABMAP和VINS)都可以称为传统方法,因为这些算法都是在人为精心设计的特定规则下…

电子技术——MOS放大器基础

电子技术——MOS放大器基础 我们已经学过MOS可以当做一个压控流源,使用栅极电压 vGSv_{GS}vGS​ 控制漏极电流 iDi_DiD​ 。尽管两个量的关系不是线性的,稍后我们将会介绍偏置在线性区的工作方法。 构建压控压源放大器 现在,我们有了一个压…

【Java|golang】1664. 生成平衡数组的方案数---奇数前缀和 + 偶数前缀和

给你一个整数数组 nums 。你需要选择 恰好 一个下标(下标从 0 开始)并删除对应的元素。请注意剩下元素的下标可能会因为删除操作而发生改变。 比方说,如果 nums [6,1,7,4,1] ,那么: 选择删除下标 1 ,剩下…

[JAVA安全]JACKSON反序列化

前言 ackson是一个开源的Java序列化和反序列化工具&#xff0c;可以将Java对象序列化为XML或JSON格式的字符串&#xff0c;以及将XML或JSON格式的字符串反序列化为Java对象。 依赖 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifact…

中国省际铁路通行时间数据

一、数据简介 本数据来自南京大学长江产业经济研究院《全国统一大市场下的省际铁路交通研究报告》的附录部分。中国的铁路&#xff08;高铁&#xff09;建设取得了辉煌成果。但受铁路时刻众多、历史数据不容易搜集整理的限制&#xff0c;学术与政策研究者一直无法对铁路建设的时…

三、JDBC详解

教程相关资料&#xff1a;https://www.aliyundrive.com/s/wMiqbd4Zws6 1&#xff0c;JDBC概述 在开发中我们使用的是java语言&#xff0c;那么势必要通过java语言操作数据库中的数据。这就是接下来要学习的JDBC。 1.1 JDBC概念 JDBC 就是使用Java语言操作关系型数据库的一套…

Nacos 配置中心 服务端推送变更源码讲解

目录 1. 配置引起变更的两种方式 1.1 后台管理直接操作 1.2 NacosClient 调用 RPC 接口 2. 变更事件处理 AsyncNotifyService 2.1 HTTP 任务 2.2 RPC任务 2.3 NacosServer 其他节点接收到消息后如何处理 3. 客户端推送实现&#xff1a;DumpService.dump 接着上一篇 Nac…

1601_读Dennis M. Ritchie and Ken Thompson的The UNIX TimeSharing System_Unix分时复用系统

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 很久之前就闻听了UNIX的大名&#xff0c;也看过很多相关的故事类文章。其中最让我印象深刻的莫过于Ken发明UNIX的故事以及这个系统对于Linux以及GNU的OS的影响&…

Linux操作系统之线程同步

文章目录一、线程的实现&#xff1a;用户级、内核级、组合二、线程的同步&#xff08;通讯&#xff09;&#xff1a;信号量&#xff0c;互斥锁&#xff0c;条件变量&#xff0c;读写锁1&#xff09;信号量2&#xff09;互斥锁操作&#xff1a;加锁&#xff0c;解锁。3&#xff…

浮躁的当下或许我们更加需要一颗平常心

科技的迅速发展&#xff0c;已经融入我们的生活&#xff1b;曾经的慢生活慢节奏早已离我们远去&#xff0c;取而代之的是伴随科技齿轮快速运转的生活&#xff0c;快节奏更是科技时代下人们普遍生活的真实写照。 然而&#xff0c;科技虽然带给了我们生活的极大的便利&#xff0…

php伪协议

目录 一、伪协议介绍 1、php://协议 2、php://filter伪协议 3.php://input&#xff08;读取POST数据&#xff09; 4、file伪协议 5、phar://伪协议(读取压缩包文件内容) 6、压缩文件伪协议 6.1.zip://[压缩文件绝对路径]%23压缩文件内的子文件名 6.2.compress.bzip2://…

Mybatis 的输出结果封装小细节

resultType 属性可以指定结果集的类型&#xff0c;它支持基本类型和实体类类型。我们在前面的 CRUD 案例中已经对此属性进行过应用了。需要注意的是&#xff0c;它和 parameterType 一样&#xff0c;如果注册过类型别名的&#xff0c;可以直接使用别名。没有注册过的必须使用全…

Markdown基础语法

文章目录Markdown基础语法一、标题使用&#xff1a;2、二级标题3、一次类推二、字体三、引用四、分割线五、插入图片六、超链接七、列表1、有序列表2、无序列表八、表格九、代码十、添加目录九、代码十、添加目录Markdown基础语法 一、标题使用&#xff1a; 格式&#xff1a;…