zoukankan      html  css  js  c++  java
  • 基于Alpine镜像定制自己的工具箱

    Alpine介绍

    Alpine 操作系统是一个面向安全的轻型 Linux 发行版。目前 Docker 官方已开始推荐使用 Alpine 替代之前的 Ubuntu 做为基础镜像环境。这样会带来多个好处。包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。

    Alpine的特点:

    • 小巧:基于Musl libc和busybox,和busybox一样小巧,最小的Docker镜像只有5MB;
    • 安全:面向安全的轻量发行版;
    • 简单:提供APK包管理工具,软件的搜索、安装、删除、升级都非常方便。
    • 适合容器使用:由于小巧、功能完备,非常适合作为容器的基础镜像。
    # 拉取镜像
    [root@master src]# docker pull alpine
    Using default tag: latest
    latest: Pulling from library/alpine
    df20fa9351a1: Already exists 
    Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321
    Status: Downloaded newer image for alpine:latest
    docker.io/library/alpine:latest
    
    # 查看镜像大小
    [root@master ~]# docker images | grep alpine
    alpine                  latest              a24bb4013296        4 weeks ago         5.57MB
    
    # 运行镜像
    [root@master src]# docker run -it alpine:latest
    / #
    

    Alpine软件包管理

    1. 配置软件源

    Alpine源配置文件

    / # cat /etc/apk/repositories 
    http://dl-cdn.alpinelinux.org/alpine/v3.11/main
    http://dl-cdn.alpinelinux.org/alpine/v3.11/community
    

    由于种种原因,官方源在国内很慢,甚至无法连接,我们将其改为国内镜像源

    / # cat /etc/apk/repositories 
    https://mirrors.aliyun.com/alpine/v3.6/main/
    https://mirrors.aliyun.com/alpine/v3.6/community/
    

    2. 软件包管理

    alpine 提供了非常好用的apk软件包管理工具,可以方便地安装、删除、更新软件。

    查询软件

    / # apk search curl
    lua5.2-curl-0.3.5-r2
    uwsgi-alarm_curl-2.0.17-r0
    py2-curl-7.43.0-r3
    libcurl-7.61.1-r2
    py3-curl-7.43.0-r3
    py-curl-7.43.0-r3
    curl-dev-7.61.1-r2
    lua5.3-curl-0.3.5-r2
    curl-7.61.1-r2
    asterisk-curl-14.7.8-r0
    php7-curl-7.1.17-r0
    curl-dbg-7.61.1-r2
    uwsgi-curl_cron-2.0.17-r0
    lua5.1-curl-0.3.5-r2
    lua-curl-0.3.5-r2
    curl-doc-7.61.1-r2
    php5-curl-5.6.40-r0
    collectd-curl-5.6.2-r1
    gst-plugins-bad1-1.10.4-r1
    

    安装软件

    / # apk add curl
    fetch https://mirrors.aliyun.com/alpine/v3.6/main/x86_64/APKINDEX.tar.gz
    fetch https://mirrors.aliyun.com/alpine/v3.6/community/x86_64/APKINDEX.tar.gz
    (1/6) Installing libressl2.5-libcrypto (2.5.5-r2)
    (2/6) Installing ca-certificates (20161130-r3)
    (3/6) Installing libssh2 (1.8.2-r0)
    (4/6) Installing libressl2.5-libssl (2.5.5-r2)
    (5/6) Installing libcurl (7.61.1-r2)
    (6/6) Installing curl (7.61.1-r2)
    Executing busybox-1.31.1-r9.trigger
    Executing ca-certificates-20161130-r3.trigger
    OK: 9 MiB in 20 packages
    

    卸载软件

    / # apk del curl
    (1/6) Purging curl (7.61.1-r2)
    (2/6) Purging libcurl (7.61.1-r2)
    (3/6) Purging ca-certificates (20161130-r3)
    Executing ca-certificates-20161130-r3.post-deinstall
    (4/6) Purging libressl2.5-libssl (2.5.5-r2)
    (5/6) Purging libssh2 (1.8.2-r0)
    (6/6) Purging libressl2.5-libcrypto (2.5.5-r2)
    Executing busybox-1.31.1-r9.trigger
    OK: 6 MiB in 14 packages
    

    apk使用帮助信息

    / # apk --help
    apk-tools 2.10.4, compiled for x86_64.
    
    Installing and removing packages:
      add       Add PACKAGEs to 'world' and install (or upgrade) them, while ensuring that all dependencies are met
      del       Remove PACKAGEs from 'world' and uninstall them
    
    System maintenance:
      fix       Repair package or upgrade it without modifying main dependencies
      update    Update repository indexes from all remote repositories
      upgrade   Upgrade currently installed packages to match repositories
      cache     Download missing PACKAGEs to cache and/or delete unneeded files from cache
    
    Querying information about packages:
      info      Give detailed information about PACKAGEs or repositories
      list      List packages by PATTERN and other criteria
      dot       Generate graphviz graphs
      policy    Show repository policy for packages
    
    Repository maintenance:
      index     Create repository index file from FILEs
      fetch     Download PACKAGEs from global repositories to a local directory
      verify    Verify package integrity and signature
      manifest  Show checksums of package contents
    
    Use apk <command> --help for command-specific help.
    Use apk --help --verbose for a full command listing.
    
    This apk has coffee making abilities.
    

    基于Alpine定制带有curl的镜像

    FROM alpine
    RUN echo "https://mirrors.aliyun.com/alpine/v3.6/main/" > /etc/apk/repositories
    RUN echo "https://mirrors.aliyun.com/alpine/v3.6/community/" >> /etc/apk/repositories
    RUN ["apk","update"]
    RUN ["apk","add","curl"]
    # 默认是没有开启缓存的,所以装完也不用清缓存
    

    alpine linux 安装包报错

    WARNING: Ign解决办法

    apk add gcc 时候报错

    WARNING: Ignoring APKINDEX.167438ca.tar.gz: No such file or directory
    WARNING: Ignoring APKINDEX.a2e6dac0.tar.gz: No such file or directory
    ERROR: unsatisfiable constraints:
    gcc (missing):
    required by: world[gcc]

    解决办法
    apk update

  • 相关阅读:
    jQuery取得select选择的文本与值
    jquery 广告效果
    【JNI知识一】JNI接口函数与指针
    jQuery 中bind(),live(),delegate(),on() 区别(转)
    用angular怎么缓存父页面数据
    js条件判断时隐式类型转换
    常用原生JS方法
    gulp批量打包文件并提取公共文件
    angular下H5上传图片(可预览,可多张上传)
    angular4运行 ng build prod出错
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13219846.html
Copyright © 2011-2022 走看看