精简你的 docker 镜像

Intro

现在 docker 的使用越来越普遍,今天来谈一下如何精简你的 docker 镜像

为什么要精简 docker

首先来说说为什么要精简 docker 镜像,减小了之后有什么样的好处?

  1. 较小的 docker 镜像下载更快,对于网络不太好的童鞋大镜像简直就是灾难
  2. 较小的 docker 镜像可以更快的部署

如何精简镜像

  1. 选择更小的基础镜像,比如基于 alpine 的基础镜像

    你的镜像是在你选择的基础镜像之上构建的,所以如果你的基础镜像就很大,那么你最后生成的 docker 镜像也不会小

  2. 多阶段构建,将编译和部署放在不同的阶段,只保留最后要部署的镜像即可

    将一些编译的过程和编译需要的环境通过一个中间镜像去完成,而最后生成的镜像只需要包含自己运行所需的运行时环境就可以了,比如说 asp.net core 项目,dotnet core sdk 只需要编译生成的时候需要,实际打包用于部署的应用只需要 dotnet core 的 runtime 就可以了。

  3. 尽量减少 docker 构建提交,比如多个命令写在一起,链式命令,通过一次 docker 的 commit 执行多条命令

    将多个命令写写在一行,链式命令,如果命令很复杂的话也可以通过执行一个脚本,这样可以减少 docker 镜像构建的层,也会减少镜像的大小

Reference

Contact

Contact me: weihanli@outlook.com

精简你的 docker 镜像的更多相关文章

  1. 精简Docker镜像的五种通用方法

    http://dockone.io/article/8163 精简Docker镜像的好处很多,不仅可以节省存储空间和带宽,还能减少安全隐患.优化镜像大小的手段多种多样,因服务所使用的基础开发语言不同而 ...

  2. 精简Docker镜像的几个方法

    一.使用更精简的镜像 常用的Linux系统镜像一般有 Debian.Ubuntu.CentOS和Alpine,其中Alpine是面向安全的轻量级Linux发行版本.Docker的Alpine镜像仅有不 ...

  3. Docker 镜像制作教程:针对不同语言的精简策略

    本系列文章将分为三个部分: 第一部分着重介绍多阶段构建(multi-stage builds),因为这是镜像精简之路至关重要的一环.在这部分内容中,我会解释静态链接和动态链接的区别,它们对镜像带来的影 ...

  4. 记一次,Docker镜像1G多精简至300+M的过程

    记一次,Docker镜像1G多精简至300+M的过程 一.业务场景描述 二.Docker时区不一致,相差8小时 三.通过Docker发布的服务上传文件上传不上去 四.上传的图片带水印,水印中包含的字体 ...

  5. Docker 镜像针对不同语言的精简策略

    导航: 这里分为几个部分. 相关转载云原生:米开朗基杨 1.Docker减小镜像体积 2.Docker镜像针对不同语言的精简策略 对于刚接触容器的人来说,他们很容易被自己制作的 Docker 镜像体积 ...

  6. Docker镜像与容器命令(转)

    Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机).bare metal. ...

  7. Docker镜像细节

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面: 为什么需要Docker? Docker入 ...

  8. 将iso镜像转换为docker镜像

    为什么不用官方的镜像? 不是不想使用,而是官方镜像提供的功能实在是太少了,不信的话,你pull一个ubuntu:latest的进行,你看有没有wget.curl.ssh这些功能,就连最简单的ifcon ...

  9. Docker镜像原理

    ⒈是什么? 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码.运行时.库.环境变量以及配置文件等. 引用 UnionFs( ...

随机推荐

  1. [Swift]LeetCode845. 数组中的最长山脉 | Longest Mountain in Array

    Let's call any (contiguous) subarray B (of A) a mountain if the following properties hold: B.length ...

  2. [Swift]LeetCode917. 仅仅反转字母 | Reverse Only Letters

    Given a string S, return the "reversed" string where all characters that are not a letter  ...

  3. [Swift]LeetCode958. 二叉树的完全性检验 | Check Completeness of a Binary Tree

    Given a binary tree, determine if it is a complete binary tree. Definition of a complete binary tree ...

  4. [Swift]LeetCode962. 最大宽度坡 | Maximum Width Ramp

    Given an array A of integers, a ramp is a tuple (i, j) for which i < j and A[i] <= A[j].  The ...

  5. xtrabackup备份(MySQL备份)与恢复

    xtrabackup备份(MySQL备份)与恢复 1. innobackupex参数选项 --no-timestamp: 不创建一个时间戳 --defaults-file=[MY.CNF] //指定配 ...

  6. Session知识点

    知识点概要    - Session    - CSRF    - Model操作    - Form验证(ModelForm)    - 中间件    - 缓存    - 信号 内容详细: 1. S ...

  7. asp.net core 系列 5 MVC框架路由(上)

    一. 概述 介绍asp.net core路由时,我初步想了下,分几篇来说明.  路由的知识点很多,参考了官方文档提取出一些重要的知识点来说.    在ASP.NET Core中是使用路由中间件来匹配传 ...

  8. 带着萌新看springboot源码03

    上一节讲到了快速新建一个springboot应用,以及springboot的自动配置类起作用的时机,并且一起看了一个自动配置类的源码. 这一节我们来粗略看看当用户在浏览器输入一个url,怎么样返回一个 ...

  9. python:pip命令使用

    pip命令安装库  pip install 库名 使用pip命令更新库 pip install --upgrade 库名 比如更新scikit-learn包 pip install --upgrade ...

  10. leetcode — best-time-to-buy-and-sell-stock

    /** * Source : https://oj.leetcode.com/problems/best-time-to-buy-and-sell-stock/ * * * Say you have ...