Quản Lý Gói
Cơ Bản apk
apk update # làm mới chỉ mục gói apk upgrade # nâng cấp tất cả gói apk add curl git vim # cài đặt gói apk del curl # gỡ bỏ gói apk search nginx # tìm kiếm gói
Thông Tin Gói
apk info # liệt kê gói đã cài apk info -a nginx # thông tin chi tiết gói apk info -L nginx # liệt kê file trong gói apk policy nginx # xem phiên bản có sẵn
Virtual Packages
# Cài build deps theo nhóm, xóa sau khi dùng apk add --virtual .build-deps gcc musl-dev make && make install apk del .build-deps
Repositories
# /etc/apk/repositories https://dl-cdn.alpinelinux.org/alpine/v3.20/main https://dl-cdn.alpinelinux.org/alpine/v3.20/community @edge https://dl-cdn.alpinelinux.org/alpine/edge/testing
Dịch Vụ
Quản Lý Dịch Vụ OpenRC
rc-service nginx start # khởi động dịch vụ rc-service nginx stop # dừng dịch vụ rc-service nginx restart # khởi động lại rc-service nginx status # kiểm tra trạng thái
Quản Lý Runlevel
rc-update add nginx default # bật khi khởi động rc-update del nginx default # tắt khi khởi động rc-update show # liệt kê tất cả dịch vụ rc-status # xem dịch vụ đang chạy
Runlevels
sysinitKhởi tạo hệ thống (filesystem, đồng hồ)
bootDịch vụ cơ bản (mạng, syslog)
defaultDịch vụ bình thường (web server, daemon)
shutdownTác vụ tắt máy
Cấu Hình
Các File Cấu Hình Quan Trọng
/etc/apk/repositoriesURL repository gói
/etc/hostnameTên hostname hệ thống
/etc/network/interfacesCấu hình network interface
/etc/conf.d/Cấu hình riêng từng dịch vụ
/etc/motdMessage of the day
Thiết Lập Hệ Thống
setup-alpine # thiết lập tương tác đầy đủ setup-timezone # đặt múi giờ setup-keymap # cấu hình bàn phím setup-hostname myhost # đặt hostname
Timezone
apk add tzdata cp /usr/share/zoneinfo/US/Eastern /etc/localtime echo "US/Eastern" > /etc/timezone apk del tzdata # tùy chọn: xóa để tiết kiệm bộ nhớ
Mạng
Cấu Hình Interface
# /etc/network/interfaces auto eth0 iface eth0 inet dhcp # --- tĩnh --- iface eth0 inet static address 192.168.1.10/24 gateway 192.168.1.1
Lệnh Mạng
ip addr show # xem địa chỉ IP ip route show # xem bảng định tuyến ip link set eth0 up # bật interface setup-interfaces # cấu hình mạng tương tác
DNS & Firewall
# DNS: /etc/resolv.conf nameserver 1.1.1.1 nameserver 8.8.8.8 # Firewall apk add iptables iptables -L -n # liệt kê quy tắc
Người Dùng
Quản Lý User
adduser alice # tạo user (tương tác) adduser -D -s /bin/sh bob # không tương tác, đặt shell deluser alice # xóa user passwd alice # đặt/đổi mật khẩu
Groups & Sudo
addgroup devs # tạo group addgroup alice devs # thêm user vào group apk add doas # thay thế sudo nhẹ hơn # /etc/doas.conf permit persist alice as root
System Users
adduser -S -D -H -s /sbin/nologin myapp # -S system user -D không mật khẩu # -H không thư mục home -s không shell
Đĩa & Lưu Trữ
Lệnh Filesystem
df -h # tóm tắt sử dụng đĩa du -sh /var/log # kích thước thư mục lsblk # liệt kê thiết bị block mount /dev/sda1 /mnt # mount thiết bị umount /mnt # unmount
LBU (Alpine Local Backup)
# Cho chế độ diskless/data — lưu thay đổi qua reboot lbu status # xem thay đổi chưa commit lbu commit # lưu thay đổi vào boot media lbu list # liệt kê file đã backup lbu include /etc/myconf # thêm đường dẫn vào backup
Thiết Lập Đĩa
setup-disk # cài đặt đĩa tương tác setup-disk /dev/sda # cài lên đĩa cụ thể # Chế độ: sys (truyền thống), data, diskless
Docker Base Image
Tại Sao Dùng Alpine cho Docker
~5 MB base imageso với ~80 MB Debian slim
musl libcNhỏ hơn glibc (có một số vấn đề tương thích)
apk package managerNhanh, không cache mặc định
Minimal attack surfaceÍt gói hơn = ít CVE hơn
Dockerfile Tối Giản
FROM alpine:3.20 RUN apk add --no-cache python3 py3-pip COPY app.py /app/ CMD ["python3", "/app/app.py"]
Multi-Stage Build
FROM golang:1.22-alpine AS builder WORKDIR /src COPY . . RUN go build -o /app FROM alpine:3.20 COPY --from=builder /app /app CMD ["/app"]
Những Lưu Ý Quan Trọng
--no-cacheLuôn dùng để giữ image nhỏ
musl vs glibcMột số binary cần package gcompat
Không có bash mặc địnhDùng /bin/sh hoặc apk add bash
Thiếu timezoneCài tzdata nếu cần
Các Pattern Thường Gặp
Cài Build Tools
apk add --no-cache build-base # gcc, make, v.v. apk add --no-cache python3-dev # Python headers apk add --no-cache linux-headers # kernel headers
Cron Jobs
# Thêm cron job echo "*/5 * * * * /usr/local/bin/task.sh" \ | crontab - rc-service crond start rc-update add crond default
Bật SSH
apk add openssh rc-service sshd start rc-update add sshd default # Cấu hình: /etc/ssh/sshd_config
Nâng Cấp Phiên Bản Alpine
# Sửa /etc/apk/repositories: đổi v3.19 → v3.20 apk update apk upgrade --available sync && reboot