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.pswp.cn/news/252027.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252027.shtml
英文地址,請注明出處:http://en.pswp.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 /…