buildpack-deps 是docker hub 官方提供的一个构建类似heroku stack 镜像的工具包,如果自己看的话,好多docker 官方的基础镜像都基于此基础镜像

进行构建的,buildpack-deps 已经提供了好多内置好多依赖库,可以简化我们的镜像部署,同时官方也提供了debian以及ubuntu 等的镜像,很值得使用

参考镜像构建

golang 官方

FROM buildpack-deps:buster-scm

?

# gcc for cgo

RUN apt-get update && apt-get install -y --no-install-recommends

g++

gcc

libc6-dev

make

pkg-config

&& rm -rf /var/lib/apt/lists/*

?

ENV PATH /usr/local/go/bin:$PATH

?

ENV GOLANG_VERSION 1.14.6

?

RUN set -eux;

# this "case" statement is generated via "update.sh"

dpkgArch="$(dpkg --print-architecture)";

case "${dpkgArch##*-}" in

amd64) goRelArch=‘linux-amd64‘; goRelSha256=‘5c566ddc2e0bcfc25c26a5dc44a440fcc0177f7350c1f01952b34d5989a0d287‘ ;;

armhf) goRelArch=‘linux-armv6l‘; goRelSha256=‘cab39cc0fdf9731476a339af9d7bcd8fc661bfa323abb1ce9d1633fb31daeb07‘ ;;

arm64) goRelArch=‘linux-arm64‘; goRelSha256=‘291bccfd7d7f1915599bbcc90e49d9fccfcb0004b7c62a2f5cdf0f96a09d6a3e‘ ;;

i386) goRelArch=‘linux-386‘; goRelSha256=‘17b2c4e26bd3a82a0a44499ae2d36e3f2155d0fe2f6b9a14ac6b7c5afac3ca6a‘ ;;

ppc64el) goRelArch=‘linux-ppc64le‘; goRelSha256=‘8eb4c84e7b6aa9edb966c467dd6764d131a57d27afbd87cc8f6d10535df9e898‘ ;;

s390x) goRelArch=‘linux-s390x‘; goRelSha256=‘cb1f2d001ce15e51f7c4bd43f15045ea23d49268010bb981110242a532138749‘ ;;

*) goRelArch=‘src‘; goRelSha256=‘73fc9d781815d411928eccb92bf20d5b4264797be69410eac854babe44c94c09‘;

echo >&2; echo >&2 "warning: current architecture ($dpkgArch) does not have a corresponding Go binary release; will be building from source"; echo >&2 ;;

esac;

url="https://golang.org/dl/go${GOLANG_VERSION}.${goRelArch}.tar.gz";

wget -O go.tgz "$url" --progress=dot:giga;

echo "${goRelSha256} *go.tgz" | sha256sum -c -;

tar -C /usr/local -xzf go.tgz;

rm go.tgz;

# https://github.com/golang/go/issues/38536#issuecomment-616897960

if [ "$goRelArch" = ‘src‘ ]; then

savedAptMark="$(apt-mark showmanual)";

apt-get update;

apt-get install -y --no-install-recommends golang-go;

goEnv="$(go env | sed -rn -e ‘/^GO(OS|ARCH|ARM|386)=/s//export /p‘)";

eval "$goEnv";

[ -n "$GOOS" ];

[ -n "$GOARCH" ];

(

cd /usr/local/go/src;

./make.bash;

);

apt-mark auto ‘.*‘ > /dev/null;

apt-mark manual $savedAptMark > /dev/null;

apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false;

rm -rf /var/lib/apt/lists/*;

# pre-compile the standard library, just like the official binary release tarballs do

go install std;

# go install: -race is only supported on linux/amd64, linux/ppc64le, linux/arm64, freebsd/amd64, netbsd/amd64, darwin/amd64 and windows/amd64

#   go install -race std;

# remove a few intermediate / bootstrapping files the official binary release tarballs do not contain

rm -rf

/usr/local/go/pkg/*/cmd

/usr/local/go/pkg/bootstrap

/usr/local/go/pkg/obj

/usr/local/go/pkg/tool/*/api

/usr/local/go/pkg/tool/*/go_bootstrap

/usr/local/go/src/cmd/dist/dist

;

fi;

go version

?

ENV GOPATH /go

ENV PATH $GOPATH/bin:$PATH

RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"

WORKDIR $GOPATH

说明

cncf 的buildpacks 也是一个很不错的选择,目前还在孵化中, 同时cloudfoundry 基于buildpacks模式也已经提供了好多语言的支持

参考资料

https://github.com/docker-library/buildpack-deps

https://hub.docker.com/_/buildpack-deps/

https://github.com/heroku/stack-images/

https://github.com/buildpacks

使用buildpack-deps 构建自己的入容器镜像

linux pack文件镜像,使用buildpack-deps 构建自己的入容器镜像相关推荐

  1. 如何构建尽可能小的容器镜像?

    关注我们获得更多内容 这是Google Developer Advocate Sandeep Dinesh 关于如何充分利用Kubernetes环境的七部分视频和博客系列的第一部分. 主要讲保持容器镜 ...

  2. docker java 最小镜像_Docker多步构建更小的Java镜像

    [编者的话]最新版Docker将支持多步构建(Multi-stage build),这样使用单个Dockerfile就可以定义多个中间镜像用于构建,测试以及发布等多个步骤,并且有效减小最终镜像的大小. ...

  3. 手动构建自己的docker容器镜像实战

    前言 之前的实战中,我们实战中,我们使用的镜像都是镜像仓库已有的镜像. 已有的镜像都是别人已经开发好上传的.今天我们一起来看看如何构建自己的镜像并上传到镜像仓库中.

  4. 多平台容器镜像构建就看这一篇

    前言 愿景与现实 早在1995年,就有"write once and run anywhere"(WORA,编写一次即可在任何地方运行)用于描述 Java 应用程序.时过20年,D ...

  5. 容器云java开发_使用码云构建 Docker 容器镜像并部署到华为云

    华为公有云平台的容器镜像服务开放了对码云代码库的支持. 华为云平台的容器镜像服务(SWR),能够支持从源码到镜像.从镜像到应用的容器镜像全生命周期的管理服务,为用户提供简单易用.安全可靠的镜像管理功能 ...

  6. 对容器镜像的思考和讨论

    作者 | Liu,Bo 来源|阿里巴巴云原生公众号 前言 常言道,startup 有 startup 的好,大厂有大厂的好,那么大厂究竟好在哪呢?拿硅谷老牌大厂们 FLG 来说,如果要问最令人怀念的是 ...

  7. 云原生时代,如何保证容器镜像安全?

    目录 遵从最佳实践,编写 Dockerfile 选择合适的基础镜像 以非 root 用户启动容器 采用多阶段构建 选择来源可靠且经常更新的镜像 用安全的方式构建容器镜像 使用容器镜像扫描 和极狐 Gi ...

  8. 容器学习Day09-理解容器镜像

    目录 前言 一.理解容器镜像 1.什么是容器镜像? 2.容器镜像结构 3.容器镜像技术实现 二.镜像仓库 1.Repository 2.Registry 三.镜像的拉取和删除 1.查找镜像 2.拉取镜 ...

  9. 【云原生】第四篇--Docker容器镜像介绍及应用

    Docker容器镜像介绍及应用 一.Docker容器镜像操作 1.1 查看本地容器镜像 1.1.1 使用docker images命令查看 1.1.2 使用docker image命令查看 1.1.3 ...

  10. docker.4.2-Docker容器镜像

    Docker容器镜像 一.Docker容器镜像操作 2.1 查看本地容器镜像 2.1.1 使用docker images命令查看 # docker images REPOSITORY TAG IMAG ...

最新文章

  1. tf.matmul / tf.multiply
  2. 手把手教你学Vue-3(路由)
  3. easyui 下拉框用法
  4. 获取某一周_“双十一”前,这群人备好了3600瓶假冒某品牌护肤品,结果……...
  5. 【正一专栏】中国足球不是你想不玩就不玩的
  6. 2.Riesz定理及其应用
  7. Python 关于super 的 用法和原理(挖坑)
  8. python数组随机分组_Python实用黑科技——以某个字段进行分组
  9. 工作原理_逆变器工作原理
  10. java接口方法默认权限_java 接口内定义方法的权限是什么?
  11. 安装EXSI遇到No Network Adapters的解决方案
  12. 从C语言到C++的进阶之C++的非类新特性(篇二)
  13. 课程管理系统c语言程序,课程信息管理系统C语言程序Word版
  14. 获取2个集合ListT的共同元素
  15. MFC实战项目——超市管理系统
  16. pdf2docx:Python实现PDF转Word
  17. IntelliJ IDEA使用教程
  18. 论文阅读笔记(11):Adaptive Self-Paced Deep Clustering with Data Augmentation,用数据增强的自适应Self-Paced深度聚类
  19. mysql phpwind_php+mysql及phpwind和wordpress的安装配置
  20. Bailian1664 Placing apples【递推+记忆化递归】

热门文章

  1. 动态添加、删除文本框
  2. 常用的数字正则表达式
  3. 机械硬盘换固态硬盘重装系统
  4. 如何看懂公司的财务报表(2)
  5. 穿越沙漠问题c语言算法,沙漠穿越问题_c语言课程设计(9页)-原创力文档
  6. 算法竞赛入门经典(紫书)第四章——Spreadsheet Tracking UVA-512
  7. 怎么彻底卸载cad2017_Win10系统怎么彻底卸载cad【图文教程】
  8. 公众号网课搜题API系统对接教程
  9. 学计算机的用hd620,hd620显卡能学C4D吗
  10. 锐炬显卡和独立显卡有什么不同?