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 …

ubuntu文本模式获得权限修改profile

针对ubuntu14.04以下&#xff0c;越旧版本&#xff0c;旧的指令也有效。 进入登录页面&#xff0c;按shiftaltF1进入root环境&#xff0c;验证用户名密码。 然后输入&#xff1a;cd /etc 进入etc文件 在输入&#xff1a;/usr/bin/sudo vi profile 进入profile文件的文本编辑模…

here文档 here doc EOF重定向

here文档 here doc EOF重定向 http://www.cnblogs.com/xiangzi888/archive/2012/03/24/2415077.html 在shell脚本程序中&#xff0c;向一条命令传递输入的一种特殊方法是使用here文档。一个here document就是一段带有特殊目的的代码段。它使用I/O重定向的形式将一个命令序列传…

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;收…

Python标准模块--logging

Python标准模块--logging参考http://www.cnblogs.com/zhbzz2007/p/5943685.html1 logging模块简介logging模块是Python内置的标准模块&#xff0c;主要用于输出运行日志&#xff0c;可以设置输出日志的等级、日志保存路径、日志文件回滚等&#xff1b;相比print&#xff0c;具备…

Podfile grammar

参考&#xff1a;http://www.jianshu.com/p/8af475c4f717 Podfile Podfile文件详细描述了一个或多个工程中targets的依赖关系。Podfile会默认创建一个隐式的目标链接到工程中用户的第一个target&#xff0c;名称为“default”。 一个Podfile可以非常简单: *pod AFNetworking, ~…

并发编程 - 协程 - 1.协程概念/2.greenlet模块/3.gevent模块/4.gevent实现并发的套接字通信...

1.协程并发&#xff1a;切保存状态单线程下实现并发&#xff1a;协程 切 保存状态 yield 遇到io切&#xff0c;提高效率 遇到计算切&#xff0c;并没有提高效率 检测单线程下 IO行为 io阻塞 切 相当于骗操作系统 一直处于计算协程&#xff1a;。。。单线程下实现…

pymysql

连接数据库 连接时需要额外指定参数dbcursor.execute( ) 操作SQL语句SELECT VERSION() 获得当前版本CREATE DATABASE spiders DEFAULT CHARACTER SET utf8 创建数据库import pymysql db pymysql.connect(hostlocalhost,user ,password ,port3306)#IP&#xff0c;用户名&#x…

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

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

opencv-python单目视觉标定,简单易用。

import cv2 import numpy as np import glob# 设置寻找亚像素角点的参数&#xff0c;采用的停止准则是最大循环次数30和最大误差容限0.001 criteria (cv2.TERM_CRITERIA_MAX_ITER | cv2.TERM_CRITERIA_EPS, 30, 0.001)# 获取标定板角点的位置 objp np.zeros((6 * 7, 3), np.f…

python多线程多进程

一、线程&进程 对于操作系统来说&#xff0c;一个任务就是一个进程&#xff08;Process&#xff09;&#xff0c;比如打开一个浏览器就是启动一个浏览器进程&#xff0c;打开一个记事本就启动了一个记事本进程&#xff0c;打开两个记事本就启动了两个记事本进程&#xff0c…

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…

curl命令

Curl是一种支持多种协议&#xff08;http、https&#xff0c;ftp&#xff09;等&#xff0c;利用url规则在命令行下工作的文件传输工具&#xff0c;还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征 1.语法&#xff1a; cu…

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

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

Python基础知识-05-数据类型总结字典

python其他知识目录 1、一道题&#xff0c;选择商品的序号。程序员和用户各自面对的序号起始值 如有变量 googs [汽车,飞机,火箭] 提示用户可供选择的商品&#xff1a; 0,汽车1,飞机2,火箭用户输入索引后&#xff0c;将指定商品的内容拼接打印&#xff0c;如&#xff1a;用户输…

Python学习笔记之异常

Python用异常对象来表示异常情况&#xff0c;如果异常对象未被处理或捕捉&#xff0c;程序就会回溯&#xff08;traceback&#xff09;中止执行。 异常可以在出错时自动引发&#xff0c;也可以主动引发。 异常被引发后如果不被处理就会传播至程序调用的地方&#xff0c;直到主程…

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 /…