Säiliöinti
Säiliöinti (engl. containerization) tai käyttöjärjestelmätason virtualisointi tarkoittaa tietotekniikassa kevyempää eriyttämistä kuin hypervisorilla tehtävä virtualisointi.
Ratkaisuja ovat muun muassa FreeBSD:n jail, Linux container, NetBSD:n sysjail, AIX Workload Partitions ja Solaris Container/Zone.
Säiliöt eivät tarvitse hypervisoria, virtuaalikoneita eikä tarvitse suorittaa kokonaista asiakaskäyttöjärjestelmää varsinaisen käyttöjärjestelmän lisäksi.[1] Myöskään levytilaa ei tarvitse varata toistuville tiedoille.[2] Säiliöitä voi käyttää kuudesta kahdeksaan kertaa enemmän samalla laitteistolla kuin perinteisellä virtualisoinnilla.[2]
Säiliöitä kutsutaan myös virtuaaliympäristöiksi (engl. Virtual Environment, VE) erona virtuaalikoneille.[3] Virtuaaliympäristö on tiettyihin tarkoituksiin sopiva vaihtoehto virtuaalikoneille pilvipalveluiden toteutukseen.[3] Säiliöintiä käytetään muuttumattomien käyttöjärjestelmien kanssa: näissä varsinainen käyttöjärjestelmä on samanlainen jokaisella koneella ja sovellukset asennetaan säiliöihin.[4]
Toteutustekniikat
muokkaaVarhainen tapa on ollut Unixissa toteutettu chroot
-rajoitus hakemistopuun rajaamiseksi, joka myöhemmin lisättiin 4.2BSD:ssä.[5]
Linuxissa säiliöinnin toteuttamiseen käytetään yhdistelmiä ytimen tukemia mekanismeja kuten cgroups-resurssointia ja nimiavaruuksia sekä seccomp, AppArmor ja SELinux oikeusrajoitteita.[2][6] Eri ratkaisuja ovat Docker, Linux-VServer, lmctfy, LXC, OpenVZ ja Podman. Ohjelmistot kuten Kubernetes, Mesos ja Swarm ovat suunnattu useiden säiliöiden hallintaan useilla eri koneilla klustereissa.[7][8][9]
Myös Copy-on-write -tekniikkaa voidaan käyttää hyödyksi, jolloin oma tallennustila varataan vasta kun on tarvetta tallettaa eriävää tietoa.[10]
Docker vaikutti merkittävästi säiliöinnin suosioon ja yleistymiseen.[11][12]
Open Container Initiative
muokkaaOpen Container Initiative (OCI) on Dockerin ja Linux Foundationin vuonna 2015 perustama yhteenliittymä, joka on standardoinut käytettäviä tiedostomuotoja, ohjelmointirajapintoja ja ajonaikaisia ympäristöjä. Docker refaktoroi ohjelmistonsa pienempiin komponentteihin, joista osan se luovutti määrittelyjen kanssa OCI:lle. OCI:n ohjelmistot ja määrittelyt toimivat perustana useille muille.[13]
Lähteet
muokkaa- ↑ Wainewright, Phil: Virtualization is dead, long live containerization diginomica.com. 2.7.2014. Viitattu 3.12.2017.
- ↑ a b c Chenxi Wang: What is Docker? Linux containers explained 29.6.2017. InfoWorld. Viitattu 4.12.2017.
- ↑ a b Rami Rosen: Linux Containers and the Future Cloud (PDF) haifux.org. Viitattu 4.3.2020. (englanniksi)
- ↑ Fedora Silverblue User Guide docs.fedoraproject.org. Viitattu 22.4.2021. (englanniksi)
- ↑ 9. Conclusion docs.freebsd.org. Viitattu 4.12.2017.
- ↑ Demystifying container runtimes lwn.net. 20.12.2017. Viitattu 8.3.2020. (englanniksi)
- ↑ https://github.com/kubernetes/kubernetes/
- ↑ Kubernetes vs. Mesos: Choosing a Container Orchestration Tool dzone.com. 8.1.2018. Viitattu 8.1.2021. (englanniksi)
- ↑ What is Kubernetes? Your next application platform infoworld.com. 3.4.2019. Viitattu 8.1.2021. (englanniksi)
- ↑ How To Run Linux Inside Linux With User Mode Linux linux.com. 11.1.2007. Viitattu 6.3.2020. (englanniksi)
- ↑ What is Docker and why is it so darn popular? 21.3.2018. ZDNet. Viitattu 6.3.2020. (englanniksi)
- ↑ Docker 101: What it is and why it’s important 10.6.2014. NetworkWorld. Viitattu 6.3.2020. (englanniksi)
- ↑ Jordan Webb: Docker and the OCI container ecosystem lwn.net. 26.7.2022. Viitattu 1.11.2022. (englanniksi)
Aiheesta muualla
muokkaa- Open Container Initiative (englanniksi)
- Rootless containers with Podman and fuse-overlayfs (PDF) (englanniksi)
- Image Format Specification (englanniksi)
- Open Container Initiative Runtime Specification (englanniksi)