美文网首页docker
使用alpine构建基础镜像

使用alpine构建基础镜像

作者: 夏胖运维 | 来源:发表于2021-09-14 23:48 被阅读0次

    1. alpine介绍

    Alpine Linux是体积最小的Linux发行版,它重点关注于安全和速度。使用apk能够很快地安装软件包,默认情况下,镜像只包含了完成基础UNIX任务所需要的东西 ,因此相对于其它Docker基础镜像,体积会更小。

    2. alpine包管理基本命令

    Alpine使用apk进行包管理,下面介绍一些常用的包管理命令:

    2.1. 更新最新镜像源列表:apk update

    apk update
    

    2.2. 搜索软件包:apk search

    apk search                # 查找所以可用软件包
    apk search -v             # 查找所以可用软件包及其描述内容
    apk search -v 'acf*'      # 通过软件包名称查找软件包
    apk search -v -d 'docker' # 通过描述文件查找特定的软件包
    

    2.3. 安装软件包:apk add

    apk add openssh                  # 安装一个软件
    apk add openssh openntp vim      # 安装多个软件
    apk add --no-cache mysql-client  # 不使用本地镜像源缓存,相当于先执行update,再执行add
    

    2.4. 列出已安装的软件包:apk info

    apk info               # 列出所有已安装的软件包
    apk info -a zlib       # 显示完整的软件包信息
    apk info --who-owns /sbin/lbu # 显示指定文件属于的包
    

    2.5. 升级软件版本:apk upgrade

    apk upgrade                       # 升级所有软件
    apk upgrade openssh               # 升级指定软件
    apk upgrade openssh openntp vim   # 升级多个软件
    apk add --upgrade busybox         # 指定升级部分软件包
    

    2.6. 删除软件包:apk del

    apk del openssh  # 删除一个软件
    

    3. 使用alpine系统构建基础镜像

    3.1. 基础alpine镜像

    FROM alpine:3.9.2
    
    # 更新最新镜像源列表
    RUN apk update
    
    # 设置Docker 时间为上海时区
    RUN apk add -U tzdata
    RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    RUN echo "Asia/shanghai" >> /etc/timezone
    
    # 依次安装命令:curl、scp、telnet
    RUN apk add curl
    RUN apk add openssh-client
    RUN apk add busybox-extras
    
    # 这里添加top命令是为了方便本地测试,防止启动该基本镜像容器后自动运行停止
    ENTRYPOINT ["top"]
    

    3.2. 基于Java jdk的镜像构建

    由于java:8-alpine里面已有telnet,不需再重新安装,添加已有安装包的话会出现以下类似错误:

    jdk7的话只需修改java:8-alpine为java:7-alpine即可

    例子:

    FROM java:8-alpine
    
    # 更新最新镜像源列表
    RUN apk update
    
    
    # 设置Docker 时间为上海时区
    RUN apk add -U tzdata
    RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    RUN echo "Asia/shanghai" >> /etc/timezone
    
    
    # 依次安装命令:curl、scp、
    RUN apk add curl
    RUN apk add openssh-client
    
    ENTRYPOINT ["top"]
    

    3.3. 构建过程中遇到的一些问题

    3.3.1. 如何打包curl、scp、telnet基本命令至镜像中

    添加RUN命令,采用apk add 的方式添加所需的软件包

    # 更新最新镜像源列表
    RUN apk update
    
    # 依次安装命令curl、scp、telnet
    RUN apk add curl
    RUN apk add openssh-client
    RUN apk add busybox-extras
    

    3.3.2. 如何更新为中国时区

    alpine中没有时区数据包,如果单单拷贝本机的时区文件进docker镜像中,会抛出类似以下的异常:

    因此,需先在alpine镜像中安装timezone 数据包,再拷贝文件

    # 设置Docker 时间为上海时区
    RUN apk add -U tzdata
    RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    RUN echo "Asia/shanghai" >> /etc/timezone
    

    相关文章

      网友评论

        本文标题:使用alpine构建基础镜像

        本文链接:https://www.haomeiwen.com/subject/bvahgltx.html