基础镜像: centos7.5

进入容器后, 先后安装了 jdk1.8, maven3.6.0, git, rocketmq4.3.2

安装完成后使用 docker commit 命令保存为镜像

结果跑了半天以后终于保存下来一看竟然有 3.3G 的大小

我勒个去

去网上查了一番以后发现一个问题

由于docker镜像的构建方式是以层的概念来实现的

就是说我在容器内所做的所有操作都会在构建镜像时运行一遍

所以每一个操作所涉及到的内存空间, 都会成为镜像文件的一部分

比如我在容器内下载了rocketmq的源码, 并在里面编译安装完成

随后我把源码删掉了, 可是实际上他已经被深深地刻在了镜像上

投机取巧:

将已经安装好各个软件的容器中的相关文件download到宿主机的/home/package目录下

比如我这里的:

  /usr/local/jdk1.8

  /usr/local/maven3.6.0

  /usr/local/rocketmq4.3.2

随后使用基础centos镜像打开一个新容器, 并把这些文件挂载到容器内:

docker run -it -v /home/package:/usr/local --privileged=true <centos镜像id> /bin/bash

进入容器后, 只需要修改 /root/.bashrc 文件, 设置一下环境变量

然后 docker commit 此容器

这样构建下来的镜像大小是 300+M (centos基础镜像为202M)

算是一波大瘦身吧. 当然是用dockerfile应该会更小

但是我现在还不会写, 再说吧!

Docker commit 命令保存的镜像文件太大的问题的更多相关文章

  1. docker commit命令创建新的镜像

    docker commit命令创建新的镜像 1.运行容器 2.修改容器 3.将容器保存为新容器 (1)运行容器 [root@cmdb-server docker]# docker run -ti ce ...

  2. docker 构建自己的image 镜像文件

    docker build 构建自己的镜像文件. 1.在本地工程中运行生成一个springboot的可运行的jar. 因为我习惯用eclipse,所以在eclipse下新建一个springboot的工程 ...

  3. docker commit命令

    docker commit命令用于基于一个容器来创建一个新的docker镜像. docker commit制作的镜像,除了制定镜像的人知道执行过什么命令,怎么生成的镜像,别人根本无从得知.建议使用的是 ...

  4. /var/adm/wtmp文件太大该怎么办?

    /var/admin/wtmp文件记录所有用户的登陆信息,随着时间会增长到很大,/var/adm/wtmp文件太大该怎么办呢?先来看看/var/adm/wtmp文件的属性:testterm1:/#ls ...

  5. Mysql文件太大导入失败解决办法总结

    Mysql文件太大导入失败解决办法总结 在使用phpmyadmin导入数据库的时候可能会碰到由于数据库文件太大而无法导入的问题! 英文提示如下:File exceeds the maximum all ...

  6. jvm内存快照dump文件太大,怎么分析

    1.场景 通常,使用eclipse的mat图形化工具打开dump的时候都会内存溢出. 对于比较小的dump,eclipse可以打开,但一旦dump文件太大,eclipse就有点束手无策. 这时候怎么办 ...

  7. [转]MySql ibdata1文件太大如何缩小

    From : http://blog.chinaunix.net/uid-24373487-id-4223322.html 原文地址:MySql ibdata1文件太大如何缩小 作者:emailwht ...

  8. Sql 脚本文件太大 还原数据库

    sql脚本太大直接在数据库中执行会提示内存不足,我们看生成的脚本文件会发现每隔100条会有一个GO来分隔,这就好说了 在我将数据库的结构连同数据生成一个脚本文件db.sql 后,想在另外的电脑上恢复数 ...

  9. 生成的API分析文件太大。我们无法在交付前验证您的API使用信息。这只是通知信息。

    这次使用了APICloud平台来开发移动APP, 发布的时候在api控制台云编译成ipa后,这次使用apple提供的Application Loader工具提交apa文件到iTunes上去,提交结束的 ...

随机推荐

  1. Git 操作命令

    一.Git 基本配置 1.配置 命令:git config --global  prop_name prop_value 如配置git用户名与邮箱: git config --global user. ...

  2. POJ 1015 Jury Compromise (算竞进阶习题)

    01背包 我们对于这类选或者不选的模型应该先思考能否用01背包来解. 毫无疑问物体的价值可以看成最大的d+p值,那么体积呢?题目的另一个限制条件是d-p的和的绝对值最小,这启发我们把每个物体的d-p的 ...

  3. 本机Jenkins的使用

    1.启动jenkins: 命令:java -jar D:\toolspackage\jenkins\jenkins.war  打开jenkins网页:http://localhost:8080/ 2. ...

  4. 【转】C语言堆栈入门——堆和栈的区别

    @2019-04-25 [小记] C语言堆栈入门——堆和栈的区别

  5. node配置环境变量

    package.json "scripts": { "start_test": "cross-env BUILD_ENV=dev nuxt start ...

  6. golang中使用mysql数据库

    安装 安装mysql驱动 go get github.com/go-sql-driver/mysql 安装sqlx驱动 go get github.com/jmoiron/sqlx 一.插入数据库 p ...

  7. (一)V4L2学习流程

    title: V4L2学习流程 date: 2019/4/23 18:00:00 toc: true --- V4L2学习流程 参考资料 关键资料,插图让人一下子就理解了 Linux摄像头驱动1--v ...

  8. [源码分析]StringBuffer

    [源码分析]StringBuffer StringBuffer是继承自AbstractStringBuilder的. 这里附上另外两篇文章的连接: AbstractStringBuilder : ht ...

  9. 为什么单片机中既有Flash又有EEPROM

    单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM 中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM 或FLASHROM 等存储器来实现. 插播一段:ROM ...

  10. Java(20)file i/o

    1 I/0: input/output 1.1.java.io.File 1.2  表示:文件或者文件夹(目录) 1.3 File f = new File("文件路径"); 1. ...