kubernetes离线安装包,仅需三步

如何让镜像尽可能小

很容器想到from scratch, 就是没任何基础镜像

FROM scratch
COPY p /
ENTRYPOINT ["/p"]

有几点要注意:

  • ENTRYPOINT 或者CMD 必须要用[]这种模式,如果直接/p会用sh去启动,而scratch没有shell导致失败
  • 二进制程序必须静态编译,也就是不能依赖libc什么的动态库

动态编译的bin程序:

[root@dev-86-205 ci-sftp]# ldd p
    linux-vdso.so.1 =>  (0x00007ffd6ef7b000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa28f94e000)
    libc.so.6 => /lib64/libc.so.6 (0x00007fa28f58d000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fa28fb72000)

这种情况下出来的bin程序可能会出现问题:

standard_init_linux.go:175: exec user process caused "no such file or directory”

静态编译的bin程序,这是我们scratch需要的:

[root@dev-86-205 ci-sftp]# ldd p
    不是动态可执行文件

golang中静态编译命令:

go build --ldflags '-linkmode external -extldflags "-static”'

如果不静态编译那可能得拷贝一堆动态库到镜像中,很多lowB就是那么做的

扫码关注sealyun

探讨可加QQ群:98488045

最小化docker镜像的更多相关文章

  1. 支持HTTP2的cURL——基于Alpine的最小化Docker镜像

    cURL是我喜欢的开源软件之一.虽然cURL的强大常常被认为是理所当然的,但我真心地认为它值得感谢和尊重.如果我们的工具箱失去了curl,那些需要和网络重度交互的人(我们大多数人都是这样的)将会陷入到 ...

  2. 最小化 Java 镜像的常用技巧

    背景 随着容器技术的普及,越来越多的应用被容器化.人们使用容器的频率越来越高,但常常忽略一个基本但又非常重要的问题 - 容器镜像的体积.本文将介绍精简容器镜像的必要性并以基于 spring boot ...

  3. 构建最小JDK Docker镜像

    参考: https://my.oschina.net/shyloveliyi/blog/1627020 1.首先下载jre,下载地址是https://www.java.com/en/download/ ...

  4. 优化 Docker 镜像大小常见方法

    平时我们构建的 Docker 镜像通常比较大,占用大量的磁盘空间,随着容器的大规模部署,同样也会浪费宝贵的带宽资源.本文将介绍几种常用的方法来优化 Docker 镜像大小,这里我们使用 Docker ...

  5. .NETCore 实现容器化Docker与私有镜像仓库管理

    原文:.NETCore 实现容器化Docker与私有镜像仓库管理 一.Docker介绍 Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技 ...

  6. apisix docker镜像构建及插件化开发

    高能劝退:lua开发,适合小白看!!! 前段时间有个项目,用的java程序做网关,压测tps只有1k多点,惨不忍睹. 后来公司有个大佬改用apisix做网关,tps飙升到1w多. 于是对神奇的apis ...

  7. Azure Devops实践(5)- 构建springboot项目打包docker镜像及容器化部署

    使用Azure Devops构建java springboot项目,创建镜像并容器化部署 1.创建一个springboot项目,我用现有的项目 目录结构如下,使用provider项目 在根目录下添加D ...

  8. BI系统打包Docker镜像及容器化部署的具体实现

    在过去的几年中,"云"作为明星热词站在了各种新潮技术之中,你可能使用过,但说不清它的原理:或者是没用过,但听过它的大名:也可能连它的名字都没听过,但你对这只蓝色鲸鱼一定十分眼熟.作 ...

  9. Docker容器化【Docker镜像与容器相关命令】

    # Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...

随机推荐

  1. 棋盘问题 POJ - 1321(dfs)

    #include<iostream> #include<cstdio> #include<cstring> using namespace std; int n, ...

  2. X-Admin&ABP框架开发-数据字典

    在业务型的系统开发中,我们需要维护各种个样的类型,比如客户类型.客户行业.商品类型等等,这些类型往往信息量不多,并且相似度极高,如果采用一类型一表去设计,将会造成极大的工作量,通过将这部分类型的信息进 ...

  3. Codeforces 730B:Minimum and Maximum(交互式问题)

    http://codeforces.com/problemset/problem/730/B 题意:一个交互式问题,给出一个n代表有n个数字,你可以问下标为x和y的数的大小,会给出"> ...

  4. HDU 2888:Check Corners(二维RMQ)

    http://acm.hdu.edu.cn/showproblem.php?pid=2888 题意:给出一个n*m的矩阵,还有q个询问,对于每个询问有一对(x1,y1)和(x2,y2),求这个子矩阵中 ...

  5. NEUOJ 1702:撩妹全靠魅力值(CDQ分治三维偏序)

    http://acm.neu.edu.cn/hustoj/problem.php?id=1702 思路:三维偏序模板题,用CDQ分治+树状数组或者树套树.对于三元组(x,y,z),先对x进行排序,然后 ...

  6. Java中的关键字synchronized

    1. 介绍 在Java并发系列的文章中,这个是第二篇文章.在前面的一篇文章中,我们学习了Java中的Executor池和Excutors的各种类别. 在这篇文章中,我们会学习synchronized关 ...

  7. MySQL login-path 本地快捷登陆

    目录 1.什么是 login-path 2. 配置 login-path 2.2.配置: 2.3.显示配置: 2.3.1.显示执行的login-path配置 2.3.2.显示所有的login-path ...

  8. VS2013日常使用若干技巧+快捷键

    1.注释的方法 1)sqlserver中,单行注释:— —   多行注释:/* 代码  */ 2)C#中,单行注释://    多行注释:/* 代码  */ 3)C#中多行注释的快捷方式:先选中你要注 ...

  9. idea下maven命令打包不同配置

    1. 场景描述 不知道大家有没有遇到过?Idea集成的maven,在切换不同环境配置的时候,有时候反应很慢,还存在切换后打包还是原配置的情况. 2. 问题解决 通过在idea下执行maven命令进行切 ...

  10. Bzoj 1537: [POI2005]Aut- The Bus 题解 [由暴力到正解]

    1537: [POI2005]Aut- The Bus Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 387  Solved: 264[Submit][S ...