02Docker镜像

news2024/9/22 15:39:20

Docker基础2(镜像)

一、Docker镜像介绍

1.1 简介

镜像是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。

1.2 UnionFS联合文件系统

UnionFS是一种分层、轻量级、高性能的文件系统。
它支持对文件系统的修改作为一次提交来一层层的叠加;
可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。
Union 文件系统是 Docker 镜像的基础,镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
特性:
一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录

1.3 Docker镜像加载原理

docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。
在这里插入图片描述

(1)bootfs(boot file system)

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

(2)rootfs (root file system)

在bootfs之上,是典型 Linux 系统中的 /dev, /proc, /bin, /etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。
对于一个精简的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序库,因为底层直接用Host的kernel,自己只需要提供 rootfs 就行了。Docker中的centos镜像只有200MB
对于不同的linux发行版, bootfs基本是一致的, rootfs会有差别, 因此不同的发行版可以公用bootfs。

1.4 image的镜像层与容器层

当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。
所有对容器的改动 ,无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。
在这里插入图片描述

1.5 Docker镜像commit操作案例

docker pull下来的centos没有vim命令,安装vim命令后,提交容器获得一个有vim命令的镜像

docker  commit 提交容器副本,使之成为一个新镜像
docker  commit -m="描述信息"  -a="作者"    容器ID  目标镜像名:[标签名]

-bash-4.2# docker commit -m="install vim then commit" -a='wmy'  61ecad0f1d15  wmy/centosvim:1.0
sha256:f6566f303af3643964df66f117f0b042faa5feca85a6a362ac90f0d58fac1d26

-bash-4.2# docker images
REPOSITORY        TAG        IMAGE ID       CREATED         SIZE
wmy/centosvim     1.0        f6566f303af3   6 seconds ago   453MB

mysql             8.0        7484689f290f   4 weeks ago     538MB
centos            7.9.2009   eeb6ee3f44bd   15 months ago   204MB

二、本地镜像发布到阿里云

2.1 流程图

在这里插入图片描述

2.2 镜像生成的方法

(1) 提交容器副本使之成为一个新的镜像
docker commit -m=“install vim then commit” -a=‘wmy’ 容器ID wmy/centosvim:1.0
(2) dockfile build 即Dockerfile文件

2.3 将本地镜像推送到阿里云

登录阿里云网站,选择容器镜像服务,进入个人实例,先创建命名空间,再创建镜像仓库。
创建后,阿里云网站会给出登录、推送镜像、拉取镜像的脚本
在这里插入图片描述

(1)登录
docker login --username=归去也无风雨也无晴回首 registry.cn-hangzhou.aliyuncs.com
(2)推送镜像
docker login --username=归去也无风雨也无晴回首 registry.cn-hangzhou.aliyuncs.com
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/wumy/mycentos:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/wumy/mycentos:[镜像版本号]
(3)拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/wumy/mycentos:[镜像版本号]

2.4 将阿里云镜像下载到本地

docker pull registry.cn-hangzhou.aliyuncs.com/wumy/mycentos:[镜像版本号]

三、本地镜像发布到私有库

Docker Registry是官方提供的工具,可以用于构建私有镜像仓库

(1) 下载Registry
docker pull registry 
docker images
(2) 运行Registry容器,并进行端口映射和容器数据卷挂载
docker run -d -p 5000:5000  -v /zzyyuse/myregistry/:/tmp/registry --privileged=true registry
# 默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调
(3) 准备镜像
准备一个有ifconfig命令的centos镜像
(4)查看私有库上有哪些镜像
 curl -XGET http://192.168.111.162:5000/v2/_catalog
(5)修改要推送到私服上的镜像tag
 docker   tag   镜像:Tag   Host:Port/Repository:Tag
使用命令 docker tag 将zzyyubuntu:1.2 这个镜像修改为192.168.111.162:5000/zzyyub
docker tag  zzyyubuntu:1.2  192.168.111.162:5000/zzyyubuntu:1.2
(6) 修改配置文件使私服支持http,docker默认不允许http方式推送镜像。如不生效,建议重启docker
vim /etc/docker/daemon.json
{
  "registry-mirrors": ["https://aa25jngu.mirror.aliyuncs.com"]
,
  "insecure-registries": ["192.168.111.162:5000"]
}
(7)本地镜像push 到私有库
docker push 192.168.111.162:5000/zzyyubuntu:1.2
(8)查看私服上有哪些镜像
curl -XGET http://192.168.111.162:5000/v2/_catalog
(9)拉去私服上的镜像并运行
docker pull 192.168.111.162:5000/zzyyubuntu:1.2
docker run -it 镜像ID /bin/bash

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

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

相关文章

《Buildozer打包实战指南》第六节 buildozer.spec配置文件中的其他参数

目录 android.permissions android.features android.api android.minapi android.sdk android.ndk android.ndk_api android.private_storage android.ndk_path android.sdk_path android.ant_path android.skip_update android.accept_sdk_license android.a…

【Linux】基础:线程的概念

【Linux】基础:线程的概念 摘要:本文介绍Linux下的线程概念,首先将会线程在系列教材中的定义进行抛出,从常规的操作系统进行理解线程的概念,在具体说明Linux下的进线程的管理与组织方式,以及由于该组织方式…

2022年度笔记本十大热门品牌销量排行榜

近年来,由于大环境的改变,线上教育、线上办公等的需求使得平板电脑出货量逐步提升。同时,5G时代来临,万物互联是未来的趋势,手机由于操作系统和交互上的局限性,笔记本电脑将会扮演更加重要的角色。未来&…

Arduino开发ESP8266连接无线路由器

实现ESP8266连接一个WIFI路由器ESP8266选择多个路由器中信号将强的进行连接源代码如下/* ESP8266模块连接网络实验1、代码段1实现连接无线路由器实验2、代码段2实现esp8266搜索已存在网络中质量较好的并进行连接*/#include <ESP8266WiFi.h> // 提供 Wi-Fi 功能的库#inclu…

监控安防人员入门基础

1、 决定视频流畅程度的是以下哪个属性&#xff1f; A、分辨率 B、率上限 C、帧率 D、编码方式 题解&#xff1a;一幅完整的视频画面为一帧&#xff0c;每秒显示的帧的数目为帧率&#xff0c;帧率越高&#xff0c;视频更流畅。因此答案是&#xff1a;C 2、 关于图像分辨率和…

solr业务域配置

SolrSolr作为一个Java开发的高性能&#xff0c;用于对查询性能进行优化的全文搜索服务器&#xff0c;它的使用需要配置业务域&#xff1a;第一步是添加中文分析器上传中文分析器并解压&#xff0c;复制jar包到solr的lib文件夹下&#xff1a;cp IKAnalyzer2012FF_u1.jar /usr/lo…

FA-PEG-DBCO,DBCO-PEG-Folate,叶酸聚乙二醇环辛炔

●中文名&#xff1a;叶酸聚乙二醇环辛炔&#xff0c;叶酸聚乙二醇二苯基环辛炔&#xff0c;DBCO-PEG-叶酸 ●英文名&#xff1a;FA-PEG-DBCO &#xff0c; Folate-PEG-DBCO&#xff0c;DBCO-PEG- FA&#xff0c;DBCO-PEG-Folate&#xff0c;DBCO-PEG- Folic acid ●外观以及…

使用集简云将UpTimer同步到Notion

使用UpTimer同步到Notion 对于集简云我们应当非常熟悉了&#xff0c;之前讲过很多流程啦~ 利用集简云将Notion数据库更新订阅到Outlook和微信[1] 【干货分享】集简云 2步轻松定制个人RSS阅读器 |高效获取信息[2] 释放双手|自动化NOTION的最佳平台推荐|NOTION同步滴答清单|懒人[…

【人工智能原理自学】高维空间:机器如何面对越来越复杂的问题

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;笔记来自B站UP主Ele实验室的《小白也能听懂的人工智能原理》。 &#x1f514;本文讲解高维空间&#xff1a;机器如何面对越来越复杂的问题&#xff0c;一起卷起来叭&#xff01…

使用TortoiseGit同步项目到GitHub简单教程

1.TortoiseGit简介与安装 TortoiseGit是Git的Windows桌面可视化工具&#xff0c;通过软件的操作来实现git命令的效果&#xff0c;对git小白较友好。TortoiseGit可以通过官网https://tortoisegit.org/下载&#xff0c;下载之后即可按照普通软件的方式进行安装&#xff0c;每一步…

Could not find a version that satisfies the requriement xxx

Could not find a version that satisfies the requriement xxx1. 场景描述2. 解决办法2.1 升级pip2.2 更换镜像源2.3 查询所有安装的模块3.Awakening1. 场景描述 使用python自带的pip安装一些包时&#xff0c;总是会报以下错误 使用yum也会报一些错&#xff0c;反正就是装不上…

Windows10彻底关闭自动更新

文章目录前言无赖步骤关闭自动更新服务关闭自动更新策略效果总结前言 在写这篇总结之前&#xff0c;我已经尝试过多次关闭Win10的自动更新了&#xff0c;一般来说更新之后可以使操作系统更加健壮&#xff0c;但总会有一些原因让我们不想更新&#xff0c;比如我最近总是需要远程…

110、【树与二叉树】leetcode ——669. 修剪二叉搜索树:递归法(C++版本)

题目描述 解题思路 大题思路类似于 450.删除二叉搜索树中的节点&#xff08;递归法迭代法&#xff09; &#xff0c;区别在于删除的是某一区域的节点值&#xff0c;并且要保留区域内部的节点值。 对于第一次找到结点值小于low的情况&#xff0c;有两种&#xff1a;&#xff08…

【JavaWeb】HTML零基础入门

✨哈喽&#xff0c;进来的小伙伴们&#xff0c;你们好耶&#xff01;✨ &#x1f6f0;️&#x1f6f0;️系列专栏:【JavaWeb】 ✈️✈️本篇内容:HTML基础语法详解&#xff0c;附带综合案例。 &#x1f680;&#x1f680;代码托管平台github&#xff1a;JavaWeb代码存放仓库&am…

Python实战项目2——自动获取酷狗音乐工具

&#x1f935;‍♂️ 个人主页老虎也淘气 个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f44d;&#x1f3fb; 收藏…

vueJs中readonly与shallowReadonly函数的使用比较

01readonly()函数让一个响应式数据变为只读的,接收一个响应式数据,经过readonly加工处理一下,那么新赋值的数据都不允许修改接受一个对象 (不论是响应式还是普通的) 或是一个 ref&#xff0c;返回一个原值的只读代理页面没有更新有两种情况[1]. 数据修改了,但数据不是响应式,vu…

自主可控!万应低代码通过华为鲲鹏、麒麟等多项国产化认证及国家信息安全等级保护三级备案证明

01 万应低代码通过信息系统安全等级保护三级备案证明 凭借过硬的技术能力及完善的信息安全管理体系&#xff0c;万应低代码顺利通过“信息系统安全等级保护三级测评”&#xff08;简称&#xff1a;等保三级&#xff09;&#xff0c;正式获得由公安部核准颁发的“信息系统安全等…

Probabilistic Volumetric Fusion for Dense Monocular SLAM

论文标题&#xff1a;Probabilistic Volumetric Fusion for Dense Monocular SLAM 论文链接&#xff1a;https://arxiv.org/pdf/2210.01276.pdf 论文思想 提出了一种新的方法&#xff0c;通过利用深度密集的单眼SLAM和快速不确定性传播&#xff0c;从图像中重建三维场景 所提…

Vue如何高效通过JSX动态渲染组件

一、明确需求 如何渲染动态组件呢&#xff1f; 有一组数组结构如下&#xff1a; const arr [ { tag: van-field },// 输入框{ tag: van-cell }, // 弹出层{ tag: van-stepper } // 步进器 ] 想通过循环arr&#xff0c;拿到tag渲染对应的组件。 下面我们分析如何写才是最优。…

高校数据可视化(智慧校园)

教育数据可视化大屏有哪些内容&#xff1f; 教育数据可视化大屏能够展示和分析很多数据&#xff0c;比如&#xff1a;在校生数据分析、招生数据分析、就业数据分析、教职工数据分析&#xff0c;科研数据分析等综合数据分析。 跟传统的教学不同&#xff0c;现代教育对效果的要求…