docker (镜像分层、阿里云镜像推送/拉去)-day02

一、镜像概念

Docker 镜像是 Docker 容器的基础,它提供了一种可重复使用的、跨平台的部署方式,使得应用程序的部署和运行变得简单和高效。

把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),打包好的运行环境就是image镜像文件。

 二、分层镜像

2.1 镜像的底层原理(联合文件系统)

Docker 镜像的底层原理是联合文件系统(UnionFS)。联合文件系统是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层一层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。

Docker 镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是联合文件系统。在 Docker 镜像中,最底层是引导文件系统(bootfs),它主要包含引导加载器和内核。当引导加载完成之后,整个内核就都在内存中了,此时内存使用权已由 bootfs 转交给内核,此时系统也会卸载 bootfs。

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

联合文件系统使得 Docker 镜像可以分层进行继承,基于基础镜像,可以制作各种具体的应用镜像。这种分层的好处是共享资源、方便复制迁移,从而能够提高效率,减少空间占用,方便维护更新。

2.2 为什么docker镜像使用分层结构

Docker镜像层都是只读的,容器层是可写的。当容器启动时,一个新的可写层被加载到镜像的顶部。 这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

所有对容器的改动 。无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。
 

  三、docker镜像commit操作案例(重点)

 由此看出docker镜像分层,支持通过现有的镜像,生成新的镜像,在原有基础上扩展。

docker commit 提交容器副本使之成为一个新的镜像:

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]

示范:
docker commit -m="vim install ok" -a="syf" f49f1addd673  syf/mybuntun1.0

 如图:ubuntu 容器中,没有vim 命令

[root@iZuf6hxabqikytnrumsi4gZ ~]# docker run -it --name myubuntu ubuntu /bin/bash
root@f49f1addd673:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@f49f1addd673:/# vim a.txt
bash: vim: command not found

安装vim 

更新ubuntu 包管理工具
apt-get update
安装vim
apt-get -y install vim

 commit 我们安装vim 的ubuntu镜像

[root@iZuf6hxabqikytnrumsi4gZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS         PORTS     NAMES
f49f1addd673   ubuntu    "/bin/bash"   44 minutes ago   Up 5 minutes             myubuntu
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker commit -m="vim install ok" -a="syf" f49f1addd673  syf/mybuntun1.0

查看结果

[root@iZuf6hxabqikytnrumsi4gZ ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED              SIZE
syf/mybuntun1.0   latest    5166bfe283d8   About a minute ago   189MB
tomcat            latest    fb5657adc892   23 months ago        680MB
redis             latest    7614ae9453d1   23 months ago        113MB
ubuntu            latest    ba6acccedd29   2 years ago          72.8MB

 四、阿里云镜像仓库创建

4.1今日阿里云,左上角菜单栏鼠标放上去展开,搜索容器镜像服务

 4.2创建个人实例

4.3   创建命名空间

4.4在创建好的空间下,新建仓库 

4.5 选择本地仓库

最后阿里云会生成一堆命令,copy使用就行。

五、阿里云镜像推送和拉去(重点)

5.1 先登录:docker login --username=测试账号 registry.cn-shanghai.aliyuncs.com

[root@iZuf6hxabqikytnrumsi4gZ ~]# docker login --username=测试账号 registry.cn-shanghai.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

5.2  打个tag

docker tag [ImageId] registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:[镜像版本号]

[root@iZuf6hxabqikytnrumsi4gZ ~]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED         SIZE
syf/mybuntun1.0   latest    5166bfe283d8   2 hours ago     189MB
tomcat            latest    fb5657adc892   23 months ago   680MB
redis             latest    7614ae9453d1   23 months ago   113MB
ubuntu            latest    ba6acccedd29   2 years ago     72.8MB
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker tag 5166bfe283d8 registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:1.0

 5.3  推送到阿里云仓库

docker push registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:[镜像版本号]

[root@iZuf6hxabqikytnrumsi4gZ ~]# docker push registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:1.0

5.4从阿里云上拉去镜像 

docker pull registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:[镜像版本号]

[root@iZuf6hxabqikytnrumsi4gZ ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
tomcat       latest    fb5657adc892   23 months ago   680MB
redis        latest    7614ae9453d1   23 months ago   113MB
ubuntu       latest    ba6acccedd29   2 years ago     72.8MB
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker pull registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:1.0
1.0: Pulling from syf_resposity/myubuntu
7b1a6ab2e44d: Already exists 
1ec782c8d5e1: Pull complete 
Digest: sha256:c6d759583840a80c82c0704858b8c0f84e1daf5883db9521446f6cc8c1cc9ec0
Status: Downloaded newer image for registry.cn-shanghai.aliyuncs.com/syf_resposity/myubuntu:1.0
registry.cn-shanghai.aliyuncs.com/ceshi_resposity/myubuntu:1.0
[root@iZuf6hxabqikytnrumsi4gZ ~]# docker images
REPOSITORY                                                 TAG       IMAGE ID       CREATED         SIZE
registry.cn-shanghai.aliyuncs.com/syf_resposity/myubuntu   1.0       5166bfe283d8   2 hours ago     189MB
tomcat                                                     latest    fb5657adc892   23 months ago   680MB
redis                                                      latest    7614ae9453d1   23 months ago   113MB
ubuntu                                                     latest    ba6acccedd29   2 years ago     72.8MB
[root@iZuf6hxabqikytnrumsi4gZ ~]# 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ethtool工具添加并验证网口

Filesystem Packages->console->network->ethtool 命令描述: ethtool 是用于查询及设置网卡参数的命令。 使用命令: ethtool ethx //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0、eth1等等 ethtool –…

利用 LD_PRELOAD劫持动态链接库,绕过 disable_function

目录 LD_PRELOAD 简介 程序的链接 动态链接库的搜索路径搜索的先后顺序: 利用LD_PRELOAD 简单的劫持 执行id命令 反弹shell 引申至 PHP 绕过disable_function 方法1:使用蚁剑的扩展工具绕过disable_function 方法2:利用 mail 函数…

推荐几款免费的智能AI伪原创工具

在当今信息快速传播的时代,创作者们常常为了在激烈的竞争中脱颖而出而苦苦挣扎,而其中的一项挑战就是创作出独具创意和独特性的内容。然而,时间有限的现实让很多人望而却步。在这个背景下,免费在线伪原创工具成为了创作者们的得力…

Windows核心编程 HOOK

目录 HOOK概述 HOOK API SetWindowsHookExA 函数(winuser.h) UnhookWindowsHookEx 函数(winuser.h) NextHookEx 函数(winuser.h) 局部钩子 全局钩子 为什么全局钩子需要用dll作为过程函数? HOOK概述 本质:Windows消系统的消息过滤器。 全局钩子…

还在愁没项目?来瞧瞧这些另类赚钱方式

客套话不多说,直接上案例,这些都是正儿八经的真实案例,相信大家通过这些人的案例自然能摸索整理出一套属于自己的项目!摸索不出,也多多少少能受一些灵感上的启发。 小A是长期混B站的,大家称他为“B站搬运工…

直流负载与交流负载的作用

直流负载和交流负载都是用来消耗电能的装置或设备,它们的作用是将电能转化为其他形式的能量,以满足特定的需求。直流负载主要用于直流电路中,例如直流电源、电池等。它们可以将直流电能转化为热能、光能、机械能等。直流负载在很多领域都有广…

【BSP开发经验】uboot gpl框架开发经验

文章目录 uboot_gpl 隔离 的目的uboot_gpl 隔离基本原理uboot_gpl 基本框架uboot_gpl 适配新平台的方式uboot 添加hikcmd功能适配调试步骤 链接脚本语法链接脚本的格式链接脚本的简单示例设置入口点(entry)设置输出文件名处理目标文件格式的命令uboot_gp…

whatsapp信息群发脚本开发!

WhatsApp 作为全球广受欢迎的通讯应用,在我们的日常生活中扮演着重要角色,有时候,我们需要向大量联系人发送消息,比如营销推广、活动通知等。 一个个手动发送消息?那简直太落后了!今天,我们将探讨如何利用脚本开发实…

web:catcat-new(文件包含漏洞、flask_session伪造)

前提知识 /etc/passwd 该文件储存了该Linux系统中所有用户的一些基本信息,只有root权限才可以修改。其具体格式为 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell(以冒号作为分隔符) /proc/self proc是一个伪文件系统…

项目终验的exce表格缩放,排版等经常使用

xxx个项目的验收资料 1.申请表等等很多信息 需求:放在一页内等办法 上述文档,在excel表格打印预览中都是在两页中,很难调节,这个时候采用wps专业版本即可。 wps排版经常使用的功能如下: 经常使用的是 1.把所有列打印…

Apache Doris 整合 FLINK CDC 、Paimon 构建实时湖仓一体的联邦查询入门

1.概览 多源数据目录(Multi-Catalog)功能,旨在能够更方便对接外部数据目录,以增强Doris的数据湖分析和联邦数据查询能力。 在之前的 Doris 版本中,用户数据只有两个层级:Database 和 Table。当我们需要连…

网络视频怎么更改IP?使用静态IP更改地址有哪些好处?

随着互联网的普及,越来越多的人开始使用网络视频。有时候,我们可能会遇到需要更改网络视频的IP地址的情况。那么,如何更改IP地址呢?使用静态IP更改地址又有哪些好处呢? 首先,我们来了解一下什么是静态IP地址…

外贸行业多人文件共享云盘推荐

Zoho WorkDrive外贸行业解决方案致力于为各类外贸企业客户提供数字化转型的支持,全面覆盖市场调研、客户服务与管理、产品设计与制作、采购、供应商管理、财务对账、单证报关、仓储管理以及物流运输等环节。Zoho WorkDrive企业网盘提供文件资料在线存储、共享、同步…

C/C++转义符:\x

文章目录 什么是转义符使用"\x"定义char数组宏定义中的\ 什么是转义符 在C语言中,转义符用于将一些特殊字符表示为单个字符,常用的转义符有: \\:反斜杠符号\:单引号\":双引号\a&#xff1…

动态规划--使用最小花费爬楼梯

题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 示例…

如何有效避免七个常见的身份验证漏洞

引言 随着网络威胁的数量不断增加,了解学习可能会危及到客户在线身份的常见身份验证漏洞就显得格外重要。如果需要在网上满足客户的需求,并使用传统的身份验证机制时,就要对身份验证漏洞保持警惕。 只有了解了这些漏洞,才可以更…

vue3随机生成8位字母+数字

// 随机生成8位字母数字 export const autoPassword: any () > {// console.log("自动生成");//可获取的字符串const chars ABCDEFGHIJKLMNOPQRSTUVWSYZabcdefghijklmnopqrstuvwsyz0123456789;const list [];//通过随机获取八个字符串的索引下标for (let i 0;…

谁可以从使用 Amazon Lightsail 进行 VPS 托管中受益?

文章作者:Libai 介绍 在当今数字化的环境中,拥有可靠和高效的托管解决方案对于企业和个人来说至关重要。由于其灵活性、可扩展性和成本效益,虚拟专用服务器(VPS)托管已经在市场上获得了巨大的流行。Amazon Lightsail …

样品实验Fortegra202环氧树脂增韧剂TDS说明书

样品实验Fortegra202环氧树脂增韧剂TDS说明书 150克/瓶

关于pyqt5与moviepy到打包的坑点

1,pyqt5 关于pyqt5 designer.exe 的使用主要就是了解pyqt5右侧菜单栏的功能使用 打包后的文件,需要继承改类,进行图形指令交互 关于pyqt5,要了解信号,和槽点的相互关系。 我在pyqt5中使用moviepy的时候,需要用到异步…