容器技术2-镜像与容器储存

目录

一、镜像制作

1、ddocker build

2、docker commit

二、镜像存储

1、公共仓库

2、私有仓库

三、镜像使用

四、容器存储

1、镜像元数据

2、存储驱动

3、数据卷


一、镜像制作

1、ddocker build

基于 Dockerfile 自动构建镜像

其机制为:每一行都会基于上一的中间容器来执行对应的修改命令,然后通过 docker build 提交,经过一次次循环,最终提交成为目标镜像。

Dockerfile 示例:

FROM ubuntu:15.04
COPY . /app
RUN make /app
CMD python /app/app.py

Dockerfile 中的每一行指令(COPY、RUN、CMD)都会生成新的一层,叠加在上一个指令生成的文件系统之上,最后所有镜像层叠加就构成了镜像的文件系统。

2、docker commit

首先使用某一镜像启动容器,进入容器中完成需要的操作,最后在宿主机上执行 docker commit 命令,该命令会将此时的容器打包成一个新的镜像。

二、镜像存储

分为公共仓库和私有仓库

1、公共仓库

面向整个互联网用户,典型的代表为 Docker Hub

2、私有仓库

在一定范围内可访问的镜像仓库,典型的代表为 Harbor,Docker Hub也支持设置私有仓库

三、镜像使用

常用命令 docker pull/push

其他命令操作详细用法参考官方文档:

https://docs.docker.com/engine/reference/commandline/images/

四、容器存储

1、镜像元数据

在 Linux 系统中 Docker 的数据默认存放在/var/lib/docker 中

镜像每一层的 ID 是该文件内容的哈希校验值,作为该层的唯一标识。

2、存储驱动

理想情况下,使用挂载卷来存储高读写的目录,很少将数据直接写入容器的可写层。 但是,总有些特殊需求需要直接写入容器的可写层。这时候就需要存储驱动来作为容器和宿主机之间的媒介。Docker 依靠驱动技术来管理镜像和运行它们的容器间的存储和交互。

根据不同的场景选择合弁的存储驱动,目前 Docker 主要支持 AUFS、BtrFS、Device Mapper、OverlayFS、ZFS 五种存储驱动。

3、数据卷

文件系统的改动都是发生在最上面的可读写层,在容器的生命周期内,它是持续的,包括容器被停止后。但是,当容器被删除后,该数据层也随之被删除了。

Docker 采用数据卷(Volume)的形式向容器提供持久化存储,数据卷是持久化的,不会依赖于容器的生命周期,绑定挂载(Bind Mounts)依赖于主机的目录结构,但数据卷是由 Docker 管理。

Docker 主机上数据卷的挂载方式:

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

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

相关文章

JavaEE-SSM-订单管理-前端实现

前端:订单管理 3.1 回顾 axios.get("路径") .then( response > {}) .catch( error > {})//async 和 await async function() {let response await axios.get("路径") }3.2 环境搭建 3.2.1 创建项目 3.2.2 端口号 80 3.2.3 axios使用…

AnimatedDrawings:让绘图动起来

老样子,先上图片和官网。这个项目是让绘制的动画图片动起来,还能绑定人体的运动进行行为定制。 快速开始 1. 下载代码并进入文件夹,启动一键安装 git clone https://github.com/facebookresearch/AnimatedDrawings.gitcd AnimatedDrawingspip…

mysql InnoDB行记录格式

在介绍索引的文章已经知道。InnoDB的表数据被拆分成不同的数据页上,默认一个数据页大小是16kb,分布在聚簇索引的叶子节点上。被挂在B树上。一条行记录除了要保存每列具体数据值还会有一些标识位信息。另外对于超长数据存储也有特殊处理。 那么具体到一行…

UI设计中的插画运用优势(下)

6. 插画赋予设计以美学价值,更容易被接受 即使所有人都在分析和争论产品的可用性和易用性,大家在对美的追求上,始终保持着一致的态度。一个设计是否具备可取性,是否能够通过甲方、客户和实际用户,是每个设计人都需要面…

【ARMv8M Cortex-M33 系列 7 -- RA4M2 移植 RT-Thread 问题总结】

请阅读【嵌入式开发学习必备专栏 】 文章目录 问题小结栈未对齐 经过几天的调试,成功将rt-thead 移植到 RA4M2(Cortex-M33 核)上,thread 和 shell 命令已经都成功支持。 问题小结 在完成 rt-thread 代码 Makefile 编译系统搭建…

Python之信号量

Python之信号量 什么是信号量 信号量详解 案例 什么是信号量 从某种意义上来说,信号量和线程池很像,他们都会根据你设置的线程上限值来自动帮你管理线程,但是信号量更倾向于‘锁’的概念 信号量是一种并发控制机制,用于限制对共…

VSCode Python Windows环境下创建虚拟环境,隔离每个项目的依赖pip包,推荐使用!

VSCode Python Windows环境下创建虚拟环境 Visual Studio Code 可以隔离不同项目的pip依赖包,防止不同版本的干扰**(推荐使用)** 先在python官网https://www.python.org/downloads/下载需要的python版本(我选择了3.9.8&#xff09…

LeetCode.2765. 最长交替子数组

题目 2765. 最长交替子数组 分析 为了得到数组 nums 中的最长交替子数组的长度,需要分别计算以每个下标结尾的最长交替子数组的长度。为了方便处理,计算过程中需要考虑长度等于 1 的最长交替子数组,再返回结果时判断最长交替子数组的长度…

x-cmd pkg | speedtest-cli - 网络速度测试工具

目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 speedtest-cli 是一个网络速度测试工具,用于测试计算机或服务器与速度测试服务器之间的网络连接速度。 它使用 speedtest.net 测试互联网带宽,可以帮助用户获取网络的上传和下载速度、延迟等参…

【目标检测】YOLOv7算法实现(二):正样本匹配(SimOTA)与损失计算

本系列文章记录本人硕士阶段YOLO系列目标检测算法自学及其代码实现的过程。其中算法具体实现借鉴于ultralytics YOLO源码Github,删减了源码中部分内容,满足个人科研需求。   本篇文章在YOLOv5算法实现的基础上,进一步完成YOLOv7算法的实现。…

记录一次从有道云笔记迁移到语雀笔记

推荐阅读 智能化校园:深入探讨云端管理系统设计与实现(一) 智能化校园:深入探讨云端管理系统设计与实现(二) 1、安装git,python3等准备工作 文章中标注python3,为避免与python2 冲…

Mac上如何设置映射某个网站站点域名的IP

最近某常用的站点换 IP 了,但是 DNS 服务器还没有修改,这就导致无法访问(换 DNS 服务器也不行)。在用了一段时间的 IP 访问之后,还是没好,不知道是 DNS 污染还是咋了,所以最后还是手动改一下吧。…