26

常用镜像记录

 4 years ago
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.
neoserver,ios ssh client

基础镜像

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 ,目录结构如下:

JnqMVjA.png!web

微信截图_20200622082103.png

从文件目录上可以看出,集成的文件主要在 /binetc 目录下:

  • /bin 目录下主要放置一些常用命令

    juMzUzU.png!web

    微信截图_20200622082153.png

  • /etc 目录下补充了一些主机,权限,网络配置等信息。

Alpine

镜像大小: 2.67 MB
拉取: docker pull alpine

版本号 发布日期 支持结束日期 Linux内核版本 镜像大小(x86-64) 3.2 2015-05-26 2017-05-01 3.18.xx 2.45 MB 3.3 2016-01-06 2017-11-01 4.1.xx 2.29 MB 3.4 2016-05-31 2018-05-01 4.4.xx 2.28 MB 3.5 2016-12-22 2018-11-01 4.4.xx 1.88 MB 3.6 2017-05-24 2019-05-01 4.9.xx 1.92 MB 3.7 2017-11-30 2019-11-01 4.9.xx 2.01 MB 3.8 2018-06-26 2020-05-01 4.14.xx 2.1 MB 3.9 2019-01-29 2020-11-01 4.19.xx 2.63 MB 3.10 2019-06-19 2021-05-01 4.19.xx 2.66 MB 3.11 2019-12-19 2021-11-01 5.4.xx 2.76 MB 3.12 2020-05-29 2022-05-01 5.4.xx 2.67 MB

Alpine Linux是一个由社区开发的Linux操作系统,该操作系统以安全为理念,面向 x86 路由器、防火墙、虚拟专用网、IP电话盒及服务器而设计。由于其体积小,通常用于提供快速启动时间的容器中。

官方镜像地址

官网地址

它是生产环境上比较推荐使用的基础镜像,原因有以下几点:

  • 包含基础的 linux 命令。
  • 官方更新很快,社区活跃,漏洞较少。
  • 支持目前市面上大部分 x86-64 指令集架构类型的机器。
  • 还提供了可扩展的包管理机制,让你可以使用 apk add 命令(类似 centosyum 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知识

FveQFjN.jpg!web

Recommend

  • 37
    • segmentfault.com 4 years ago
    • Cache

    Docker常用镜像基本操作

    Docker Docker镜像的首行从FROM alpine之类的镜像开始,但是最初的基础镜像是如何创建的,本文使用一个busybox创建...

  • 7

    记录一次磁盘镜像的LVM分区缩小调整过程 拿到镜像是这样的。 $ fdisk -l OMP120.imgDisk OMP120.img: 29.8 GiB, 31937527808 bytes, 62377984 sectorsUn...

  • 11
    • maxqiu.com 3 years ago
    • Cache

    Docker常用镜像:OpenJDK

    Docker常用镜像:OpenJDKDocker常用镜像:OpenJDK 2020-02-12  Java  Docker 以OpenJDK8为例 仓库地址以及教程:http...

  • 6

    Docker常用镜像:Nacos(单机版 + 使用MySQL数据源)Docker常用镜像:Nacos(单机版 + 使用MySQL数据源) 2021/07/21  Linux 以nacos-server-2.0.2为例

  • 7
    • maxqiu.com 3 years ago
    • Cache

    Docker常用镜像:RabbitMQ

    不多废话,直接上生产环境单节点推荐安装方式(含死信插件) docker pull rabbitmq:3.9.7-management 准备文件夹# 创建rabbitmq相关文件夹

  • 7
    • www.sqlsec.com 3 years ago
    • Cache

    Docker 常用镜像整理

    Docker 搭建靶场很方便,但是每次搭建靶场找到一个顺手的底层镜像都会消耗不少时间,所以特此花时间写下本文,磨刀不误砍柴工,整理完本文后后面再搭建 Docker 靶场的话,效率就会高很多了。有时候需要一个 PHP 环境,如果不考虑使用数据库的情况下,推...

  • 5

    Yocto 几个常用镜像差异 (以FSL官源为例) core-image-minimal – 最小镜像,不能再这个基础上精简,这个镜像仅仅能启动而很多功能还无法使用,因为缺乏应用层软件, core-image-base – 在core-image-minimal基础上添加...

  • 10

    三种常用IDE下花式生成镜像文件的方法-嵌入式系统-与非网

  • 6

    docker安装之后,启动时会报如下错误: Job for docker.service failed because start of the service was attempted too often. See "systemctl status docker.service" and "journalctl -xe" for details. To force a start use "systemctl re...

  • 10

    V2EX  ›  OpenWrt TP Link XDR6088 安装 OpenWrt 官方镜像记录,同样适用于 6086 与 4288  

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK