常用镜像记录
source link: https://studygolang.com/articles/29474
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
基础镜像
Scratch
空镜像,也是源镜像,本身镜像不占空间。
市场上所有的镜像都是基于它扩展的。使用它构建的镜像大小几乎和二进制文件本身一样大,适合运行一个包含所有依赖的二进制文件,如 Golang
程序、无依赖的 C
程序等。
构建一个 centos
镜像:
FROM scratch ADD centos-7-x86_64-docker.tar.xz / CMD ["/bin/sh"]
构建一个二进制执行文件的镜像:
FROM scratch ADD server / CMD ["/server"]
Busybox
镜像大小: 1.22MB
拉取: docker pull busybox
Busybox
在单一的可执行文件中提供了精简的 Unix
工具集,可运行于多款 POSIX
环境的操作系统,由于 BusyBox
可执行文件的文件比较小,使得它非常适合使用于嵌入式系统。
该镜像也补充了一些常用的 linux
命令和基础网络配置,其构建的 Dockerfile
如下:
FROM scratch ADD busybox.tar.xz / CMD ["sh"]
打开 busybox.tar.xz
,目录结构如下:
微信截图_20200622082103.png
从文件目录上可以看出,集成的文件主要在 /bin
和 etc
目录下:
-
/bin
目录下主要放置一些常用命令微信截图_20200622082153.png
-
/etc
目录下补充了一些主机,权限,网络配置等信息。
Alpine
镜像大小: 2.67 MB
拉取: docker pull alpine
Alpine Linux是一个由社区开发的Linux操作系统,该操作系统以安全为理念,面向 x86
路由器、防火墙、虚拟专用网、IP电话盒及服务器而设计。由于其体积小,通常用于提供快速启动时间的容器中。
它是生产环境上比较推荐使用的基础镜像,原因有以下几点:
- 包含基础的
linux
命令。 - 官方更新很快,社区活跃,漏洞较少。
- 支持目前市面上大部分
x86-64
指令集架构类型的机器。 - 还提供了可扩展的包管理机制,让你可以使用
apk add
命令(类似centos
的yum install
)让你div
自己的镜像。
在基础镜像上直接组装,如果添加一个 curl
命令,那么你的 dockerfile
可以这么写:
FROM alpine:3.12.0 RUN apk add --no-cache curl CMD ["/bin/sh"]
Java镜像
frolvlad/alpine-java
镜像大小: 168.3MB
拉取: docker pull frolvlad/alpine-java
JDK8
镜像,移除了一些JDk包中的源码,可视化等多余文件, Dockerfile
如下:
FROM frolvlad/alpine-glibc:alpine-3.9 ENV JAVA_VERSION=8 \ JAVA_UPDATE=202 \ JAVA_BUILD=08 \ JAVA_PATH=1961070e4c9b4e26a04e7f5a083f551e \ JAVA_HOME="/usr/lib/jvm/default-jvm" RUN apk add --no-cache --virtual=build-dependencies wget ca-certificates unzip && \ cd "/tmp" && \ wget --header "Cookie: oraclelicense=accept-securebackup-cookie;" \ "http://download.oracle.com/otn-pub/java/jdk/${JAVA_VERSION}u${JAVA_UPDATE}-b${JAVA_BUILD}/${JAVA_PATH}/jdk-${JAVA_VERSION}u${JAVA_UPDATE}-linux-x64.tar.gz" && \ tar -xzf "jdk-${JAVA_VERSION}u${JAVA_UPDATE}-linux-x64.tar.gz" && \ mkdir -p "/usr/lib/jvm" && \ mv "/tmp/jdk1.${JAVA_VERSION}.0_${JAVA_UPDATE}" "/usr/lib/jvm/java-${JAVA_VERSION}-oracle" && \ ln -s "java-${JAVA_VERSION}-oracle" "$JAVA_HOME" && \ ln -s "$JAVA_HOME/bin/"* "/usr/bin/" && \ rm -rf "$JAVA_HOME/"*src.zip && \ rm -rf "$JAVA_HOME/lib/missioncontrol" \ "$JAVA_HOME/lib/visualvm" \ "$JAVA_HOME/lib/"*javafx* \ "$JAVA_HOME/jre/lib/plugin.jar" \ ......省略若干 "$JAVA_HOME/jre/lib/oblique-fonts" && \ wget --header "Cookie: oraclelicense=accept-securebackup-cookie;" \ "http://download.oracle.com/otn-pub/java/jce/${JAVA_VERSION}/jce_policy-${JAVA_VERSION}.zip" && \ unzip -jo -d "${JAVA_HOME}/jre/lib/security" "jce_policy-${JAVA_VERSION}.zip" && \ rm "${JAVA_HOME}/jre/lib/security/README.txt" && \ apk del build-dependencies && \ rm "/tmp/"* && \
需要特殊注意的时,该镜像也是基于 alpine
基础镜像构建起来的, Layer
层次是 alpine -> glibc - > jdk
,有兴趣的小伙伴可以深究下。
操作系统镜像
Centos
镜像大小: 71.4MB
拉取: docker pull centos
Ubuntu
镜像大小: 27.27MB
拉取: docker pull ubuntu
欢迎关注我们的微信公众号,每天学习Go知识
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK