Docker微容器之Alpine Linux 初體驗
0x00 前言
Alpine Linux是一個面向安全的輕型的Linux發行版,基於Alpine Linux
的超小型Docker映象,大小隻有5MB,並且可以訪問比其他基於BusyBox
的映象更完整的包儲存庫。Alpine Linux
採用了 musl libc
和busybox
以減小系統的體積和執行時資源消耗,由於小巧、功能完備,非常適合用於作為容器的基礎映象。
Alpine Linux有以下特點:
- 小巧
Alpine Linux是圍繞musl libc
和busybox
構建的。這使得它比傳統的GNU / Linux
發行版更小,資源效率更高。容器不需要超過8 MB,最小的磁碟安裝需要大約130 MB的儲存空間。不僅可以獲得完全成熟的Linux環境,還可以從儲存庫中獲得大量的軟體包。
二進位制包被稀釋和拆分,可以更好地控制安裝的內容,從而使環境儘可能小而有效。
- 簡單
Alpine Linux
是一個非常簡單的發行版,它會盡量避免使用。它使用自己的包管理器名為apk,OpenRC init系統,提供了一個簡單,清晰的Linux環境。然後,您可以新增專案所需的軟體包,無論是構建iSCSI儲存控制器,薄薄的郵件伺服器容器,還是堅如磐石的嵌入式交換機,沒有別的辦法阻礙。
- 安全
Alpine Linux
的設計考慮了安全性。核心使用grsecurity / PaX
的非官方埠進行修補,所有userland二進位制檔案都編譯為具有堆疊粉碎保護的位置獨立可執行檔案(PIE)。這些主動安全功能可防止利用整個類的零日漏洞和其他漏洞。
0x01 映象源
1.2 國內映象源:
1.3 配置軟體源
# vi /etc/apk/repositories
# 新增自己要配置的源,然後儲存退出
http://dl-cdn.alpinelinux.org/alpine/
http://nl.alpinelinux.org/alpine/
http://uk.alpinelinux.org/alpine
http://dl-2.alpinelinux.org/alpine/
0x02 apk軟體包管理
介紹
alpine提供了比較好用的軟體包管理工具apk,通過該命令可以下載、刪除、升級軟體等,但是apk和apt-get以及yum語法上還是有區別的。
命令
通過apk –help可以檢視apk有哪些命令
命令用法–以nginx為例
2.1 升級當前軟體包
- apk update 更新本地映象源
- apk upgrade 升級所有已安裝的軟體包,一般包括核心
- apk add –upgrade nginx 升級指定軟體包
2.2 查詢軟體包的資訊
- apk info 列出已經安裝的軟體包
- apk info nginx 顯示軟體包的資訊
- apk info -a nginx 顯示軟體包完整的資訊
2.3 搜尋軟體包
- apk search 查詢所有可用軟體包
- apk search -v 所以可用軟體包及其描述內容
- apk search -v ‘nginx’ 通過軟體包名稱查詢軟體包
- apk search -v -d ‘nginx’ 通過描述檔案查詢特定的軟體包
2.4 安裝軟體包
- apk add –no-cache nginx
2.5 解除安裝並刪除軟體包
- apk del nginx
0x03 OpenRC init系統
在類Unix系統上,OpenRC
是一個基於依賴的init
。由於0.25 OpenRC
包含openrc-init
,它可以替換/ sbin/init
,但init
程式的預設提供程式是SysVinit for OpenRC
。與Linux一樣,OpenRC也可用於多個BSD系統。
OpenRC是TrueOS,Gentoo,Alpine Linux,Parabola GNU / Linux-libre,Artix Linux
和其他類似unix 系統的預設初始化系統,而其他一些像Devuan則提供它作為選項
3.1 openrc的安裝
apk add --no-cache openrc
3.2 rc-update - 不同執行級增加或者刪除服務
rc-update add nginx 增加一個服務
rc-update del nginx 刪除一個服務
3.3 rc-status - 執行級的狀態管理
rc-status 檢視預設執行級別的狀態
rc-status -a 檢視所有執行級別的狀態
3.4 rc-service - 管理服務的狀態
rc-service nginx start 啟動一個服務
rc-service nginx stop 停止一個服務
rc-service nginx restart 重啟一個服務
3.5 openrc - 管理不同的執行級
Alpine Linux
可用的執行級
default
sysinit
boot
single
reboot
shutdown
3.5 關機重啟指令 - 在容器中試了好像沒反應
- reboot 重啟系統,類似於shutdown -r now。
- halt 關機,類似於shutdown -h now。
- poweroff 關機
0x04 安裝nginx
4.1 安裝nginx軟體並更新
- apk –update add –no-cache nginx
4.2 啟動nginx(二選一執行)
- /etc/init.d/nginx start
- rc-service nginx start
4.3 將nginx新增到啟動服務中,下次開機自動執行
- rc-update add nginx