资讯专栏INFORMATION COLUMN

如何让docker镜像尽可能小

cncoder / 2020人阅读

摘要:有问题请关注我的如何让镜像尽可能小很容器想到就是没任何基础镜像有几点要注意或者必须要用这种模式,如果直接会用去启动,而没有导致失败二进制程序必须静态编译,也就是不能依赖什么的动态库动态编译的程序这种情况下出来的程序可能会出现问

有问题请关注我的github: https://github.com/fanux

如何让镜像尽可能小

很容器想到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就是那么做的

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27064.html

相关文章

  • 从最简单的入手学习 Docker (一)

    摘要:根据不同的项目,使用不同的镜像,搭建开发环境而每一个应用有自己一个独立的运行环境,互不干扰。如何测试人员还是运维人员,也可以根据最新版本的镜像来测试和部署新的测试环境和生产环境。下一步我们从如何利用已有的运行项目来进一步掌握。 showImg(https://segmentfault.com/img/remote/1460000011106825); 什么是 Docker Docke...

    blastz 评论0 收藏0
  • 从最简单的入手学习 Docker (一)

    摘要:根据不同的项目,使用不同的镜像,搭建开发环境而每一个应用有自己一个独立的运行环境,互不干扰。如何测试人员还是运维人员,也可以根据最新版本的镜像来测试和部署新的测试环境和生产环境。下一步我们从如何利用已有的运行项目来进一步掌握。 showImg(https://segmentfault.com/img/remote/1460000011106825); 什么是 Docker Docke...

    livem 评论0 收藏0
  • docker 新手向 - 防止容器自动退出的解决方案

    摘要:其实我们可以更优雅的使用容器的和参数来将系统必有命令作为前置命令开启常驻运行,如此容器便不会自动退出了。 本文主要简单介绍 docker 容器与前置进程的关系,以及如何编写 Dockerfile/docker-compose.yml 优雅的让容器可以常驻运行。 docker 容器的生命周期是同容器中的前置进程相关在一起的,这也是我们平时可能会遇到一些容器只是运行几秒便自动退出的原因:因...

    Miyang 评论0 收藏0
  • 创建可能Docker 容器

    摘要:我一直在寻找尽可能小的容器入手,并且发现了一个镜像是完美的,真正的完美它简洁,小巧以及快速。所以这可能就是最小的镜像。尽管如此,这样看起来会很复杂并且导致容器很大。 注:本文由 Adriaan de Jonge 编写,本文的原文地址为 Create The Smallest Possible Docker Container 当我们在使用 Docker 的时候,你会很快注意到...

    yankeys 评论0 收藏0
  • 如何构建一个简单的CAAS系统

    摘要:在系统出现前企业应用架构基本被等模式垄断,直到的出现为我们打开了另一个扇大门,废话不说了,我们直奔主题我们先了解下一个简单的系统是如何为用户提供服务的企业用户上传它的应用代码或其他代码托管方式,我们生成用户应用的镜像,或者用户直接上传镜像或 在CAAS系统出现前企业应用架构基本被IAAS/SAAS/PAAS等模式垄断,直到docker的出现为我们打开了另一个扇大门,废话不说了,我们直奔...

    wpw 评论0 收藏0

发表评论

0条评论

cncoder

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<