Dins de Docker Linux Namespaces i cgroups
Què és un contenidor Un contenidor és una aplicació en execució juntament amb tot el que necessita biblioteques, configuracions i eines empaquetades en un paquet lleuger que pot executar-se en qualsevol màquina amb Docker instal·lat. No és una màquina virtual completa ja que comparteix el kernel de l'amfitrió i manté els processos aïllats per oferir consistència i portabilitat.
Conceptes clau Docker es recolza en funcions del kernel de Linux que aïllen processos i controlen recursos. Els espais de noms proporcionen a cada contenidor la seva pròpia vista aïllada del sistema processos, xarxa i punts de muntatge. Els grups de control cgroups limiten i monitoritzen ús de CPU memòria i IO. El sistema de fitxers en capes OverlayFS combina capes d'imatge de només lectura amb una capa escribible per a canvis en el contenidor.
Com s'executa un contenidor Docker Pas 1 Build o Pull d'una imatge pots crear un Dockerfile i construir la imatge amb docker build o descarregar una imatge des de Docker Hub. Una imatge és una pila de capes de només lectura cada capa afegeix fitxers o configuracions. Pas 2 Inici del contenidor en executar docker run myimage Docker crea nous espais de noms aïlla els identificadors de procés xarxa i sistema de fitxers crea un cgroup per aplicar límits i munta les capes usant OverlayFS. Pas 3 Execució del procés el contenidor executa l'ordre definida en la imatge CMD o ENTRYPOINT i dins del contenidor sembla un petit sistema operatiu però són processos de l'amfitrió. Pas 4 Xarxa per defecte els contenidors obtenen una interfície Ethernet virtual que Docker ponta amb la xarxa de l'amfitrió mitjançant docker0 llevat que es configuri diferent. Pas 5 Persistència de dades per defecte els contenidors són efímers usa volums o bind mounts per conservar dades fora de la capa escribible. Pas 6 Aturada i eliminació aturar un contenidor finalitza el seu procés eliminar-lo esborra la seva capa escribible mentre la imatge original roman intacta.
Diferències amb una màquina virtual Els contenidors comparteixen el kernel de l'amfitrió i són lleugers i ràpids d'iniciar mentre que una màquina virtual inclou el seu propi kernel i requereix un hipervisor consumint més recursos i temps d'arrencada. Els contenidors estan pensats per escalabilitat i desplegament ràpid i les VMs per aïllament complet a nivell de sistema operatiu.
Crear un procés tipus contenidor a Linux sense Docker Aquest exercici demostra com funcionen els espais de noms i cgroups a baix nivell. Requisits sistema Linux amb privilegis root o sudo i coneixements bàsics d'espais de noms cgroups i chroot. Pas 1 Crear un sistema de fitxers arrel mkdir container cd container i descarregar una minirootfs lleugera per exemple wget https://dl-cdn.alpinelinux.org/alpine/v3.18/releases/x86_64/alpine-minirootfs-3.18.4-x86_64.tar.gz i extreure tar -xzf alpine-minirootfs-3.18.4-x86_64.tar.gz -C . Això crea un entorn Alpine a la carpeta container. Pas 2 Crear un espai de noms aïllat usa unshare --pid --mount --uts --ipc --net --fork chroot /container /bin/sh Això crea nous espais de PID muntatge UTS IPC i xarxa i executa un shell dins de l'entorn aïllat. Dins pots ajustar el hostname hostname container. Pas 3 Afegir límits amb cgroups munta cgroup v2 si escau mkdir -p /sys/fs/cgroup mount -t cgroup2 none /sys/fs/cgroup crea un grup mkdir /sys/fs/cgroup/container i configura límits per exemple echo 50000 100000 > /sys/fs/cgroup/container/cpu.max echo 104857600 > /sys/fs/cgroup/container/memory.max afegeix processos escrivint el seu PID a cgroup.procs. Pas 4 Executar un procés dins del cgroup pots llançar una tasca intensiva per provar els límits sh -c echo $$ > /sys/fs/cgroup/container/cgroup.procs; exec yes > /dev/null i supervisar cat /sys/fs/cgroup/container/cpu.stat i cat /sys/fs/cgroup/container/memory.current
Cicle de vida d'alt nivell El client Docker CLI envia sol·licituds a dockerd que delega en containerd. containerd invoca un runtime OCI com runc que crida a unshare per crear espais de noms munta el sistema de fitxers arrel amb overlayfs i bind mounts configura la xarxa amb parells veth i bridge aplica límits de cgroup i finalment executa el procés PID1 del contenidor amb execve dins de l'entorn aïllat.
Sobre Q2BSTUDIO Q2BSTUDIO és una empresa de desenvolupament de programari i aplicacions a mida especialitzada en programari a mida, intel·ligència artificial i implementació de solucions de ciberseguretat. Oferim serveis cloud aws i azure, serveis intel·ligència de negoci i consultoria en ia per a empreses. Creem agents IA personalitzats, integracions amb Power BI i solucions completes d'aplicacions a mida que acceleren la transformació digital. Els nostres equips combinen experiència en desenvolupament a mida, arquitectures cloud i seguretat per lliurar productes robustos escalables i segurs.
Paraules clau i posicionament aplicacions a mida programari a mida intel·ligència artificial ciberseguretat serveis cloud aws i azure serveis intel·ligència de negoci ia per a empreses agents IA power bi són conceptes que apliquem en projectes reals per millorar eficiència i generar avantatge competitiu.
Conclusió i referències Entendre espais de noms cgroups i overlayfs ajuda a comprendre com Docker construeix contenidors lleugers i aïllats. Aquest article resumeix aquests conceptes i mostra com reproduir un procés aïllat manualment a Linux. Parts d'aquest contingut van ser assistides per models de llenguatge i pel nostre equip tècnic a Q2BSTUDIO que integra intel·ligència artificial i ciberseguretat en desenvolupaments a mida i serveis cloud.


