(toiminnot)

hwechtla-tl: Docker paketointivälineenä

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


(nettipäiväkirja 02.03.2017) Yksi Dockerin tärkeitä piirteitä on se, että se on paketointiformaatti. (Katso Dockerin käyttötapauksia.) Siinä on melko standardi tapa tarjota palveluita näkyville, ja vaikka se ei sovikaan ihan kaikkeen, ainakin useimmat palvelinprosessit on helpompaa paketoida Docker-imageiksi kuin eri distrojen paketeiksi. Tämä synergia softapaketoinnin ja isoloinnin välillä tuli vähän niin kuin pienenä myönteisenä sattumana - serendipity - ja olennaisesti se tarkoittaa, että paketin, eli säiliön, sisällä softa saa toimia miten huvittaa, kunhan se täyttää rajapintavaatimuksensa.

Tosi monet palvelut, jotka kuuluvat Docker-ekosysteemiin, levitetään jo ensisijaisesti Docker-imageina eikä missään muussa muodossa. Se on järkevää, koska niitä käytetään Dockerin kanssa, joten jos haluat käyttää niitä, sinulla on jo Docker, joten et joudu asentamaan mitään ylimääräistä. Tällaisia palveluita ovat esimerkiksi Dockerin oma registry (https://docs.docker.com/registry/) ja vaikkapa ajossa olevien palveluiden palveluhakemistoon lisäämistä hoitava Registrator (https://github.com/gliderlabs/registrator). Tätä Registratoria en ole kokeillut, mutta suosittelen, ainakin periaatteessa yhdessä Consulin kanssa se tarkoittaa esim. että palvelut yksinkertaisesti löytävät toisensa DNS-palvelun perusteella.

Mutta tuhlailevaa tämä on. Docker-imageille ei ole oikein onnistuttu standardoimaan, minkä base-imagen päälle ne rakennetaan, joten jos ajat vaikka neljää softaa suoraan niiden Dockerhubin imageista, voi hyvinkin olla, että siinä ohessa koneellesi ladataan kaksi versiota Ubuntusta, yksi Centosista ja yksi Mintistä. Tällaiseen kuluu helposti gigakaupalla tilaa. (Tietysti nykyisten kielten tapa ladata kaikki dependenssinsä paikallisiin ympäristöihin kuluttaa myös tilaa samaan tapaan.) Jos itse rakennat lisäimageja, kannattaa huolehtia tarkkaan, että niillä on yhteinen base. Se, mikä on iloista, on että monen säiliön käynnistäminen yhdestä imagesta ei juuri levyä kuluta. Eikä välttämättä muistiakaan, riippuen softasta, joka niissä pyörii: koska imagen sisältö on oikeasti säiliöiden välillä jaetussa tiedostojärjestelmässä, kernelin pitäisi myös osata jakaa prosessien välillä ne sivut, jotka sieltä mmap()ataan ohjelman muistiin. Riippumatta siitä, ollaanko eri säiliöissä vai ei.

Elakim: Säiliö? Vai kontti? Dockerin container-sanahan tulee standardoiduista konteista (container), jotka mullistivat kansainvälisen rahtiliikenteen.

Elakim: Ja 'docker' on sama kuin 'dockworker' eli 'satamatyöläinen', 'ahtaaja'.

atehwa: "kontti" kelpaa, tosin eikös tällä sanalla ole erillinen etymologia tietotekniikan puolella? Nojoo, en tiedä.

teppotestaaja: Paskasta kultaa, valitse Docker!


kommentoi (viimeksi muutettu 21.12.2017 09:10)