Linux系统--docker构建镜像的方式

Docker笔记(6):镜像 本地镜像都保存在 Docker宿主机的/var/lib/docker目录下。 1.镜像的分层结构 (1)分层结构 Docker镜像是由文件系统叠加而成,最底端是一个引导文件系统bootfs,这很像典型的 Linux/Unix的引导文件系统,Docker用户几乎永远不会和引导文件系统有什么交互。实际上,当容器启动后,引导文件系统则会被卸载,以留出更多的内存供initrd磁盘镜像使用。Docker镜像的第二层是root文件系统rootfs,它位于引导文件系统之上。rootfs可以是一种或多种操作系统(如 Deb 阅读详情

一.docker镜像的分层结构

在这里插入图片描述在这里插入图片描述
特点:共享宿主机的内核(内核使用的物理机的内核)
base镜像提供的是最小linux的发行版(镜像层最多127层)
同一个docker主机可以运行多种linux发行版
由于docker采用的分层结构所以资源可以共享(即共同使用的资源只需要存在一份)
copy-on-write可写容器层,在使用时是将下面的镜像层内容复制到容器层进行修改并对修改的内容进行保存,而镜像层的内容是只读的不会被修改。
docker的读取方式采用的是从上至下的读取。

二.镜像的构建

(1)docker commit构建
第一步 运行容器
docker run -it --name 容器名 镜像
docker start 容器名 开启容器 ctrl+D (退出) ctrl+p+q(暂时挂起后台运行)
docker attach 容器名 连接上容器
第二步 修改容器内容
vi 或者 echo xxxx> 文件名
第三步 将运行容器保存为新的镜像
docker commit vm1( 容器) test:v1 镜像

docker images查看镜像状态
docker ps -a 查看容器状态
docker rm 容器 #删除容器
docker -f rm 容器 #强制删除容器
(2)dockerfile的创建
在根目录创建一个dockerfile文件夹
mkdir dockerfile
vim dockerfile
FROM busybox
RUN echo testfile > file1
docker build -t test:v2
dockerfile的参数
FROM 每个Dockerfile的第一条指令都应该是FROM。FROM指令指定一个已经存在的镜像,后续指令都是将基于该镜像进行,这个镜像被称为基础镜像(base iamge)。在这里ubuntu:latest就是作为新镜像的基础镜像。也就是说Dockerfile构建的新镜像将以ubuntu:latest操作系统为基础。在运行一个容器时,必须要指明是基于哪个基础镜像在进行构建。

MAINTAINER MAINTAINER指令,这条指令会告诉Docker该镜像的作者是谁,以及作者的邮箱地址。这有助于表示镜像的所有者和联系方式

RUN 在这些命令之后,RUN指令会在当前镜像中运行指定的命令。这里我们通过RUN指令更新了APT仓库,安装nginx包,并创建了一个index.html文件。像前面说的那样,每条RUN指令都会创建一个新的镜像层,如果该指令执行成功,就会将此镜像层提交,之后继续执行Dockerfile中的下一个指令。默认情况下,RUN指令会在shell里使用命令包装器/bin/sh -c 来执行。如果是在一个不支持shell的平台上运行或者不希望在shell中运行(比如避免shell字符串篡改),也可以使用exec格式的RUN指令,通过一个数组的方式指定要运行的命令和传递给该命令的每个参数:RUN [“apt-get”, “install”, “-y”, “nginx”]

EXPOSE EXPOSE指令是告诉Docker该容器内的应用程序将会使用容器的指定端口。这并不意味着可以自动访问任意容器运行中服务的端口。出于安全的原因,Docker并不会自动打开该端口,而是需要你在使用docker run运行容器时来指定需要打开哪些端口。可以指定多个EXPOSE指令来向外部公开多个端口,Docker也使用EXPOSE指令来帮助将多个容器链接。

COPY 把文件从build context复制到镜像,支持两种形式:COPY src dest 和 COPY [“src”, “dest”],src必须指定build context中的文件或目录

ADD 用法与COPY类似,不同的是src可以是归档压缩文件,文件会被自动解压到dest,也可以自动下载URL并拷贝到镜像:ADD html.tar /var/www

ENV 设置环境变量,变量可以被后续的指令使用:ENV HOSTNAME sevrer1.example.com
WORKDIR 为RUN、CMD、ENTRYPOINT、ADD和COPY指令设置镜像中的当前工作目录,如果目录不存在会自动创建。

CMD 与 ENTRYPOIN 这两个指令都是用于设置容器启动后执行的命令,但CMD会被docker run后面的命令行覆盖,而ENTRYPOINT不会被忽略,一定会被执行。docker run后面的参数可以传递给ENTRYPOINT指令当作参数。Dockerfile中只能指定一个ENTRYPOINT,如果指定了很多,只有最后一个有效。

8、Docker 镜像与容器的存储与构建解析 本文深入解析了 Docker 镜像与容器的存储与构建机制,详细介绍了内容摘要与分发哈希的作用,以及联合文件系统如何通过存储驱动将不同层组合成统一视图。文章还探讨了文件系统层在本地磁盘的存储位置、管理方法及性能优化建议,帮助读者更好地理解和使用 Docker 环境。 阅读详情

相关推荐

docker-pentaho-di:Pentaho 数据集成的 Docker 镜像

abtpeople/pentaho-di Pentaho 数据集成 (PDI) 的 Docker 映像,也称为 Kettle,社区版。 它支持将 Carte 作为服务运行,或者将 Pan 或 Kitchen 作为批处理作业运行。 它还支持运行自定义脚本以完全自定义派生的 Docker 映像。 默认情况下,该图像运行的容器中运行carte.sh的配置文件/pentaho-di/carte_config.xml默认设置可以使用环境变量或更改设置的容器,在端口8080上一个全权主节点监听通过提供自定义配置文件(请参阅下面的运行 Carte )。 或者,此映像可用作运行特定 PDI 作业或转换的基本映像。 下面的例子说明了如何做到这一点。 支持的标签和指向 Dockerfile 的链接 , , , 环境变量 可以使用-e选项将以下环境变量传递给docker run : CART

Docker 容器、镜像、容器制作镜像常用命令

Docker简介:docker的每个容器更像一个小型的linux系统,可以有自己的IP地址,容器相互之前环境隔离地更彻底;docker容器是由docker镜像创建的运行实例,简单说,镜像是文件,容器是进程,一个镜像可以对应多个容器。

qq_38393271的博客 936

Docker深度详解:从原理到实践的全方位指南

本文深入解析了Docker容器化技术的核心原理与实战应用。主要内容包括:1) Docker核心架构与优势,对比容器与虚拟机的关键差异;2) 企业级部署方案,涵盖离线安装与多镜像源配置;3) 高级镜像构建技术,如参数化构建、缓存优化及安全扫描;4) 容器生命周期管理,包括健康检查、资源限制及数据持久化方案。文章提供了丰富的代码示例和生产级配置建议,如使用Trivy进行安全扫描、精确控制容器资源等技术细节,帮助开发者全面掌握现代容器化技术。

weixin_42593797的博客 1280

Linux下Docker的常用命令

Linux下Docker与Docker镜像的常用命令 一、Docker服务的启用 二、Docker镜像的使用

weixin_51556612的博客 5405

GD32 TIMER0 PWM输出死活没波形?别忘了这个关键配置(附完整代码)

本文详细解析了GD32 TIMER0 PWM输出无波形的常见问题,特别强调了高级定时器特有的主输出使能配置。通过完整的代码示例和调试技巧,帮助开发者快速解决PWM输出问题,适用于无刷电机控制等嵌入式应用场景。

weixin_30906185的博客 397

OpenClaw Windows 最详细安装指南

Windows上养龙虾:OpenClaw完整安装教程+钉钉接入,助你养只大龙虾

weixin_43405859的博客 2212

docker — 容器镜像

Linux 操作系统由内核空间和用户空间构成①:Linux系统内核(/boot/vmlinuz-*)②(根文件系统): Linux系统中的用户空间文件系统。rootfs 是一个操作系统所包含的文件、配置和目录,但并不包括操作系统kernel。

qq_41619571的博客 7094

Python爬虫实战:用BeautifulSoup和Pandas轻松抓取去哪儿网景点数据(附完整代码)

本文详细介绍了如何使用Python的BeautifulSoup和Pandas库构建一个高效的旅游数据爬虫,从去哪儿网抓取景点数据。内容涵盖环境准备、网页结构分析、核心代码实现、反爬策略以及数据清洗与存储,提供完整代码示例,帮助开发者快速掌握数据采集技术。

river的博客 357

【Linux学习笔记】Docker安装及镜像替换

Docker安装及镜像替换一、Docker安装1.1、安装docker1.2、docker的启动和查看状态命令1.3、设置docker默认开机启动二、Docker镜像源替换三、Docker镜像源查询四、Docker应用启动例子4.1、启动rabbitmq4.2、启动ElasticSearch4.3、进入到docker中的应用 一、Docker安装 1.1、安装docker docker安装:“yu...

摩羯座de杰杰陆的博客 1484

STM32F4用FSMC驱动AX58100 EtherCAT从站芯片,保姆级配置流程与避坑指南

本文详细介绍了STM32F4通过FSMC接口驱动AX58100 EtherCAT从站芯片的完整配置流程,包括硬件连接、时序优化、协议栈移植及TwinCAT主站集成。针对工业自动化场景,提供高性价比的实时控制解决方案,特别适合机械臂、CNC机床等精确同步应用,并分享关键调试技巧与性能优化方法。

weixin_27869497的博客 306

VS2017中调用gdal(C#版)的方法二(含gdal下载地址,配置过程,代码测试,超详细!!)

VS2017中gdal(C#)版的配置与测试 上次记录了直接在VS2017中下载并应用gdal的方法,这次来记录一下网上下载的安装包配置与测试的方法。 一、环境、版本及下载地址 win10,vs2017社区版,gdal2.4.4 还是像之前在Unity中应用gdal一样,最好是下载已经编译好的C#版的gdal,不然自己配置真的很容易出错,我就是这样的,下面提供不同版本的gdal下载地址: 1.GDAL2.4.4(C#版、64位): https://download.youkuaiyun.com/download/che

chengbaola的博客 1365

在docker上部署kettle web版本

spoon-web网页版安装教程-with docker

m0_64139004的博客 3743

揭秘大厂 Unity 红点系统设计:别小看右上角那颗小红点,它能把你项目搞崩

本文详细探讨了游戏大厂如何设计高性能红点系统。红点作为提升用户活跃和转化率的重要工具,需要支持多级联动、动态判断和全局一致性。系统采用观察者模式和树形结构,分为数据管理、逻辑判定、订阅通知和UI展示四大模块,通过事件驱动方式实现高效刷新。文章特别强调了解耦设计、配置化管理和性能优化,并提出了热更新、数据分析等高级应用场景。最终指出,优秀的红点系统需要架构标准化、自动化配置和团队紧密协作,是大型游戏项目的关键技术基础。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 377

docker镜像构建

docker镜像构建的方式说明:docker commit和docker build

wenxiaoba的博客 2532

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Docker- 5、构建镜像/镜像命名/保存发布镜像/多阶段构造

docker构建镜像

无痕的博客 3005

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【docker】linux系统docker的安装及使用

然后,只要一个命令,就能同时启动/关闭这些容器。阿里云:http:**//mirrors.aliyun.com/docker-ce/linux/centos/**docker-ce.repo 清华大学源:https:**//mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/**docker-ce.repo。注:所有docker容器的卷,没有指定目录情况下(具名挂载和匿名挂载),都在 /var/lib/docker/volumes/ 下。

Best_lgx的博客 8748

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

PaddlePaddle飞桨Linux系统Docker版安装

PP飞桨 linux Docker 安装

sleepingboy888的专栏 1946

Docker 从零到实战:Windows & Linux 安装、命令与配置全攻略

本文是一份Docker从入门到实战的完整指南,涵盖Windows和Linux系统的安装配置、核心概念解析和常用命令速查。主要内容包括: Docker核心概念:镜像、容器和仓库的区别,与传统虚拟机的对比优势 Linux系统两种安装方式: yum安装(推荐):详细步骤包括卸载旧版、添加仓库、安装启动和权限配置 二进制安装:适合离线环境,包含systemd服务配置方法 Windows安装方案:通过Docker Desktop结合WSL2实现,包含环境准备和验证步骤 常用命令速查表:镜像管理、容器操作、网络和存储等

渣渣盟的博客 300

[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker pull线上镜像方式构建编译环境

跳转链接之后下面的不用看了,直接看链接里面的即可。你的映射必须要到源码的上一级目录,把源码再加一层文件夹,也就是说你要映射为如下结构!如果你想知道这个镜像是如何制作的,请看下面的教程,如果你只想拿到镜像。如果你在获取源码的时候就是使用的repo,那么你可以跳过本节。后续的工作请务必使用这个普通用户,每次进入容器之前,下载我封装好的压缩包(本篇),继续往下看即可。中的[源码下载]章节,建议使用repo下载。推荐的理由是我这个编译通了,而另一个没有。需要为你的下载的源码重新过一下编译工具。内容一定要特别注意!

qq_38844263的博客 2118

docker

【代码】linux docker。

lalading6543的博客 134

docker使用Dockerfile构建镜像启动项目。

1.首先准备一个文件夹 内容如下 docker-web 放入index.html ,启动成功后可以访问index.html Dockerfile 内容如下 #利用FROM 基准镜像 FROM tomcat:latest #进入webapps WORKDIR /usr/local/tomcat/webapps #将项目放入 ADD docker-web ./docker-web 2.上传到linux系统中 3.进入到这个路径下 执行Dockerfile 命令 取名one表示名称 2.0表示版本

宋忠瑾的博客 1245

KALI系统下Docker安装与镜像加速全攻略

本文详细介绍了在KALI Linux系统中安装Docker并配置镜像加速器的完整流程。针对KALI系统的特殊性,文章提供了从系统准备、APT换源到Docker安装(包括APT直装与官方脚本两种方法)的实战步骤,并重点讲解了如何配置阿里云等镜像加速器以解决国内拉取镜像缓慢的问题,旨在帮助安全研究人员快速搭建稳定高效的Docker环境,提升渗透测试与安全研究的工作效率。

vscode5coder的博客 753

linux和docker搭建网站区别,Linux 和 Docker 有什么区别?

Linux 和 Docker 有什么区别?Linux是一套免费使用和自由传播的类UNIX操作系统,一般用于后端服务中,而Docker是一个开源的应用容器引擎,两者是用来进行配合使用,并不是一类,所以两者无法进行对比。Docker 六大特点1、更高效的利用系统资源docker对系统资源的利用率更高,无论是应用执行速度,内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相...

weixin_28704565的博客 1011

Docker

docker

SunnerChen的博客 1187

获取并开始使用 Infer:二进制发布、源码构建与 Docker 镜像完整指南

Infer 是一款面向 Java、C、C++ 与 Objective-C 的静态分析器(仓库描述与 [README.md](https://link.gitcode.com/i/87bed61f633bd55398cf82ea58a356c3) 一致),能够在编译期捕获空指针解引用、资源泄漏、内存泄漏等缺陷。本文以 1.1.0 版本文档中的 [Getting started](https://li

gitblog_00529的博客 255
上一篇: Linux系统--docker的安装
Dead_LS
博客等级 码龄7年 6粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值