Ubantu docker学习笔记(二)拉取构建,属于你的容器
文章目录
- 一、拉取启动容器
- 二、本地镜像初解
- 三、构建镜像
- 3.1使用docker commit构建镜像
- 切换阿里镜像
- 3.2使用dockerfile构建镜像
- 四、总个结吧
这里的话,就详细说说小唐对于容器的配置,对了!小唐参考的书籍是Linux容器云实战!!!通过之前的案列,我们已经对了,docker有了一个初步的了解,目前我的暂时的理解就是一台微型的虚拟机!!!一起来做今天的实验吧
一、拉取启动容器
我们这里已centos作为实验案例,没有加速的朋友可以移步Ubantu docker学习笔记(一)docker安装查看
docker pull centos
下载完成之后,我们就可以通过
docker images
来查看我们的镜像

同时通过命令来创建容器来进入我们的镜像
docker run -it centos
-i:以交互模式运行容器,通常与 -t 同时使用; it同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
这里我们进入的就是我们centos啦!
源于这个我们可以看看centos的内核
uname -r
退出
exit

具体的话我们可以通过镜像id来进行具体查看(注意和上面的容器id进行区分)

这里就很清楚的看到,我们的centos(5d0da3dc9764)是由三层(有几行就是几层)只读层构成的,最后得到一个5d0da3dc9764的id,然后我们用户在读写的时候,会创建一个可读可写层,然后我们所有的操作都是在这个上面进行的
下面我们自己拉扯一个Ubuntu作为练习吧
docker pull Ubuntu:15.04
二、本地镜像初解
我们首先来看看我们的本地镜像,进行一个更为详细的解释和理解
docker images

有人会发问了,那个IMAGE作为唯一id为什么,只有12位,啊哈哈哈,那是因为他只显示12位,我们可以通过
docker images --no-trunc
进行详细的展开

三、构建镜像
为什么有了镜像,那我们为什么还要自己构建呢?
害,其实你可以简单的理解为,虽然是一个新的镜像,但是他无法满足我们开发所需的要求
就好像,我们刚刚拿到的云服务器,里面的sql、nigx需要来安装
我们也需要对于这个镜像diy
这里我们说一下两种方式,一个是我们直接使用命令的方式,另外一种我们就直接使用dockerfile的方式(其实我觉得有点更加像sh脚本啊哈哈哈哈)
3.1使用docker commit构建镜像
我们进入到我们的centos
dockee run -it centos /bin/bash
我们给我们centos安装一个vim,并设置为开机启动,自动构成vim,以免我们重新创建镜像后还需要对vim进行安装
yum -y install vim
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: Interrupted by signal
这里由于我们我们使用的版本在去年已经停止服务了,所以在这里我们需要进行换镜像
切换阿里镜像
1.进入yum的repos目录
cd /etc/yum.repos.d/
2、修改所有的CentOS文件内容
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
3、更新yum源为阿里镜像
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
yum clean all
yum makecache
然后再去执行我们vim的下载命令
就完成啦

这时候值得注意的是,我们记录下我们现在容器的一个id

通过我们这个容器的id去创建属于他的镜像(我其实喜欢把他叫做快照啊哈哈哈哈)
docker commit 1881e7dde299(你自己ide容器id) centos/vim(名字自己可以取)
这样,我们就得到了这个容器的快照,其实也就是我们已经配置好vim和镜像源的镜像啦

我们一起来验证一下
docker run -it centos/vim(你的名字) /bin/bash
which vim

3.2使用dockerfile构建镜像
说是说dockerfile,其实我感觉更像是sh脚本文件啊哈哈哈哈,接下来我们来看看他有那些好玩的吧
我们首先来了解一下他有哪些配置参数
- FROM(使用哪一个镜像源)
- MAINTAINER(作者信息)
- RUN(容器里运行的命令)
- EXOPOSE(运行容器时使用的端口)
- CMD(容器启动的命令)
- ENTRYPONINT(cmd运行时候的命令传递给ENTRYPONINT)
- COPY(将文件复制到当前容器中)
- ADD(把文件复制到当前容器)
- VOLUME(为容器添加器卷)
- WORKDIR(设置工作目录)
- ENV(环境变量)
- USER(以什么身份运行,默认root)
创建我们的dockerfile
touch Dockerfile
查看
ls

编写我们Dockerfile文件
#选择使用的image,因为我们这个已经配置好镜像了,就直接用这个centos/vim
FROM centos/vim
#执行的命令
RUN yum -y install vim
RUN yum -y install chrony

构建镜像
docker build -t centos/dockerfile .
-t后面跟你的名字 后面还有一个。别忘记了,表示当前目录下

我们通过images可以很直观的看到

其实会注意细节的同学就会看到,三个centos size(内存)变化,他们相当于三个不同状态下centos的快照

我们也可以通过查看history更为直观的看到
centos的

centos/vim 的

centos/dockerfile的

有没有同学想过,如果我们执行的run的顺序相反会发生什么有意思的事情

docker build -t centos/dockerfile2 .

在这里,我们可以很明显的看到,之前我们使用
yum -y install vim是直接下来的
但是我们这一次确实又下载了一次
我们去看看centos/dockerfile2的结构

得到结论,如果命令执行顺序不对,我们的层级会从新创建缓存
注:默认会使用缓存,但是可以添在 docker build中添加–no-cache,来不使用缓存
四、总个结吧
对于我们的images其实我理解就是快照,我们可以通过我们的快照去快速的创建我所需要的环境,也就是我们的容器
然后去创建我们快照的方法一共有两种
1.通过命令去保存之前运行的容器id,将此时运行的容器id作为新的image(容器)
2.通过dockerfile的方式去创建,这里更加便捷,避过要注意我们指令顺序,会对我们是不是用缓存造成影响
以前自己搭建云服务器的方式是真的笨。。。
有兴趣的可以看看之前小唐的笨蛋操作
以前搭建半小时,现在用docker真的10分钟都不要
相关文章:
Ubantu docker学习笔记(二)拉取构建,属于你的容器
文章目录一、拉取启动容器二、本地镜像初解三、构建镜像3.1使用docker commit构建镜像切换阿里镜像3.2使用dockerfile构建镜像四、总个结吧这里的话,就详细说说小唐对于容器的配置,对了!小唐参考的书籍是Linux容器云实战!…...
指针数组 数组指针 常量指针 指针常量 函数指针 指针函数
一、指针常量与常量指针 1、指针常量 本质上是一个常量,常量的类型是指针,表示该常量是一个指针类型的常量。在指针常量中,指针本身的值是一个常量,不可以改变,始终指向同一个地址。在定义的时候,必须要初…...
前端js学习
1. js入门 1.1 js是弱类型语言 1.2 js使用方式 1.2.1 在script中写 1.2.2 引入js文件 1.2.3 优先级 1.3 js查错方式 1.4 js变量定义 1.4 js数据类型 数据类型英文表示示例数值类型number1.1 1字符串类型string‘a’ ‘abc’ “abc”对象类型object布尔类型booleannumber函数…...
“华为杯”研究生数学建模竞赛2007年-【华为杯】A题:食品卫生安全保障体系数学模型及改进模型(附获奖论文)
赛题描述 我国是一个拥有13亿人口的发展中国家,每天都在消费大量的各种食品,这批食品是由成千上万的食品加工厂、不可计数的小作坊、几亿农民生产出来的,并且经过较多的中间环节和长途运输后才为广大群众所消费,加之近年来我国经济发展迅速而环境治理没有能够完全跟上,以至…...
转战C#---day2
定义数组: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace Relay_Sin_Com {class Program{static void Main(string[] args){int[] ages1 {3240,242,34};Console.WriteLine(age…...
【vue2源码学习】— diff
vue更新还是调用了 vm._update 会进入下面这一步 vm.$el vm.__patch__(prevVnode, vnode) 又回到了patch方法 会通过sameVnode 判断是不是相同的vnode// patch代码片段 const isRealElement isDef(oldVnode.nodeType) if (!isRealElement && sameVnode(oldVnode, vno…...
更换 Linux 自带的 jdk 环境
如下,我要把 Linux 默认的 jdk 版本换成我自己的 jdk 版本。 Linux 自带的 jdk 环境: 要更换的 jdk 环境: 1、切换到 root 用户进行操作; 2、在根目录下创建一个 /export/server/ 目录; [rootcentos /]# mkdir -p /e…...
MySQL8读写分离集群
文章目录前言MySQL读写分离原理搭建MySQL读写分离集群MySQL8.0之前MySQL8.0之后后记前言 上一期介绍并实现了MySQL的主从复制,由于主从复制架构仅仅能解决数据冗余备份的问题,从节点不对外提供服务,依然存在单节点的高并发问题 所以在主从复…...
蓝桥冲刺31天之第七天
目录 A:三角回文数 B:数数 C:数组切分 D:倍数问题 一星陨落,黯淡不了星空灿烂; 一花凋零,荒芜不了整个春天。 如果命运是世界上最烂的编剧, 你就要争取做人生最好的演员。 即使生…...
【Python百日进阶-Web开发-Vue3】Day550 - Vue3 商城后台 10:Veux4-02基本使用
文章目录 二、Vuex的基本使用2.4 Mutations 应用 :同步更新state2.4.1 `src/store/index.js`2.4.2 `src/views/index.vue`2.5 Module的应用:分模块2.5.1 `src/store/modules/product.js`2.5.2 `src/store/modules/cart.js`2.5.3 `src/store/index.js`2.5.4 `src/views/index.…...
ESP32驱动-红外寻迹传感器驱动
红外寻迹传感器驱动 1、红外寻迹传感器介绍 红外寻迹传感器具有一对红外线发射管与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,输出接口会输出一个数字信号(低电平或高电平,取决于电路…...
【TS】TypeScript泛型 T 的用法详解
一、什么是泛型? 泛型,从字面上理解,泛型就是一般的,广泛的的意思。 TypeScript中泛型(Generics)是指在定义函数、接口或类的时候,不预先指定具体类型,而是在使用的时候再指定类型…...
Vue 3.0 单文件组件 【Vue3 从零开始】
#介绍 在很多 Vue 项目中,我们使用 app.component 来定义全局组件,紧接着用 app.mount(#app) 在每个页面内指定一个容器元素。 这种方式在很多中小规模的项目中运作的很好,在这些项目里 JavaScript 只被用来加强特定的视图。但当在更复杂的…...
北邮22信通:你是不是在looking for……那串代码?(2)第三章单链表
相信有了第二章顺序表的基础,小伙伴们学习第三章链表应该会轻松一点吧 目录 类模板下的单链表 1.1书上干净完整代码(无增改、适合自己动手实验) 1.2对书上代码的完善和对一些问题的验证和解释代码 1.补全一个函数: 2.this指…...
蓝库云|告诉你传统产业该如何进行数字化转型
在后疫情时代下,企业该如何在面临生存危机的情形下,投入「数字化转型」、提升公司竞争力,已成为许多公司的当务之急,但到底什么是数字化转型呢?传统产业又如何着手进行数位转型? 数字化转型是什么…...
121.(leaflet篇)leaflet结合echarts4迁徙图
听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <!DOCTYPE html> <html>...
链表及其基本操作
1.单链表:1.1定义/性质:链表是线性表的链式存储方式。单链表通过指针线性遍历,删除/增加节点时间复杂度为O(1),访问节点时间复杂度为O(n)。单链表分为带头结点和不带头结点两种,带头结点是为了方便统一操作(…...
【Java基础 下】 031 -- 反射 动态代理
一、什么是反射? 换句话说就是(从类里拿出来) 可以获取到:(利用反射,我们可以获取到类中所有的东西) 获取是先从class字节码文件中获取的 二、获取class对象的三种方式 三种方式也对应了三种阶段…...
springcloud3 GateWay
一 GateWay 1.1 GateWay的作用 gateway相当于所有服务的门户,将客户端请求与服务端应用相分离,客户端请求通过gateway后由定义的路由和断言进行转发,路由代表需要转发请求的地址,断言相当于请求这些地址时所满足的条件ÿ…...
万字长文:Stable Diffusion 保姆级教程
万字长文:Stable Diffusion 保姆级教程 2022年绝对是人工智能爆发的元年,前有 stability.ai 开源 Stable Diffusion 模型,后有 Open AI 发布 ChatGPT,二者都是里程碑式的节点事件,其重要性不亚于当年苹果发布iPhone&a…...
OpenClaw智能体引导基准测试:本地LLM多步骤任务执行能力评估
1. 项目概述:一个专为LLM智能体设计的“开箱即用”能力基准测试 如果你最近在关注本地大语言模型(LLM)和智能体(Agent)的进展,可能会发现一个现象:很多模型在标准问答或代码生成任务上表现不错…...
PP 蜂窝板挤出成型核心原理与关键设备解析
PP 蜂窝板挤出成型核心原理与关键设备解析一、PP 蜂窝板材料特性与成型难点PP(聚丙烯)蜂窝板兼具质轻、高刚性、耐水防潮、可循环四大优势,在物流、建筑、车厢、包装领域替代传统实心板材趋势明显。 其成型难点集中在:蜂窝芯超薄、…...
【Instagram内容工业化生产】:ChatGPT + Canva + Notion三件套实战手册(含私有化部署Prompt库下载权限)
更多请点击: https://intelliparadigm.com 第一章:Instagram内容工业化生产的底层逻辑与范式迁移 Instagram内容工业化生产已从个体化、灵感驱动的创作模式,转向数据闭环、模块化协同与AI增强的系统工程。其底层逻辑根植于三重耦合ÿ…...
移动SoC设计演进:从骁龙600/400系列看芯片战略与体验竞争
1. 从一场发布会看移动芯片的十年演进2015年2月,巴塞罗那世界移动通信大会前夕,高通的一则新闻稿在业内激起了不小的涟漪。他们宣布了全新的骁龙600和400系列移动平台,其中最引人注目的,是首次将当时ARM最新的64位Cortex-A72核心引…...
如何将Claude Code的配置无缝迁移至Taotoken平台以解决封号困扰
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 如何将Claude Code的配置无缝迁移至Taotoken平台以解决封号困扰 Claude Code 作为一款高效的编程助手,其核心能力依赖于…...
ComfyUI-WanVideoWrapper:一站式AI视频生成插件解决方案
ComfyUI-WanVideoWrapper:一站式AI视频生成插件解决方案 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper ComfyUI-WanVideoWrapper是一个专为ComfyUI设计的视频生成插件包装器&#x…...
毕业设计:基于SpringBoot+Vue大学生租房平台 (源码)
目录 一、项目背景 二、技术介绍 三、功能介绍 四、代码设计 五、系统实现 一、项目背景 近年来,随着我国高等教育事业的持续发展,在校大学生及刚步入社会的毕业生数量逐年攀升。据统计,2024年全国高校毕业生规模已突破1100万人&#x…...
基于MCP协议与FFmpeg构建AI视频处理服务器:原理、部署与实战
1. 项目概述:一个面向视频处理的MCP服务器 最近在折腾一些AI应用,发现很多工具在处理视频内容时,总感觉差了那么一口气。要么是功能太单一,只能做简单的剪辑或转码;要么就是流程太复杂,需要把视频下载、处…...
喜马拉雅音频离线收藏:这款跨平台下载器如何帮你永久保存付费内容?
喜马拉雅音频离线收藏:这款跨平台下载器如何帮你永久保存付费内容? 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-q…...
超净实验室建设公司厂家:如何根据需求选择方案|中南实验室建设
在半导体制造、地质微量元素分析、生物制药等高精度领域,实验环境的洁净度直接影响数据可靠性与产品良率。超净实验室作为核心基础设施,其建设需融合空气动力学、材料科学、自动化控制等多学科技术。 一、超净实验室建设公司厂家的设计规划:…...
