基於Alpine映象定製自己的工具箱
阿新 • • 發佈:2020-07-01
Alpine介紹
Alpine 作業系統是一個面向安全的輕型 Linux 發行版。目前 Docker 官方已開始推薦使用 Alpine 替代之前的 Ubuntu 做為基礎映象環境。這樣會帶來多個好處。包括映象下載速度加快,映象安全性提高,主機之間的切換更方便,佔用更少磁碟空間等。
Alpine的特點:
- 小巧:基於Musl libc和busybox,和busybox一樣小巧,最小的Docker映象只有5MB;
- 安全:面向安全的輕量發行版;
- 簡單:提供APK包管理工具,軟體的搜尋、安裝、刪除、升級都非常方便。
- 適合容器使用:由於小巧、功能完備,非常適合作為容器的基礎映象。
# 拉取映象 [root@master src]# docker pull alpine Using default tag: latest latest: Pulling from library/alpine df20fa9351a1: Already exists Digest: sha256:185518070891758909c9f839cf4ca393ee977ac378609f700f60a771a2dfe321 Status: Downloaded newer image for alpine:latest docker.io/library/alpine:latest # 檢視映象大小 [root@master ~]# docker images | grep alpine alpine latest a24bb4013296 4 weeks ago 5.57MB # 執行映象 [root@master src]# docker run -it alpine:latest / #
Alpine軟體包管理
1. 配置軟體源
Alpine源配置檔案
/ # cat /etc/apk/repositories
http://dl-cdn.alpinelinux.org/alpine/v3.11/main
http://dl-cdn.alpinelinux.org/alpine/v3.11/community
由於種種原因,官方源在國內很慢,甚至無法連線,我們將其改為國內映象源
/ # cat /etc/apk/repositories
https://mirrors.aliyun.com/alpine/v3.6/main/
https://mirrors.aliyun.com/alpine/v3.6/community/
2. 軟體包管理
alpine 提供了非常好用的apk軟體包管理工具,可以方便地安裝、刪除、更新軟體。
查詢軟體
/ # apk search curl lua5.2-curl-0.3.5-r2 uwsgi-alarm_curl-2.0.17-r0 py2-curl-7.43.0-r3 libcurl-7.61.1-r2 py3-curl-7.43.0-r3 py-curl-7.43.0-r3 curl-dev-7.61.1-r2 lua5.3-curl-0.3.5-r2 curl-7.61.1-r2 asterisk-curl-14.7.8-r0 php7-curl-7.1.17-r0 curl-dbg-7.61.1-r2 uwsgi-curl_cron-2.0.17-r0 lua5.1-curl-0.3.5-r2 lua-curl-0.3.5-r2 curl-doc-7.61.1-r2 php5-curl-5.6.40-r0 collectd-curl-5.6.2-r1 gst-plugins-bad1-1.10.4-r1
安裝軟體
/ # apk add curl
fetch https://mirrors.aliyun.com/alpine/v3.6/main/x86_64/APKINDEX.tar.gz
fetch https://mirrors.aliyun.com/alpine/v3.6/community/x86_64/APKINDEX.tar.gz
(1/6) Installing libressl2.5-libcrypto (2.5.5-r2)
(2/6) Installing ca-certificates (20161130-r3)
(3/6) Installing libssh2 (1.8.2-r0)
(4/6) Installing libressl2.5-libssl (2.5.5-r2)
(5/6) Installing libcurl (7.61.1-r2)
(6/6) Installing curl (7.61.1-r2)
Executing busybox-1.31.1-r9.trigger
Executing ca-certificates-20161130-r3.trigger
OK: 9 MiB in 20 packages
解除安裝軟體
/ # apk del curl
(1/6) Purging curl (7.61.1-r2)
(2/6) Purging libcurl (7.61.1-r2)
(3/6) Purging ca-certificates (20161130-r3)
Executing ca-certificates-20161130-r3.post-deinstall
(4/6) Purging libressl2.5-libssl (2.5.5-r2)
(5/6) Purging libssh2 (1.8.2-r0)
(6/6) Purging libressl2.5-libcrypto (2.5.5-r2)
Executing busybox-1.31.1-r9.trigger
OK: 6 MiB in 14 packages
apk使用幫助資訊
/ # apk --help
apk-tools 2.10.4, 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 them
System 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 cache
Querying 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 packages
Repository 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 contents
Use apk <command> --help for command-specific help.
Use apk --help --verbose for a full command listing.
This apk has coffee making abilities.
基於Alpine定製帶有curl的映象
FROM alpine
RUN echo "https://mirrors.aliyun.com/alpine/v3.6/main/" > /etc/apk/repositories
RUN echo "https://mirrors.aliyun.com/alpine/v3.6/community/" >> /etc/apk/repositories
RUN ["apk","add","curl"]
# 預設是沒有開啟快取的,所以裝完也不用清快取