Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Miksi containerit eivät ole vain huonon OS:n paikkaus?

Sivun loppuun

mavavilj [28.03.2024 12:24:15]

#

Miksi containerit eivät ole vain huonon OS:n paikkaus?

En ole täysin sisäistänyt containerien pointtia, koska minusta käyttöjärjestelmät, kuten FreeBSD tarjoavat vastaavan teknologian out-of-the-box.

Siten containerit näyttäytyvät lähinnä cross-platform rajapintana, kuten JVM, mutta yleisempänä.

Mutta jos meillä on kaikilla koneilla sama alusta, niin containerilla ei tee mitään.

No siis, koska jo kansio, joka sisältää kaiken tarvittavan on "container". Lisäksi hyvillä käyttöjärjestelmillä voi luoda aliympäristöjä, jotta asennettaessa systeemikirjastoja ei tarvitse sotkea aiempaa.

Metabolix [28.03.2024 13:07:33]

#

Tietenkin kaiken voi tehdä myös käsin. Container on turha ja paikkaus samalla tavalla kuin vaikka komentoriviskripti on turha ja paikkaus: siinä ei ole mitään magiaa, se käyttää sisäisesti sitä "vastaavaa teknologiaa out-of-the-box", mutta se tekee monivaiheisen prosessin automaattisesti.

On yksinkertaista kirjoittaa vaikka docker create ghcr.io/home-assistant/home-assistant:stable (ja tähän pari polkua ja asetusta väliin) ja sitten vain välittää (proxy) omalta HTTP-palvelimelta jokin domain tuon containerin määrättyyn porttiin. Muutamalla yksinkertaisella asetuksella palvelu pyörii, tiedostojärjestelmä on rajattu, vain tietty muuttuvien tiedostojen joukko on jossain erikseen valitussa sijainnissa, laitteiston käyttö on rajattu, verkkoyhteydet on rajattu, palvelu käynnistyy uudestaan vikatilanteessa jne. Ja jos palvelua tarvitsee skaalata usealle palvelimelle, uuden instanssin käynnistys onnistuu yhtä helposti parilla rivillä.

On todella paljon monimutkaisempaa ruveta käsin järjestämään tälle jotain ”aliympäristöä”, säätää kaikki ”aliympäristön” asetukset (verkko, tiedostojärjestelmät ym.), etsiä sinne oikeita versioita eri paketeista (huom. jokainen julkaistu ohjelma ei aina ole tehty juuri aivan tuoreimmille versioille), ehkä konfiguroida niitä jollain tavalla käsin, tehdä skriptit usean eri palvelun käynnistämiseksi samassa aliympäristössä (jotta ne näkevät toisensa mutta eivät häiritse muita), tehdä skriptit tarvittaessa palveluiden sammuttamiseen ja versioiden päivittämiseen jne.

mavavilj [28.03.2024 13:15:05]

#

Metabolix kirjoitti:

On todella paljon monimutkaisempaa ruveta käsin järjestämään tälle jotain ”aliympäristöä”, säätää kaikki ”aliympäristön” asetukset (verkko, tiedostojärjestelmät ym.), etsiä sinne oikeita versioita eri paketeista (huom. jokainen julkaistu ohjelma ei aina ole tehty juuri aivan tuoreimmille versioille), ehkä konfiguroida niitä jollain tavalla käsin, tehdä skriptit usean eri palvelun käynnistämiseksi samassa aliympäristössä (jotta ne näkevät toisensa mutta eivät häiritse muita), tehdä skriptit tarvittaessa palveluiden sammuttamiseen ja versioiden päivittämiseen jne.

Tarkoitin, että mikäli tämä on monimutkaista, niin OS:n toteutus tästä on huono. Käsittääkseni FreeBSD:n ei ole (https://docs.freebsd.org/en/books/handbook/jails/).

OSX:lläkin on App Sandbox.

Itseasiassa en ymmärrä myöskään, miksi Linux-käyttäjät käyttävät Docker:ia, kun on LXC.

Metabolix [28.03.2024 14:34:16]

#

mavavilj kirjoitti:

Tarkoitin, että mikäli tämä on monimutkaista, niin OS:n toteutus tästä on huono. Käsittääkseni FreeBSD:n ei ole (https://docs.freebsd.org/en/books/handbook/jails/).

”Ota silmä käteen ja katso”, miten monta riviä skriptejä ja asetuksia tuolla FreeBSD-linkkisi takana on. Kas, sivun lopussa kerrotaan, että manuaalisen konfiguroinnin sijaan FreeBSD:lle on ainakin 6 kpl Jail Manager -ohjelmia. Mitä ihmettä, onko FreeBSD:n toteutus sittenkin huono, kun siihen tarvitsee erillisiä apuohjelmia (ihan kuin Docker)? Ja miksi tähän on 6 vaihtoehtoa, missä olikaan se FreeBSD:n ihana harmonia, jossa kaikki on alusta loppuun kokonaisuutena suunniteltu?

Kokeile vaikka, montako minuuttia tai tuntia sinulla kestää pystyttää kaksi FreeBSD:n jailia, joissa toisessa on toimiva palvelin PHP 8.2:lla ja toisessa toimiva palvelin PHP 8.3:lla siten, että ne tavoittaa samasta IP-osoitteesta ja portista eri domaineilla (vaikka a.example.com ja b.example.com).

Tarkistuksena voit laittaa palvelimille vaikka nämä PHP-sivut:

<?= PHP_VERSION. ", ". (version_compare(PHP_VERSION, "8.3") < 0 ? "ok\n" : "fail\n");
<?= PHP_VERSION. ", ". (version_compare(PHP_VERSION, "8.3") < 0 ? "fail\n" : "ok\n");

Asennus on onnistunut, kun molemmille sivuille pääsee ulkoa päin ja toisella sivulla lukee "8.3.x ok" ja toisella sivulla lukee "8.2.x ok". (Jos nämä versiot oli liian helppo asentaa, kokeile asentaa vanhemmaksi versioksi vaikka 7.1.)

Kokeile sitten vielä tehdä kolmas jail, johon ensin laitat tuon 8.2 version ja sitten päivität siitä 8.3:aan.

Dockerille löytyy käytännössä taas yhden komennon ratkaisu, jolla saa haluamansa PHP-version ladattua ja käynnistettyä. Uuteen versioon päivitys onnistuu, kun ajaa saman komennon uudestaan eri versionumerolla.

Jos mielestäsi käyttöjärjestelmä on huono jonkin ominaisuuden puuttuessa, niin ole hyvä ja liity projektiin ja korjaa asia. Saatat huomata, että ehdottamaasi ominaisuutta ei haluta upottaa suoraan käyttöjärjestelmään.

mavavilj kirjoitti:

Itseasiassa en ymmärrä myöskään, miksi Linux-käyttäjät käyttävät Docker:ia, kun on LXC.

Docker on kevyempi.

https://www.google.com/search?q=LXC vs docker

mavavilj [28.03.2024 15:33:55]

#

Mutta Docker on kaupallinen, ja en tiedä mikä Linuxin vastaava oikeasti on.

Metabolix [28.03.2024 16:27:18]

#

mavavilj kirjoitti:

Mutta Docker on kaupallinen,

Voi kyynel. Sinulla on tietokone, joka on kaupallinen. Sinulla on sähköä, joka on kaupallista. Sinulla on ilmainen ja avoimen lähdekoodin Docker-alusta. Jotkin siihen liittyvät (täysin vapaaehtoiset) lisäpalvelut tai työkalut on kaupallistettu, entä sitten?

Ja vasta hetki sitten ihailit, että FreeBSD:stä voi tehdä suljetun lähdekoodin kaupallisia tuotteita eikä tarvitse mitään jakaa.

mavavilj kirjoitti:

ja en tiedä mikä Linuxin vastaava oikeasti on.

Vastaava kuin mikä? Vastaava kuin FreeBSD jail? Mahdollisesti namespace ja cgroup ovat tarkoittamasi rajapinnat. Niiden käsittelyyn on varmasti monta mahdollista työkalua. Eräänlaisena ”natiivina” ratkaisuna voisi olla systemd-nspawn, mutta edelleenkin Dockerin etuna ovat valmiit paketit, joita voi asentaa noin vain.

Tämä on kerroksittainen ja monitahoinen juttu. Käyttöjärjestelmässä on jokin rajapinta, jolla prosessia voi rajata. Tämän kylkeen on jokin työkalu tai kirjasto, joka kutsuu käyttöjärjestelmän rajapintaa hieman koodariystävällisemmin. Sitten on jokin hieman korkeamman tason container-työkalu, jolla saa helposti käynnistettyä prosessin tietyssä ympäristössä kivoilla asetuksilla. Seuraavaksi tulee Dockerin tyyppinen ratkaisu, jossa kaikki on paketoitu valmiiksi. Sitten on vielä Kubernetes, jolla voi hallinnoida useamman containerin kokonaisuutta isossakin skaalassa. Eli yksi tekniikka ei ole toisen tilalla, vaan nämä rakentuvat toistensa päälle.

mavavilj [28.03.2024 17:14:35]

#

Siis minusta container on riittävän yleinen asia, että OS:n tulisi toteuttaa se siirrettäville ohjelmille. Siis tässä on se ero, että container on melkein yhtä olennainen juttu kuin POSIX: https://www.bushido.codes/linux-containers-are-the-new-posix Tällöin sen yksityisomistaminen rajoittaa muiden vapauksia melkoisesti.

Miksi dylib ei riitä?

Metabolix [28.03.2024 18:06:44]

#

mavavilj kirjoitti:

Miksi dylib ei riitä?

Anteeksi mitä?

mavavilj [28.03.2024 18:08:02]

#

Metabolix kirjoitti:

mavavilj kirjoitti:

Miksi dylib ei riitä?

Anteeksi mitä?

Siis miksi containeria ei voi korvata jokaiselle alustalle käännetyillä dynaamisilla kirjastoilla ja sillä, että ohjelma tarkistaa alustan ja lataa kirjastot sen mukaan? Ollessaan tietysti itse myös alustalle kääntyvä.

Mutta joo, jossain väitettiin:

"Docker/containers do far more than just bundle shared libraries"

Mutta entä jails/vast. + dynaamiset kirjastot + makefilet + shell-skriptit

Siis toki Docker:n etu on se, että se näyttää kaikilla alustoilla about samalta, mutta tästähän siinä maksetaankin.

Mutta en ymmärrä, koska minusta normaali cross-platform projekti ei vaadi containereita(?) Lisäksi siihen voi koodata skriptin, joka tekee Dockerit?

Metabolix [28.03.2024 18:38:14]

#

mavavilj kirjoitti:

Siis miksi containeria ei voi korvata jokaiselle alustalle käännetyillä dynaamisilla kirjastoilla

Koska dynaaminen kirjasto ei tee mitään niistä asioista, joita container tekee.

mavavilj kirjoitti:

Mutta entä jails/vast. + dynaamiset kirjastot + makefilet + shell-skriptit

On se tietenkin mahdollista mutta tyhmää. Mikä pakottava tarve sinulla on koodata itse kaikki toimivat asiat uusiksi jollain omalla purkalla? Jäikö vielä epäselväksi, että Dockerin etu on, että siinä on asioita valmiina eikä tarvitse koodata itse uudestaan?

mavavilj kirjoitti:

Siis toki Docker:n etu on se, että se näyttää kaikilla alustoilla about samalta, mutta tästähän siinä maksetaankin.

Docker ei maksa mitään. Hämmästyttävää, voiko maisteriksi valmistua nykyään myös ilman lukutaitoa?

mavavilj kirjoitti:

Mutta en ymmärrä, koska minusta normaali cross-platform projekti ei vaadi containereita(?)

Container ei ole projektia varten vaan sen helppoa ja varmaa jakelua varten. Eli kuka tahansa voi asentaa containerin omalle palvelimelle kaiken ennestään olevan lisäksi yhdellä komennolla eikä siitä taatusti aiheudu mitään konfliktia.

mavavilj kirjoitti:

Lisäksi siihen voi koodata skriptin, joka tekee Dockerit?

Niin no siksi se Docker on olemassa, eli mikä idiootti keksintö on, että pitäisi koodata itse uusi?

mavavilj [28.03.2024 18:39:21]

#

No siis luin jostain, että FreeBSD:llä on yleistä nimenomaan tehdä omat skriptit jails-API:a vasten. Mutta yhteisössä on myös pohdittu sitä, että voisiko tähän tuottaa standardityökalun.

mavavilj [28.03.2024 18:41:07]

#

Metabolix kirjoitti:

mavavilj kirjoitti:

Siis toki Docker:n etu on se, että se näyttää kaikilla alustoilla about samalta, mutta tästähän siinä maksetaankin.

Docker ei maksa mitään.

https://www.docker.com/pricing/

Lisäksi on ilmiselvää, että heidän bisnesideansa ei ole, että kaupalliset käyttäjät pysyvät minimitierillä.

Kubernetes on avointa koodia, mutta jossain BSD-yhteisössä sitä vieroksutaan, koska lähdekoodin koko on n. puolet _koko_ FreeBSD base-järjestelmästä. Joku nimittäisi tätä potentiaalisesti "bloatiksi".

mavavilj [28.03.2024 18:49:29]

#

Metabolix kirjoitti:

Container ei ole projektia varten vaan sen helppoa ja varmaa jakelua varten. Eli kuka tahansa voi asentaa containerin omalle palvelimelle kaiken ennestään olevan lisäksi yhdellä komennolla eikä siitä taatusti aiheudu mitään konfliktia.

Mutta kyllähän hyvä sorsakin kääntyy ongelmitta make ja make install:lla / vastaavilla, jos se on tehty hyvin ja testattu alustoja vasten.

Entäpä se, että Docker on Linux-image, joten eikö tämä tarkoita, että tosiasiassa sen teknologia on myös Linuxissa?

Metabolix [28.03.2024 19:21:56]

#

Kun selvästi et tiedä, mitä osia Docker sisältää ja mitä lisäpalveluita tuo maksullisuus koskee, niin ehkä perehdyt asiaan lisää ennen kuin jatkat keskustelua.

Edelleenkin, Docker container teknologiana ja sen käyttäminen omalla palvelimella on täysin maksutonta, myös isossa mittakaavassa. Ei ole tarpeellista edes kirjautua tuolle sivulle käytön aloittamiseksi.

mavavilj kirjoitti:

Entäpä se, että Docker on Linux-image, joten eikö tämä tarkoita, että tosiasiassa sen teknologia on myös Linuxissa?

Jos Dockerin teknologia jäi vielä epäselväksi, lue viestit uudestaan ja yritä vähän edes googlata.

mavavilj [28.03.2024 20:51:13]

#

No, kunhan epäilen, että nämä ovat vähän kuin Dropboxeja, jotka tekevät vanhat kunnon teknologiat helpommin käytettäviksi, mutta eivät oikeastaan keksi kauheasti uutta.

Metabolix [28.03.2024 21:15:07]

#

mavavilj kirjoitti:

No, kunhan epäilen, että nämä ovat vähän kuin DropBoxeja, jotka tekevät vanhat kunnon teknologiat helpommin käytettäviksi, mutta eivät oikeastaan keksi kauheasti uutta.

Namespacet ja cgroupit eivät ole dramaattisesti vanhempia teknologioita kuin Docker, vaan nämä ovat edelleen kehittyneet myös Dockerin ilmestymisen jälkeen. Muuten kyllä olet ihan oikeassa. Miksi se on sinusta ongelma? Eikö ole hyvä, että teknologia on helpommin käytettävää? Vähän kuin valittaisit, että vaikka C++:n standardikirjasto on vain turha käyttöä helpottava wrapperi käyttiksen syscallien ympärillä eikä keksi mitään uutta.

FreeBSD:n jail tai Linuxin systemd-nspawn tekee myös containerin. Kyse on vain siitä, millä työkaluilla toimitaan ja paljonko omaa vaivaa se vaatii. Docker on työkalu näiden helpompaan hallintaan.

mavavilj [29.03.2024 09:28:36]

#

Joskus ko. teknologioiden tarkoitus ei ole auttaa käyttäjiä vaan rahastaa heitä siitä, että he eivät tiedä. Lisäksi tarkoituksena on saada alustan omistus.

Siksi aloitin spekulaatiolla, että OS:stä puuttuu jotain, jos tarvitaan näitä.

Ko. teknologiat ovat ainakin ilmiselvästi non-GNU.

mavavilj [29.03.2024 09:47:23]

#

En ole aina varma onko edistynyt työkalu helpompi, koska se voi tuoda mukaan vieraita idioomeja tai jotain osia, joita ei tarvita barebones-versiossa. Tai se rajoittaa kehitystä OS:n suuntaan. Esimerkkinä jotkut build-systeemit, jotka pohjautuvat makeen, mutta ovat bloateja perusmaken käyttötarkoitukseen.

Erään paradigman mukaan tulisi valita aina pienin työkalu, joka sisältää tarvitut ominaisuudet.

Luullakseni myös Kubernetes onnistuu barebonesilla jotenkin.

Metabolix [29.03.2024 12:14:40]

#

mavavilj kirjoitti:

Erään paradigman mukaan tulisi valita aina pienin työkalu, joka sisältää tarvitut ominaisuudet.

Luullakseni myös Kubernetes onnistuu barebonesilla jotenkin.

Olet vapaa valitsemaan.

Toinen paradigma on, että valitse sopiva työkalu, joka säästää vaivaa. Klassinen esimerkki on peliohjelmoinnin puolelta: jos haluat tehdä pelin, tee peli jollain moottorilla äläkä uutta pelimoottoria.

mavavilj kirjoitti:

Joskus ko. teknologioiden tarkoitus ei ole auttaa käyttäjiä vaan rahastaa -- Ko. teknologiat ovat ainakin ilmiselvästi non-GNU.

Myös FreeBSD on non-GNU, onko se rahastusta? Dockerin lisenssi on Wikipedian mukaan Apache-lisenssi, joka on ihan ok. Kyllähän kaikenlaiseen ilmaiseen saa maksullisia palveluita, vaikka Ubuntu Linuxiin saa maksullista käyttäjätukea.

Tuolla Dockerin maksullisissa palveluissa on esim. suuria tiedonsiirtomääriä ja yksityistä dataa. Tietenkin levytila ja tiedonsiirto maksaa. Sen voi joko ostaa tuolta valmiiksi Dockerille sopivaksi tehtynä palveluna tai pystyttää omalle palvelimelle omalla työllä.

mavavilj [29.03.2024 13:17:00]

#

Metabolix kirjoitti:

Dockerin lisenssi on Wikipedian mukaan Apache-lisenssi, joka on ihan ok. Kyllähän kaikenlaiseen ilmaiseen saa maksullisia palveluita, vaikka Ubuntu Linuxiin saa maksullista käyttäjätukea.

Tuolla Dockerin maksullisissa palveluissa on esim. suuria tiedonsiirtomääriä ja yksityistä dataa. Tietenkin levytila ja tiedonsiirto maksaa. Sen voi joko ostaa tuolta valmiiksi Dockerille sopivaksi tehtynä palveluna tai pystyttää omalle palvelimelle omalla työllä.

https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9Gc­Rs3wl7an1Ek­PFcv­E0ev­py­u9­no­Qmb­Kjfrf­Cj­Ust­TIj­Ej­RSd­I6rs75U863x­VVVIGRKWXhPs&usqp=CAU

No ehkä tota CE:ia vois kattoa, vaikka ajattelin, että Podman tms. olisi filosofialleen uskollisempi.

Nämä kaupalliset community projektit on usein sellaisia, että niiden taka-ajatus on saada sinusta maksava asiakas myöhemmin.

mavavilj [29.03.2024 15:20:09]

#

Mitäs sitten, jos iso firma ostaa nämä teknologiat?

GPL on tätä varten.

mavavilj [29.03.2024 16:18:46]

#

Tein muuten tuon:

https://www.ohjelmointiputka.net/keskustelu/32445-miten-suhtaudutte-työpaikkailmoitusten-teknologioihin/v-245909

Koska spekuloin, että työpaikat liitossa evil-yritysten kanssa ja profit-apinaakoijataan.


Sivun alkuun

Vastaus

Muista lukea kirjoitusohjeet.
Tietoa sivustosta