Docker - 镜像

news2025/1/16 15:54:50

Docker - 镜像

镜像是什么

镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码,运行时,库,环境变量和配置文件。

所有应用,直接打包docker镜像,就可以直接跑起来!

Docker镜像加载原理

UnionFS(联合文件系统)

我们下载的时候看到的一层层就是这个!

UnionsFS(联合文件系统):Union文件系统(UniosFS)是一种分层,轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同的目录挂载到同个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像

特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。

Docker镜像加载原理

docker镜像实际上由一层一层文件系统组成,这种层级的文件系统UnionFS

bootfs(boot file system)主要包含bootloader和kernel,bootloader主要是引导加载kernel,linux刚启动时会加载bootfs文件系统,在Docker系统的最底层是bootfs。这一层与我们典型的linux/unix系统是一样的,包含boot加载器和内核,当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs

rootfs(root file system),在bootfs之上。包含的就是典型linux系统中 /dev, /proc, /bin, /etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。

在这里插入图片描述

对于一个精简的OS,rootfs可以很小,只需要包含最基本的命令,工具和程序库就可以了,因为底层直接用host的kernel,自己只需要提供rootfs就可以了。因此可见对于不同的linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以公用bootfts

虚拟机是分钟级别,容器是秒级!

分层理解

分层的镜像

在这里插入图片描述

commit镜像

docker commit 提交容器成为一个新的副本

# 命令与git原理类似
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

实战测试
# 1、启动一个默认的tomcat
# 2、发现这个默认的tomcat是没有webapps应用,官网的镜像默认webapps下面是没有文件的!
# 3、我们拷贝进去了基本的文件
# 4、将我们操作过的容器通过commit提交为一个镜像!我们以后就使用我们修改过的镜像即可,这就是我们自己的一个修改的镜像

[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND             CREATED         STATUS         PORTS                                       NAMES
448d12d702d2   tomcat    "catalina.sh run"   2 minutes ago   Up 2 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   busy_turing
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker exec -it 448d12d702d2 /bin/bash
root@448d12d702d2:/usr/local/tomcat# ls
bin  BUILDING.txt  conf  CONTRIBUTING.md  lib  LICENSE  logs  native-jni-lib  NOTICE  README.md  RELEASE-NOTES  RUNNING.txt  temp  webapps  webapps.dist  work
root@448d12d702d2:/usr/local/tomcat# cp -r webapps.dist/* webapps/
root@448d12d702d2:/usr/local/tomcat# cd webapps
root@448d12d702d2:/usr/local/tomcat/webapps# ls
docs  examples  host-manager  manager  ROOT
root@448d12d702d2:/usr/local/tomcat/webapps# 
root@448d12d702d2:/usr/local/tomcat/webapps# exit
exit

# 提交新的镜像
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker commit -m="调整webapps" -a="wys" 448d12d702d2 tomcat:1.0
sha256:07e43a4b5b9a1892b4a425aa5b25d31cd3366f7450b939dd62f3f5ca0349d4eb

# 启动新的镜像
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker run -it -d -p 8080:8080 tomcat:1.0
[root@iZ2zeg7mctvft5renx1qvbZ ~]# docker ps
CONTAINER ID   IMAGE        COMMAND             CREATED          STATUS          PORTS                                       NAMES
b1ee55bd7376   tomcat:1.0   "catalina.sh run"   44 seconds ago   Up 43 seconds   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   compassionate_bouman

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

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

相关文章

数据结构与算法(一)数据结构基础

目录 一、绪论1.1 什么是程序 二、算法2.1 定义2.2 特性2.3 算法时间效率2.4 时间复杂度1)大 O 阶推导法:2)举个例子:3)常见的时间复杂度 2.5 空间复杂度1)计算方法2)存储空间 2.6 常见算法的时…

Yolov5 + 界面PyQt5 +.exe文件部署运行

介绍 Yolov5是一种基于深度学习的目标检测算法,PyQt5是一个Python编写的GUI框架,用于创建交互式界面。在部署和运行Yolov5模型时,结合PyQt5可以方便地创建一个用户友好的界面,并将代码打包为.exe文件以供其他人使用。 下面是一个…

虚拟化服务器+华为防火墙+kiwi_syslog访问留痕

一、适用场景 1、大中型企业需要对接入用户的访问进行记录时,以前用3CDaemon时,只能用于小型网络当中,记录的数据量太大时,本例采用破解版的kiwi_syslog。 2、当网监、公安查到有非法访问时,可提供基于五元组的外网访…

在全志XR806上移植st7789屏幕驱动

前言 很高兴有机会参加本次极术社区举办的“「免费试用」搭载安谋科技STAR-MC1的全志XR806 Wi-FiBLE 开发板试用活动”。 去年就对全志的mcu芯片感兴趣了,一直没有机会接触,看到本次极术社区提供的全志wifi BLE开发板试用,就马上参加了。板…

WebGL智慧城市软件项目

WebGL开发智慧城市项目时,需要考虑多个方面,包括技术、隐私、安全和可持续性。以下是一些需要注意的关键问题,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.隐私和数据安全…

6.3二叉树的层序遍历(LC102,LC107-M)

二叉树的层序遍历(LC102): 算法(长度法): 需要借用一个辅助数据结构即队列来实现,队列先进先出,符合一层一层遍历的逻辑,而用栈先进后出适合模拟深度优先遍历也就是递归…

【外部服务对接】对接Firebase支持谷歌、Facebook、苹果等第三方平台用户注册登录

【外部服务对接】对接Firebase支持谷歌、Facebook、苹果等第三方平台登录 背景 因主要做国外尼日的市场,相关的应用的全是国外用户使用,为了方便用户的注册和登录,接入国外的统一平台Firebase,集成使用很方便。 主要步骤 1.注册登录Fireb…

如何提高小红书笔记的互动率

相信有很多新手在运营小红书的时候,可能都会遇到过以下这样的情况: 笔记点赞、收藏数据明明还可以,但评论区却没有人留言?为何大家只给点赞、收藏,却不关注账号? 其实,这背后有很多运营技巧&a…

​做好研发管理的三个条件​

1.制造鼓励创新的环境 要做好研发管理,首先要制造一个鼓励创新、适合研发的环境,必须采取弹性而目标化的管理,不以死板的制度限制员工的创意,必须要求实质的成果。 2.融入行销观念 将行销的观念融入研发中:为使有限的…

xlua游戏热更新(lua访问C#)

CS.UnityEngine静态方法访问unity虚拟机 创建游戏物体 CS.UnityEngine.GameObject(new by lua);静态属性 CS.UnityEngine.GameObject(new by lua); -- 创建 local camera CS.UnityEngine.GameObject.Find(Main Camera); --查找 camera.name Renamed by Lua;访问组件 loca…

通配符匹配

题目链接 通配符匹配 题目描述 注意点 s 仅由小写英文字母组成p 仅由小写英文字母、‘?’ 或 ‘*’ 组成‘?’ 可以匹配任何单个字符‘*’ 可以匹配任意字符序列(包括空字符序列) 解答思路 最初想到的是dfs 剪枝,但是用例超时了参照题…

小型企业如何数字化转型?ZohoCRM助力小企业转型

小型企业数字化之路倍加艰难,其组织规模有限、资源有限,数字化布局或转型,也存在与数字平台匹配度的问题。其实小型企业可以通过CRM客户管理系统实现高效的客户关系管理,进一步提高市场竞争力。 建立高效易用的客户关系管理系统 …

OpenAI重磅推出GPTs,无需编码人人可以自定ChatGPT!

原创 | 文 BFT机器人 在11月7日深夜2点(北京时间),美国旧金山举办了首届开发者大会,该活动由AI领域的知名公司OpenAI主办。尽管这是该公司的首届大会,但其盛大的规模和影响力已将其誉为“AI春晚”。在会议上&#xff…

关于echarts封装组件以及多次更新数据信息加载问题

项目中经常使用到echarts插件&#xff0c;使用时会遇到封装组件的问题&#xff0c;一个组件到底怎么封装才是完善的&#xff1f;仁者见仁智者见智思路不同封装的方式就是不同的。废话不多直接上封装的代码&#xff1a; <template><div :id"id" :style"…

OpenGL_Learn08(坐标系统与3D空间)

目录 1. 概述 2. 局部空间 3. 世界空间 4. 观察空间 5. 剪裁空间 6. 初入3D 7. 3D旋转 8. 多个正方体 9. 观察视角 1. 概述 OpenGL希望在每次顶点着色器运行后&#xff0c;我们可见的所有顶点都为标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说&#x…

两台Linux服务器之间传送文件

两台Linux服务器之间传送文件 将U盘上的数据传送到服务器上 本地U盘 远程服务器地址&#xff1a; 192.168.30.125 传送到data文件夹的下面 scp -r coco2017 s192.168.30.125:/data传送 两台Linux服务器之间传送文件的4种方法

pytorch搭建squeezenet网络的整套工程(升级版)

上一篇当中&#xff0c;使用pytorch搭建了一个squeezenet&#xff0c;效果还行。但是偶然间发现了一个稍微改动的版本&#xff0c;拿来测试一下发现效果会更好&#xff0c;大概网络结构还是没有变&#xff0c;还是如下的第二个版本&#xff1a; 具体看网络结构代码&#xff1a…

进程控制——进程的程序替换

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;题目大解析&#xff08;3&#xff09; 目录 &#x1f449;&#x1f3fb;进程的程序替换概念&#x…

R语言和jsonlite库编写代码示例

R语言和jsonlite库来下载的程序。 r # 导入jsonlite库 library(jsonlite) # 设置代理主机和端口 proxy_host <- "" proxy_port <- # 使用httr库创建一个对象 proxy <- create_proxy(proxy_host, proxy_port) # 使用httr库的GET方法下载网页内容 url <…

输入网址到网页显示,期间发生了什么?(收藏篇)

解析url 首先浏览器做的第一步工作就是要对 URL 进行解析&#xff0c;从而生成发送给 Web 服务器的请求信息。对 URL 进行解析之后&#xff0c;浏览器确定了 Web 服务器和文件名&#xff0c;接下来就是根据这些信息来生成 HTTP 请求消息了。 DNS解析 通过浏览器解析 URL 并…