Alpine Linux详解

简介

Small. Simple. Secure.Alpine Linux is a security-oriented, lightweight Linux distribution based on musl libc and busybox.

Alpine Linux 是一个社区开发的面向安全应用的轻量级Linux发行版。 Alpine 的意思是“高山的”,它采用了musl libc和busybox以减小系统的体积和运行时资源消耗,同时还提供了自己的包管理工具apk。

适用环境

由于其小巧、安全、简单以及功能完备的特点,被广泛应用于众多Docker容器中。我司目前使用的基础镜像均是基于该系统,dockerhub上有提供各种语言的基础镜像.如:node:8-alpinepython:3.6-alpine,同时也可以基于alpine镜像制作符合自己需求的基础镜像。

简单的镜像构建示例

这里提供一个python3的基础镜像的Dockerfile,get-pip.py可在 https://pip.pypa.io/en/latest/installing/ 下载。

FROM alpineMAINTAINER guoxudong@keking.cn# 拷贝安装pip的脚本
COPY get-pip.py /get-pip.py# 设置alpine的镜像地址为阿里云的地址
RUN echo "https://mirrors.aliyun.com/alpine/v3.6/main/" > /etc/apk/repositories \# 安装依赖包&& apk update \&& apk add --no-cache bash \# libevent-dev libxml2-dev  libffi libxml2 libxslt libxslt-dev  \python3 gcc g++ python3-dev python-dev linux-headers libffi-dev openssl-dev \# 由于通过apk安装的pip总是基于python2.7的版本,不符合项目要求,此处使用get-pip.py的方式#安装基于python3.6的pip&& python3 /get-pip.py \# 删除不必要的脚本&& cd .. \&& rm -f /get-pip.py \# 此环境专用做运行django项目,因此移除不必要的工具,减少空间#    && pip uninstall -y pip setuptools wheel \# 最后清空apk安装时产生的无用文件&& rm -rf /var/cache/apk/*

对比:同样版本的python,对比镜像大小,可见使用alpine的优势

~ docker images | grep python
python                                  3.4                 ccbffa0d70d9        2 months ago        922MB
alpine-python3                          latest              69e41b673a50        2 months ago        297MB

apk包管理

  • 镜像源配置

    官方镜像源列表:http://dl-cdn.alpinelinux.org/alpine/MIRRORS.txt

    MIRRORS.txt中是当前Alpine官方提供的镜像源(Alpine安装的时候系统自动选择最佳镜像源)

    国内镜像源

    • 清华TUNA镜像源:https://mirror.tuna.tsinghua.edu.cn/alpine/
    • 中科大镜像源:http://mirrors.ustc.edu.cn/alpine/
    • 阿里云镜像源:http://mirrors.aliyun.com/alpine/

    镜像源配置

    这里推荐使用阿里云镜像源,由于公司应用都是部署在阿里云上,使用阿里云镜像源会快很多

    $ vi /etc/apk/repositories
    # 将这两行插入到repositories文件开头
    http://mirrors.aliyun.com/alpine/v3.9/main
    http://mirrors.aliyun.com/alpine/v3.9/community
    # 后面是原有的默认配置
    http://dl-cdn.alpinelinux.org/alpine/v3.8/main
    http://dl-cdn.alpinelinux.org/alpine/v3.8/community
    
  • apk包管理命令

    这里介绍一些常用的操作apk包管理命令

    • apk --help可以查看完整的包管理命令
    bash-4.3# apk --help
    apk-tools 2.10.0, 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 themSystem 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 cacheQuerying 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 packagesRepository 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 contentsUse apk <command> --help for command-specific help.
    Use apk --help --verbose for a full command listing.This apk has coffee making abilities.
    
    • apk info 列出所有已安装的软件包
    • apk apk update 更新最新本地镜像源
    • apk upgrade 升级软件
    • apk search 搜索可用软件包,搜索之前最好先更新镜像源

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

    • apk add 从仓库中安装最新软件包,并自动安装必须的依赖包,也可以从第三方仓库添加软件包

      bash-4.3# apk add curl busybox-extras       #软件以空格分开这里,这里列举我们用的最多的curl和telnet
      bash-4.3# apk add --no-cache curl
      bash-4.3# apk add mongodb --update-cache --repository http://mirrors.ustc.edu.cn/alpine/v3.6/main/ --allow-untrusted    #从指定镜像源拉取
      
      • 安装指定版本软件包

        bash-4.3# apk add mongodb=4.0.5-r0
        bash-4.3# apk add 'mongodb<4.0.5'
        bash-4.3# apk add 'mongodb>4.0.5'
        
      • 升级指定软件包

        bash-4.3# apk add --upgrade busybox #升级指定软件包
        

    :安装之前最好修改本地镜像源,更新镜像源,搜索软件包是否存在,选择合适岸本在进行安装。

    • apk del 卸载并删除指定软件包

结语

Alpine以其小巧、简单在docker容器中得到了广泛的应用。但是Alpine Linux使用了musl,可能和其他Linux发行版使用的glibc实现会有些不同。这里主要介绍了它的基础用法,但是足以满足日常运维需要。毕竟在kubernetes集群中操作容器内环境较直接在虚拟机或者物理机上操作更为复杂,由于缩减的容器的大小,导致和CentOS或Ubuntu相比缺少许多功能。而缺少的这些功能又不想在基础镜像中安装导致容器变大,这个时候就可以在容器运行后,根据实际需要安装即可。

参考文档

https://wiki.alpinelinux.org/wiki/Alpine_Linux_package_management

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/252027.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java stream 原理

java stream 原理 需求 从"Apple" "Bug" "ABC" "Dog"中选出以A开头的名字&#xff0c;然后从中选出最长的一个&#xff0c;并输出其长度 1. 最直白的实现 缺点 迭代次数过多频繁产生中间结果&#xff0c;性能无法接受2. 平常写法 int …

Java常量池理解与总结

2019独角兽企业重金招聘Python工程师标准>>> 一.相关概念 什么是常量用final修饰的成员变量表示常量&#xff0c;值一旦给定就无法改变&#xff01;final修饰的变量有三种&#xff1a;静态变量、实例变量和局部变量&#xff0c;分别表示三种类型的常量。Class文件中…

转载:https://blog.csdn.net/dcrmg/article/details/52939318

张正友相机标定Opencv实现以及标定流程&&标定结果评价&&图像矫正流程解析&#xff08;附标定程序和棋盘图&#xff09;使用Opencv实现张正友法相机标定之前&#xff0c;有几个问题事先要确认一下&#xff0c;那就是相机为什么需要标定&#xff0c;标定需要的输…

Redis学习笔记--Redis数据过期策略详解==转

本文对Redis的过期机制简单的讲解一下  讲解之前我们先抛出一个问题&#xff0c;我们知道很多时候服务器经常会用到redis作为缓存&#xff0c;有很多数据都是临时缓存一下&#xff0c;可能用过之后很久都不会再用到了&#xff08;比如暂存session&#xff0c;又或者只存放日行…

会员连锁配置以及金额走向

PS&#xff1a;所有电子支付方式的资金走向都是同样的&#xff0c;配置的是什么支付方式就走什么支付方式;下面以支付宝为例说明 一、连锁非总机模式 资金走向&#xff1a; 支付宝&#xff1a;收到的钱在主账号配置的支付宝&#xff0c;会员卡的金额在主账号 微信&#xff1a;收…

C# 多线程及同步简介示例

60年代&#xff0c;在OS中能拥有资源和独立运行的基本单位是进程&#xff0c;然而随着计算机技术的发展&#xff0c;进程出现了很多弊端&#xff0c;一是由于进程是资源拥有者&#xff0c;创建、撤消与切换存在较大的时空开销&#xff0c;因此需要引入轻型进程&#xff1b;二是…

Spring Framework 5.1.6、5.0.13 与 4.3.23 发布

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; Spring Framework 5.1.6、5.0.13 与 4.3.23 发布了。 v5.1.6 包含 49 个 bug 修复和功能改进&#xff1b;v5.0.13 是 5.0.x 系列的最后一个版本&#xff0c;包含了 25 个 bug 修复和功能改进&am…

单目视觉标定:世界坐标系、相机坐标系、图像坐标系、像素坐标系——简单粗暴,粗暴

转&#xff1a;https://blog.csdn.net/chentravelling/article/details/53558096 1.正文 图像处理、立体视觉等等方向常常涉及到四个坐标系&#xff1a;世界坐标系、相机坐标系、图像坐标系、像素坐标系。例如下图&#xff1a; 构建世界坐标系只是为了更好的描述相机的位置在哪…

VSFTP的使用

一、基本安装 1.安装服务 yum -y install vsftpd //centos Redhat apt-get install vsftpd //debian ubuntu 2.开启服务 service vsftpd status //查看状态&#xff0c;默认是关闭的 service vsftpd start 3.开机随操作系统启动 chkconfig vsftpd on4.添加账号 useradd -d /…

OC Swift混编-Swift.h File not found

https://www.jianshu.com/p/f860fe1718ca 2016.09.13 11:53* 字数 266 阅读 1935评论 1喜欢 1今天碰到个神坑,本人项目是OC项目,最近开始使用Swift开始替代.但是,在替代的已开始就出现问题了:新建swift文件,然后提示创建bridging-Hearder文件,然后swift可以使用OC代码了.这些都…

视觉标定,再来一波!!更简单粗暴!!!!!!

继续&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 一、四个坐标系简介和转换 相机模型为以后一切标定算法的关键&#xff0c;只有这边有相当透彻的理解&#xff0c;对以后的标定算法才能有更好的理解。本人研究了好长时间&#xff0c;几乎每天…

深入浅出NIO之Selector实现原理

2019独角兽企业重金招聘Python工程师标准>>> 前言 Java NIO 由以下几个核心部分组成&#xff1a; 1、Buffer 2、Channel 3、Selector Buffer和Channel在深入浅出NIO之Channel、Buffer一文中已经介绍过&#xff0c;本文主要讲解NIO的Selector实现原理。 之前进行sock…

介绍一下画图小能手matplotlib。

我们在做完数据分析的时候需要把分析出来的结果&#xff0c;做一个图形化的形象表达&#xff0c;这里我们就需要用到画图小能手matplotlib&#xff0c;下面就演示一下常用的条形图和折线图 散点图 散点图的做大的作用是研究两个变量的相关性&#xff08;正相关&#xff0c;负相…

立体视觉标定源代码C++,简单粗暴!粗暴·······

疑点解答&#xff1a; 摄像机矩阵由内参矩阵和外参矩阵组成&#xff0c;对摄像机矩阵进行QR分解可以得到内参矩阵和外参矩阵。 内参包括焦距、主点、倾斜系数、畸变系数 &#xff08;1&#xff09; 其中&#xff0c;fx&#xff0c;fy为焦距&#xff0c;一般情况下&#xff…

MongoDB负载信息一目了然 阿里云HDM重磅发布MongoDB监控和诊断功

2019独角兽企业重金招聘Python工程师标准>>> 混合云数据库管理&#xff08;HDM&#xff09;的统一监控、告警、诊断功能新增了对MongoDB的支持。 通过直观的方式将MongoDB多个维度的负载信息统一整合&#xff0c;不仅可以清晰的查看实时负载信息&#xff0c;也可以方…

在iview的Table中添加Select(render)

首先对Render进行分析&#xff0c;在iview官方的文档中&#xff0c;找到了table插入Button的例子&#xff1a; [javascript] view plaincopy { title: Action, key: action, width: 150, align: center, render: (h, params) > { return h(div, [ h(Butt…

工业机械人运动学正逆解,简单粗暴!!!!!!

ur机械臂是六自由度机械臂&#xff0c;由D-H参数法确定它的运动学模型&#xff0c;连杆坐标系的建立如上图所示。 转动关节θi是关节变量&#xff0c;连杆偏移di是常数。 关节编号 α&#xff08;绕x轴&#xff09; a&#xff08;沿x轴&#xff09; θ&#xff08;绕z轴&am…

python opencv立体测距 立体匹配BM算法

立体标定应用标定数据转换成深度图标定 在开始之前&#xff0c;需要准备的当然是两个摄相头&#xff0c;根据你的需求将两个摄像头进行相对位置的固定&#xff0c;我是按平行来进行固定的&#xff08;如果为了追求两个双目图像更高的生命度&#xff0c;也可以将其按一定钝角固…

Vue基础学习(一)------内部指令

一.v-if v-else v-show 指令 1.v-if v-if:是vue 的一个内部指令&#xff0c;指令用在我们的html中,用来判断是否加载html的DOM 现在举个栗子&#xff0c;判断用户的登录操作&#xff0c;用isLogin作为一个判断字段&#xff0c;登录成功&#xff0c;就显示用户的名称 代码&…

StereoRectify()函数定义及用法畸变矫正与立体校正

畸变矫正是上一篇博文的遗留问题&#xff0c;当畸变系数和内外参数矩阵标定完成后&#xff0c;就应该进行畸变的矫正&#xff0c;以达到消除畸变的目的&#xff0c;此其一。 在该系列第一部分的博文中介绍的立体成像原理中提到&#xff0c;要通过两幅图像估计物点的深度信息&a…