Programmering

Flocker bundter Docker-containere og data for nem transport

Da Docker-containere kommer i bredere brug, bliver deres mangler også tydeligere. Hvordan migrerer du f.eks. En kørende container sammen med dens data til en anden server og bevarer dens data i processen? Typisk gør du det ikke.

ClusterHQ, en opstart, der delvist blev grundlagt af kernebidragydere til Python Twisted-netværksmotoren, har en foreslået løsning. Flocker, en open source (Apache) datavolumenmanager til Dockerized-applikationer, der nu er i 1.0-udgivelsen, tillader, at datamængder (aka datasæt) tilknyttes containere og flyttes med dem.

Holder det hele sammen

Flocker bundter containere og datasæt, hvilket sikrer, at de bevæger sig sammen, hver gang en Dockerized-applikation sendes mellem værter i en given klynge. Den ene begrænsning er, at lagring af dataene skal tilvejebringes af en delt lager-bagende, der er tilgængelig for alle noder i klyngen.

Kun få typer af bageste ender til opbevaring, for det meste skyorienterede, understøttes lige nu: Amazon EBS, Rackspace Cloud Block Storage og EMC ScaleIO. ZFS-baseret opbevaring understøttes også, omend kun via en back-end, der i øjeblikket er eksperimentel.

"Alt, hvad du vil bruge VMware vMotion til," sagde Mark Davis, administrerende direktør for ClusterHQ, "er de samme grunde til, at du måske vil flytte en container rundt. Og hvis en container har data i den, har du brug for noget som Flocker."

Når det er sagt, er en hyldet funktion i vMotion - live migration af kørende apps - ikke helt der endnu i Flocker. Dens migrationer er "minimal nedetid" snarere end nul nedetid, hvilket betyder, at der er et lille vindue med utilgængelighed under migreringsprocessen. Luke Marsden, CTO og medstifter af ClusterHQ, udtalte i et telefonopkald, at nedetid "afhænger af den hastighed, hvormed bagenden kan have en volumen løsrevet fra en VM og knyttet til en anden VM. Men vi er meget interesserede i minimere nedetid. "

ClusterHQ har allerede eksperimentelle funktioner på vej til at fremskynde processen ved hjælp af volumen-snapshots, selvom bagsiden skal understøtte snapshots for at den skal være levedygtig.

Dockers manglende stykker

Docker har traditionelt arbejdet med data ved hjælp af datamængder, men de har deres egne begrænsninger. Manuel kopiering af data mellem containere er stadig ikke enkel (angiveligt rettet i Docker 1.7), men den største mur er fortsat den dårlige tilstand af administration af data, der deles af Docker-containere, der kører forskellige steder.

Et aktuelt forslag til Docker involverer at stille en ny type lagerplads til rådighed for containere, hvor tredjeparter kan levere enhedsdrivere til deres egne lagertyper. Hvis en sådan funktion blev implementeret, ville det ikke være svært for ClusterHQ at omarbejde sin support gennem sit datasæt back-end plug-in-arkitektur - og holde et skridt foran enhver funktionalitet, der ruller ind i Dockers egen kerne over tid.