Gestión de paquetes
Básico de apk
apk update # actualizar índice de paquetes apk upgrade # actualizar todos los paquetes apk add curl git vim # instalar paquetes apk del curl # eliminar un paquete apk search nginx # buscar paquetes
Info de paquete
apk info # listar paquetes instalados apk info -a nginx # información detallada del paquete apk info -L nginx # listar archivos del paquete apk policy nginx # mostrar versiones disponibles
Paquetes virtuales
# Instalar deps de compilación como grupo, eliminar después apk add --virtual .build-deps gcc musl-dev make && make install apk del .build-deps
Repositorios
# /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
Servicios
Gestión de servicios con OpenRC
rc-service nginx start # iniciar servicio rc-service nginx stop # detener servicio rc-service nginx restart # reiniciar servicio rc-service nginx status # verificar estado
Gestión de niveles de ejecución
rc-update add nginx default # habilitar al arrancar rc-update del nginx default # deshabilitar al arrancar rc-update show # listar todos los servicios rc-status # mostrar servicios activos
Niveles de ejecución
sysinitInicialización del sistema (sistemas de archivos, reloj)
bootServicios básicos del sistema (red, syslog)
defaultServicios normales (servidores web, daemons)
shutdownTareas de apagado
Configuración
Archivos de configuración principales
/etc/apk/repositoriesURLs de repositorios de paquetes
/etc/hostnameNombre de host del sistema
/etc/network/interfacesConfiguración de interfaces de red
/etc/conf.d/Configuración específica de servicios
/etc/motdMensaje del día
Configuración del sistema
setup-alpine # configuración completa interactiva setup-timezone # establecer zona horaria setup-keymap # configurar distribución del teclado setup-hostname myhost # establecer nombre de host
Zona horaria
apk add tzdata cp /usr/share/zoneinfo/US/Eastern /etc/localtime echo "US/Eastern" > /etc/timezone apk del tzdata # opcional: eliminar para ahorrar espacio
Red
Configuración de interfaz
# /etc/network/interfaces auto eth0 iface eth0 inet dhcp # --- estática --- iface eth0 inet static address 192.168.1.10/24 gateway 192.168.1.1
Comandos de red
ip addr show # mostrar direcciones IP ip route show # mostrar tabla de rutas ip link set eth0 up # activar interfaz setup-interfaces # configuración de red interactiva
DNS y Firewall
# DNS: /etc/resolv.conf nameserver 1.1.1.1 nameserver 8.8.8.8 # Firewall apk add iptables iptables -L -n # listar reglas
Usuarios
Gestión de usuarios
adduser alice # crear usuario (interactivo) adduser -D -s /bin/sh bob # no interactivo, establecer shell deluser alice # eliminar usuario passwd alice # establecer/cambiar contraseña
Grupos y Sudo
addgroup devs # crear grupo addgroup alice devs # agregar usuario al grupo apk add doas # alternativa ligera a sudo # /etc/doas.conf permit persist alice as root
Usuarios de sistema
adduser -S -D -H -s /sbin/nologin myapp # -S usuario sistema -D sin contraseña # -H sin directorio home -s sin shell
Disco y almacenamiento
Comandos de sistema de archivos
df -h # resumen de uso de disco du -sh /var/log # tamaño de directorio lsblk # listar dispositivos de bloque mount /dev/sda1 /mnt # montar dispositivo umount /mnt # desmontar
LBU (Respaldo local de Alpine)
# Para modos diskless/data — persistir cambios entre reinicios lbu status # mostrar cambios sin confirmar lbu commit # guardar cambios en medio de arranque lbu list # listar archivos respaldados lbu include /etc/myconf # agregar ruta al respaldo
Configuración de disco
setup-disk # instalación interactiva de disco setup-disk /dev/sda # instalar en disco específico # Modos: sys (tradicional), data, diskless
Imagen base Docker
Por qué Alpine para Docker
~5 MB imagen basevs ~80 MB para Debian slim
musl libcMás pequeño que glibc (algunos problemas de compatibilidad)
gestor de paquetes apkRápido, sin caché por defecto
Superficie de ataque mínimaMenos paquetes = menos CVEs
Dockerfile mínimo
FROM alpine:3.20 RUN apk add --no-cache python3 py3-pip COPY app.py /app/ CMD ["python3", "/app/app.py"]
Build multi-etapa
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"]
Problemas comunes
--no-cacheUsar siempre para mantener imagen pequeña
musl vs glibcAlgunos binarios necesitan el paquete gcompat
Sin bash por defectoUsar /bin/sh o apk add bash
Zona horaria ausenteInstalar tzdata si se necesita
Patrones comunes
Instalar herramientas de compilación
apk add --no-cache build-base # gcc, make, etc. apk add --no-cache python3-dev # cabeceras Python apk add --no-cache linux-headers # cabeceras del kernel
Tareas cron
# Agregar una tarea cron echo "*/5 * * * * /usr/local/bin/task.sh" \ | crontab - rc-service crond start rc-update add crond default
Habilitar SSH
apk add openssh rc-service sshd start rc-update add sshd default # Config: /etc/ssh/sshd_config
Actualizar versión de Alpine
# Editar /etc/apk/repositories: cambiar v3.19 → v3.20 apk update apk upgrade --available sync && reboot