1. 程式人生 > >Docker微容器之Alpine Linux 初體驗

Docker微容器之Alpine Linux 初體驗

0x00 前言

Alpine Linux是一個面向安全的輕型的Linux發行版,基於Alpine Linux的超小型Docker映象,大小隻有5MB,並且可以訪問比其他基於BusyBox的映象更完整的包儲存庫。Alpine Linux採用了 musl libcbusybox以減小系統的體積和執行時資源消耗,由於小巧、功能完備,非常適合用於作為容器的基礎映象。

Alpine Linux有以下特點:

  • 小巧

Alpine Linux是圍繞musl libcbusybox構建的。這使得它比傳統的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

4.4 測試