首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏亨利笔记

    Docker镜像详谈(2): 深入理解镜像大小

    再进一步思考 Docker 镜像,大家可能很快就会联想到以下几类镜像: 系统级镜像:如 Ubuntu 镜像、CentOS 镜像以及 Debian 容器等; 工具栈镜像:如 Golang 镜像、Flask 镜像、Tomcat 镜像等; 服务级镜像:如 MySQL 镜像、MongoDB 镜像、RabbitMQ 镜像等; 应用镜像:如 WordPress 镜像、Docker Registry 镜像等。 :14.04 ADD compressed.tar / 假设最终 docker build 构建出来的镜像名分别为 image 1 和 image 2,由于两个 Dockerfile 均基于 ubuntu :14.04,因此,image 1 和 image 2 这两个镜像均复用了镜像 ubuntu:14.04。 14.04 的大小)+ 20 MB = 220 MB image 2:200 MB(ubuntu:14.04 的大小)+ 100 MB = 300 MB 如果仅仅是单纯的累加三个镜像的大小,那结果应该是

    2.7K21发布于 2019-04-12
  • 来自专栏姚红专栏

    raw镜像与qcw2镜像互相转换

    qcow2是最小使用,raw是置零使用 。 raw格式是原始镜像,会直接当作一个块设备给虚拟机来使用,至于文件里面的空洞,则是由宿主机的文件系统来管理的,linux下的文件系统可以很好的支持空洞的特性, 所以,如果你创建了一个100G的raw格式的文件 qcw2镜像转化为raw镜像文件 #yum install qemu-img #qemu-img convert -f qcow2 win7.qcow2 -O raw win7.raw raw镜像转化为 qcw2镜像文件 #qemu-img convert -f qcow2 win7.raw -O raw win7.qcow2

    1.8K20发布于 2019-09-11
  • 来自专栏迁移内容

    Docker 应用实践-镜像

    本品内容主要介绍:关于 Docker 镜像、Docker 命令应用实践 ---- 文章目录 一、关于 Docker 镜像 1、对于 Docker 镜像的理解 2、Docker 镜像的多层结构 二、Docker 命令应用实践 1、登陆镜像仓库(镜像仓库) 2、Docker search 命令(镜像仓库) 3、Docker pull 命令(镜像仓库) 4、Docker images 命令( 2、Docker 镜像的多层结构 一个 Docker 镜像往往是由多个镜像层(可读层)叠加而成,每个层仅包含了前一层的差异部分,单个镜像层也往往可以看作镜像使用,当我们启动一个容器的时候,Docker 其中,多个容器共享镜像的结构如下所示: 总的来说:镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象。镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包。 ---- 二、Docker 命令应用实践 1、登陆镜像仓库(镜像仓库) 我们在使用 Docker 拉取镜像前,往往需要登陆到一个 Docke r镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker

    88310编辑于 2023-02-03
  • 来自专栏数据科学(冷冻工厂)

    Docker|了解容器镜像层(2)

    创建快照的过程与构建镜像相反。它首先通过下载清单并构建一个要下载的层列表开始。对于每个层,会创建一个包含层父目录内容的目录。这个目录被称为活动快照。 接下来,差异应用器负责解压压缩的层文件,并将更改应用到活动快照上。生成的目录随后被称为提交快照。最终的提交快照是作为容器文件系统挂载的那一个。 创建了一个 layer2 的目录。这个空目录现在是一个活动快照。文件 layer2.tar.gz 被下载、验证(通过比较摘要和文件名),并解压到目录中。 创建了一个 layer3 的目录,并将 layer2 的内容复制进去。这是一个新的活动快照。文件 layer3.tar.gz 被下载、验证并解压。 如果这些目录中的任何一个已经存在,这表明另一个镜像有相同的依赖关系。因此,引擎可以跳过下载和差异应用器。它可以直接使用该层。在实践中,这些目录和文件的命名都是基于内容的摘要,以便于识别。

    23610编辑于 2024-06-18
  • 来自专栏写代码和思考

    Docker 学习笔记2 - 创建一个镜像和发布镜像

    基于 Docker 的开发流程 一般来说基于 Docker 的开发流程是这样的: (1)创建Docker镜像,它承载了你的程序运行的必要环境,是创建和测试独立的基础。 (2)测试,验证你的镜像。 (2)发布/分享你的镜像。比如在 Docker Hub 上发布你的Docker镜像 本文关注第一步,创建一个基础的镜像,这个镜像是你的容器的基础。一个镜像包含了用于承载容器运行的私有的文件系统。 基于此,我们需要把我们的应用程序的能够运行的所需文件/ 组件放入镜像中。 容器化的开发环境,相比于传统的开发环境更容易配置。由于一个容器化的开发环境会把应用程序所需要的文件依赖项,隔离在镜像的内部。 创建Docker镜像 步骤拆解: (1) 编写 Dockerfile 文件 (2) 执行 下面分别说明。 这样不仅保留镜像构建方式的记录,还保留镜像作为完整应用程序运行的方式的记录。

    1.4K20发布于 2020-04-09
  • 来自专栏云云众生s

    Dive:查看 Docker 镜像内容的应用

    为了做到这一点,你需要了解诸如层、层的详细信息、每个层的内容和镜像的详细信息等方面的信息。 听起来是不是很费力呢? 有一个叫做 Dive 的应用程序可以帮助你,实际上这个过程非常简单。 你肯定不想在镜像的层中包含不必要的应用程序,而 Dive 正是一个很好的工具,可以准确地了解其中的内容。 让我们开始安装 Dive 吧。 /dive_${DIVE_VERSION}_linux_amd64.deb 安装完成后,你就可以测试该应用程序了。 当前选择的层将由一个小紫色方块表示(图2)。 图2:我们深入到了最新的MongoDB镜像中,并发现了多个层。 如果按 Tab 键,你将移动光标到右窗格,然后可以使用光标键导航到层次结构。 这基本上是使用 Dive 工具查看任何 Docker 镜像内容的基础知识。希望这个命令行应用程序能帮助你构建更高效和安全的镜像(或者至少了解构成你使用的镜像的确切内容)。

    98710编辑于 2024-03-28
  • 来自专栏鸿蒙开发笔记

    稀疏镜像在OpenHarmony上的应用

    ,没有全零填充2、稀疏镜像格式稀疏镜像数据格式:首先是sparse_header占用28byte,然后是12byte的chunk_header,同样这chunk_header的类型决定了后面跟着的数据, 三、实现稀疏镜像升级方案版本基线:OpenAtom OpenHarmony(以下简称“OpenHarmony”) 3.1 Release1、稀疏镜像烧录(1)生成稀疏格式镜像2种方法可以生成稀疏镜像: 稀疏镜像本身是不能直接挂载的,在烧录过程中通过uboot将稀疏格式镜像还原为原始镜像,然后写到磁盘中,系统启动后可挂载对应的镜像2、稀疏镜像升级升级包采用稀疏镜像制作。 \base\update\packaging_tools\image_class.py按照上图所示注释代码(2)生成稀疏镜像升级包和全量镜像升级包制作方法一致。 本文介绍了OpenHarmony系统中实现稀疏镜像升级的方法,理解稀疏镜像原理及稀疏镜像还原方法可以快速在自己的系统中应用稀疏镜像升级,提高系统升级速度。

    32300编辑于 2025-04-28
  • 【将Java应用打包为Docker镜像

    将Java应用打包为Docker镜像的步骤 准备Java应用 确保Java应用已编译为可执行的JAR或WAR文件。 以下是基于不同场景的配置示例: 案例1:Spring Boot JAR应用 # 使用官方OpenJDK镜像作为基础 FROM eclipse-temurin:17-jdk-jammy # 设置工作目录 # 启动命令 ENTRYPOINT ["java", "-jar", "app.jar"] 案例2:传统Java SE应用 FROM eclipse-temurin:11-jre WORKDIR Tomcat COPY target/your-webapp.war /usr/local/tomcat/webapps/ROOT.war # 暴露Tomcat端口 EXPOSE 8080 构建和运行镜像 构建镜像 在Dockerfile所在目录执行: docker build -t java-image-name .

    49310编辑于 2025-12-17
  • 来自专栏后端精进之路

    Docker系列-(2) 镜像制作与发布

    由于本地没有镜像可以先利用docker search获取官方镜像的名称,然后docker pull将镜像下载到本地。 2)以交互方式启动镜像,方便在容器中安装软件。 0.076 ms 56 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.087 ms 56 bytes from 127.0.0.1: icmp_seq=2 0.096 ms 56 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.088 ms 56 bytes from 127.0.0.1: icmp_seq=2 本地私有仓库 (1) 首先下载registry镜像:docker pull registry. (2) 接着在5000端口启动,docker run -d --name reg -p 5000:5000 (1)打tag docker tag hello-world http://192.168.244.7:5000/hello-world (2)push镜像 docker push 192.168.244.7

    1K30编辑于 2023-10-17
  • 来自专栏个人开发

    Linux下docker制作springboot应用镜像

    2.打出web.jar包后,上传到Linux服务器,编写Dockerfile文件,内容如下: FROM ascdc/jdk8 VOLUME /tmp ADD web-1.0-SNAPSHOT.jar springboot-rabbitmq.jar 等待一段时间后,打包镜像成功,如下图: ? 执行docker images | grep jinjunzhu ? 可以看到打好的镜像了,但是镜像文件太大了,原因是jdk的镜像太大。 启动刚刚创建的镜像: docker run -itd --name springboot-rabbitmq -p 8082:8082 d170dea75f29 可以看到输出: b8a65d2eb6c8ff78c49b4aefb9cd453e03d0df80570d3534f275816f84706220 查看启动日志: docker logs b8a65d2eb6c8ff78c49b4aefb9cd453e03d0df80570d3534f275816f84706220 在浏览器输入:http://192.168.59.131 网上找到了答案,应用对docker开启了防火墙,执行如下命令,对docker0开放5672端口,再次telnet就可以通了 firewall-cmd --permanent --zone=trusted

    4.9K30发布于 2020-08-20
  • 来自专栏存储稳定性&数据一致性

    qcow2镜像检测及修复

    PPT:《qcow2镜像检测及修复》Copyright (c) 2016-2023 YOUPLUSAuthor: YOUPLUSqcow2-dump is a useful tool for checking and repairing damaged qcow2 image, it has some improvements compare with qemu-img check command (qcow2 -dump has all functions which qemu-img check command has).图片基础:qcow2镜像格式及分配模式图片qcow2-dump -h/--help (工具的参数说明、功能介绍及现场演示)图片qcow2-dump工具的设计实现:图片检测性能:图片

    79300编辑于 2023-12-06
  • 来自专栏仁扬笔记

    Composer 镜像原理 (2) —— composer.json

    "php": "^7.0", "psr/log": "^1.0.1" }, "require-dev": { "phpunit/phpunit": "^5.7", "graylog2/ 其他字段对于理解镜像的原理没什么帮助, 有兴趣可以看下 这篇文章. 看过我 上一篇文章 的朋友就知道, 文章末尾我们配置了 国内的composer镜像, 用来加速我们安装组件的过程, 它缓存了所有包的 composer.json, 并把仓库的每一个分支源码, 打包为 zip 镜像服务器提供了让我们得到 composer.json 的接口, 我们只需提交一个包名, 还有请求结果的哈希值(是不是很懵逼, 我怎么知道结果的哈希值), 镜像服务器会返回一个 JSON, 它包含了很多 镜像服务器的官方网站, 并没有提供啊...

    60900编辑于 2023-06-20
  • 来自专栏用户8644135的专栏

    定制Linux镜像批量部署初始应用

    1、挂载光盘到/mnt下,拷贝内容到新建目录 mount /dev/cdrom /mnt mkdir /opt/iso cp -rT /mnt /opt/iso1.2.3. 2、修改isolinux.cfg $1IinnbXglCDM.ZyNVWocMHEsIlRc.oyU4In.1GTrRESIfa2Wb4IAVo8Xma3YHCirHXSyyM.Zt1VzXZyKCWAm00 authconfig -- 把镜像重新封装到/root/test.iso,test.iso即为制作好的镜像,上边的参数不要修改,除非很清楚在干什么 主要有几个注意点: 1、光盘安装的时候,光盘的临时目录为/mnt/source/( 把USB刻录为CD-ROM时,此目录为/mnt/stage2) 2、安装过程系统的目录为/mnt/sysp_w_picpath/ 如果定制的ISO过大(超过4G),将无法刻录到一般的光盘,可以刻录到U盘 解决方法: 重置repodata,然后重新生成镜像 rm -f repodata/*.gz repodata/*.*.bz2 repodata/*.repomd.xml declare -x discinfo

    1.6K20发布于 2021-06-17
  • 来自专栏码农小胖哥的码农生涯

    Buildpacks高效构建Spring Boot应用Docker镜像

    前言 Spring Boot 2.3.0.RELEASE 正式发布了几天了,其中有个新的特性:可以将 Spring Boot 应用代码直接打包为 Docker 镜像。这是什么科技? 但是 Spring Boot 2.3.0.RELEASE 的镜像构建插件好像有 BUG,等后续修复吧。但是本文的相关实践并不采用官方的插件。 2. 2. 安装 Buildpacks 目前Buildpacks 支持 Linux、MacOS、Windows。 版本和期望的版本不一致,下载期望的版本,然后用期望的版本来执行 mvn 命令,安装命令为: mvn -N io.takari:maven:wrapper 一般从 Spring Initializr[2] --publisher命令将镜像上传到Docker镜像仓库。

    1.2K20发布于 2020-05-28
  • 来自专栏姜同学

    使用Docker将你的应用制作成镜像

    为什么是Docker 在开发的时候,在本机测试环境可以跑,生产环境跑不起来` 这里我们拿java Web应用程序举例,我们一个java Web应用程序涉及很多东西,比如jdk、tomcat、mysql等软件环境 优势2:对进程进行封装隔离,容器与容器之间互不影响,更高效的利用系统资源 公司要弄一个活动,可能会有大量的流量进来,公司需要再多部署几十台服务器` 在没有Docker的情况下,要在几天内部署几十台服务器 优势3: 通过镜像复制N多个环境一致容器 制作镜像 将一个SpringBoot的应用制作成镜像也是Very easy哦,前提是你要了解一下Docker一些基本命令的使用,Docker命令的介绍在菜鸟教程里面写的那些命令已经很够用了 ,我就不在介绍啦咱们直接实战将应用制作成镜像,然后将而容器启动起来你只需要将你的应用打成jar包然后编写Dockerfile就好啦~ 编写Dockerfile 编写Dockerfile咱们IDEA上写好直接使用 –env把他替换掉就好啦,将jar包上传到镜像里面去然后把应用的日志目录挂载到宿主机当中去,这个/var/log是我在logback中已经定义好的了。

    1.1K20编辑于 2022-10-27
  • 来自专栏云前端

    实战 web 应用 Docker 镜像解耦交付

    把一个 web 应用塞进集装箱呢? 随着几次浏览器大战的硝烟散尽和 Flash 的背影远去,当下的 web 应用开发经过十余年的发展,在工程化、测试、持续集成等方面都已经汇入了软件开发的快车道。 但和项目中的环境变量类似,如果应用不当也会造成不同环境下镜像不一致的问题。因此交由运维人员或者自动化执行的 docker build 命令最好没有构建参数。 这是个非常有用的特性,能避免最终镜像中存在编译过程中的依赖文件,也就是镜像会变得更小了 。 但由于一来浏览器中无法用 process 感知环境,二来 Nginx 又不似 Node.js 应用一样可以直接传入参数;我们只好稍费周章,想办法 写入一些 Nginx 可以伺服的文件作为变量来源。 项目局部的异步改造 配置文件很轻松的就解决了,那么有了 endpoint.json 配置文件,如何在 runtime 将其应用于每一次异步请求呢?

    1.7K10发布于 2020-06-15
  • 来自专栏我的小碗汤

    无需依赖 Docker 环境制作 Java 应用镜像

    随着高版本的 Kubernetes 弃用 Docker,企业也可以不依赖 Docker 环境了,但是 DevOps 通过 Kubernetes 部署的话,仍然需要制作镜像,那么在没有 Docker 环境的情况下如何制作呢 github 地址: https://github.com/GoogleContainerTools/jib 它是一个无需 Docker 守护进程,也无需深入掌握 Docker 最佳实践的情况下,为 Java 应用程序构建 Docker 和 OCI 镜像, 它可以作为 Maven 和 Gradle 的插件,也可以作为 Java 库。 那么有没有不需要改造系统的方式直接进行构建镜像呢?答案是通过 Jib-core 就可以实现。 通过 Jib-core,可以很轻松的实现镜像构建,而不需要依赖任何其他环境,也不需要被构建系统做任何改造,非常方便。 如果你的项目有此需求,也可以通过 Jib-core 来实现。

    1.2K40编辑于 2023-03-20
  • 来自专栏sealyun

    P2P镜像分发Dragonfly使用

    可以看一下实测试性能,横坐标是并发数,纵坐标是时间,当并发1200时wget已经超过八百秒而p2p时不会随并发数量上升导致分发性能下降。 | 核心组件 SuperNode SuperNode是一个常驻进程,有两个主要职责: 它是P2P网络中的跟踪器和调度器,为每个p2p节点选择适当的下载网络路径。 同时,它还扮演着peer的角色,可以在P2P网络中相互传递数据。 dfdaemon Dfdaemon仅用于拉动图像。 首先在需要下载的节点dfget 请求到supernode节点 supernode通过http在文件服务器获取到文件 返回给node节点 node节点之前就可以进行p2p传输 镜像文件分发原理: ? node 发起docker pull请求 请求发给supernode supernode向仓库拉取镜像 返回镜像给node 节点之间可以相互传输镜像镜像到本地文件系统 文件如何分块传输: ?

    3K30发布于 2019-08-26
  • 来自专栏Java帮帮-微信公众号-技术文章全总结

    Docker2 docker commit方法镜像制作

    一、前期准备 1.下载一个centos镜像,进入容器,安装wget docker pull centos docker run -it centos bash [root@web1 ~]# docker run -it centos bash #进入容器 [root@4f1f1ca319f2 /]# [root@4f1f1ca319f2 /]# [root@4f1f1ca319f2 / ]# cd [root@4f1f1ca319f2 ~]# ls anaconda-ks.cfg [root@4f1f1ca319f2 ~]# cd /etc/yum.repos.d/ #配置 7.6.1810/extras/x86_64/Packages/epel-release-7-11.noarch.rpm 3.安装软件,比如nginx yum install nginx -y 二、制作镜像 说明,下面制作镜像先用之前的nginx镜像做的副本,下面才是centos镜像 1.使用docker commit 来提交容器副本 -m 提交时的描述文字 dock commit -m 容器 镜像名 docker

    68710发布于 2019-11-25
  • 来自专栏技术文献

    Docker镜像原理 aufs overlay overlay2

    /work) OverlayFS(overlay2)的镜像分层与共享   overlay驱动只工作在一个lower OverlayFS层之上,因此需要硬链接来实现多层镜像,但overlay2驱动原生地支持多层 overlay2镜像和容器的磁盘结构   docker pull ubuntu下载了包含5层的镜像,可以看到在/var/lib/docker/overlay2中,有6个目录。 因此,你的应用需要能够处理EXDEV,并且回滚操作,执行替代的“拷贝和删除”策略。 以copy-up操作为例,加入你的应用调用了fd1=open("foo", O_RDONLY) 和 fd2=open("foo", O_RDWR),你的应用期望fd1和fd2指向同一个文件,然而,因为copy-up 另外,overlay与overlay2相比,overlay2支持了多层镜像,优化了inode使用。然而,使用这两种驱动时,需要注意你的Docker host的kernel版本。

    8.2K81发布于 2020-08-18
领券