Docker (softwarea)
| Jatorria | |
|---|---|
| Sortzailea(k) | Solomon Hykes (en) |
| Sorrera-urtea | 2013 |
| Argitaratze-data | 2013 |
| Azken bertsioa | 29.2.0 |
| Aurkezpen data | 2013ko martxoaren 15a |
| Ezaugarriak | |
| Euskarria | x86-64, ARM arkitektura eta IBM S/390 (en) |
| Programazio-lengoaia | Go |
| Media mota | application/vnd.docker.distribution.manifest.v1+json, application/vnd.docker.distribution.manifest.v2+json, application/vnd.docker.distribution.manifest.list.v2+json, application/vnd.docker.container.image.v1+json, application/vnd.docker.image.rootfs.diff.tar.gzip, application/vnd.docker.image.rootfs.foreign.diff.tar.gzip eta application/vnd.docker.plugin.v1+json |
| Irakur dezake | Dockerfile (en) |
| Sistema eragilea | Linux, Microsoft Windows, MacOS X eta UNIX-moduko |
| Idatz dezake | Dockerfile (en) |
| Egile-eskubideak | copyrightduna |
| Lizentzia | lizentzia jabedun eta Apache Lizentzia 2.0. |
| Ekoizpena | |
| Garatzailea | Docker, Inc. (en) |
| Maskota | Moby Dock (en) |
| docker.com | |
| Iturri-kodea | https://github.com/moby/moby |

Docker kode irekiko plataforma bat da, aplikazioak kontenedore[1] izeneko ingurune isolatuetan paketatzeko, banatzeko eta exekutatzeko diseinatua. Teknologia honek sistema eragilearen kernelaren gaitasunak erabiltzen ditu —batez ere cgroups, namespaces eta UnionFS antzeko fitxategi-sistemak—, aplikazioak modu arin, eramangarri eta koherentean exekutatu ahal izateko, makina birtual oso bat martxan jarri beharrik gabe. Dockerren bidez, garatzaileek eta sistemek ingurune koherenteak sor ditzakete, aplikazio baten funtzionamendua sistemaren konfigurazioaren, mendekotasunen edo azpiegituraren aldaketen aurrean ahalik eta egonkorrena izan dadin.[2][3][4]

Funtzionamendua
[aldatu | aldatu iturburu kodea]Dockerren kontenedoreak aplikazio baten exekuzio-ingurune logiko eta isolatua dira. Kontenedore bakoitzak bere prozesu-espazioa, sare-konfigurazioa eta fitxategi-sistema ditu, eta, aldi berean, sistema eragilearen kernel bera partekatzen du gainerako kontenedoreekin.[5] Horrela, kontenedoreak:
- oso azkar abiatzen dira,
- baliabide gutxiago erabiltzen dute,
- eta portaera homogeneoa mantentzen dute plataforma desberdinetan.
Dockerrek kernelaren birtualizazio-ezaugarrietara sartzeko bi mekanismo nagusi erabiltzen ditu:
- runC / libcontainer[6][7] - Dockerren exekuzio-motor nagusia, kernelarekin zuzenean elkarreragiten duena.
- LXC edo systemd-nspawn bezalako[8] abstrakzio-geruzak — hainbat sistemak erabiltzen dituzten ingurune isolatuak sortzeko aukera osagarriak.
Kontenedoreak Docker irudiak izeneko ereduen arabera sortzen dira; irudi horiek aplikazioaren kodea, konfigurazioa eta behar diren mendekotasun guztiak biltzen dituzte.
Abantailak
[aldatu | aldatu iturburu kodea]Dockerren arrakasta hainbat abantailetan oinarritzen da.
Arintasuna: kontenedoreak ez dira makina birtualak bezala; ez dute sistema eragile osoa exekutatzen, eta horrek baliabide gutxiago kontsumitzea eta abioko denbora laburragoak ekartzen ditu.
Eramangarritasuna: aplikazio bat kontenedore batean exekutatuta edozein sistema bateragarritan berdin portatuko da, izan Linux, Windows edo hodeiko plataforma bat.
Eskalagarritasuna: kontenedoreak azkar sortu, kopiatu eta banatu daitezke, mikrozerbitzu-arkitekturetan eta sistema banatuetan oso erabilgarriak bihurtuz.
Isolamendua: aplikazio bakoitzak bere ingurune logikoa du, eta horrek segurtasuna, errepikakortasuna eta gatazka gutxiago bermatzen ditu.[9]
Ekosistema eta Integrazioa
[aldatu | aldatu iturburu kodea]Dockerrek ekosistema oso zabal eta heldua du, eta tresna ugarirekin integra daiteke:
- Hodei-plataformak: AWS, Google Cloud, Azure, OpenStack
- Konfigurazio-kudeaketa: Ansible, Puppet, Chef
- CI/CD sistemak: Jenkins, GitLab CI, GitHub Actions
- Orkestrazio-plataformak: Kubernetes, Docker Swarm
Tresna horiek kontenedoreen automatizazioa, monitorizazioa, eskalatzea eta orkestrazioa errazten dituzte.[10][11]
Historia
[aldatu | aldatu iturburu kodea]Docker 2013an kaleratu zen, hasiera batean dotCloud enpresaren barne-proiektu modura. Proiektuak arrakasta berehalakoa izan zuen, eta laster bihurtu zen garatzaileentzat eta sistema-ingeniarientzat erreferentziazko estandar. Denborarekin, enpresa handiek —Red Hat, IBM, Microsoft, Google eta beste askok— ekarpen garrantzitsuak egin dituzte, eta komunitateak milaka plugin, irudi eta tresna garatu ditu. Docker Inc. enpresak teknologia hori komertzialki bultzatu zuen eta, 2015ean, runC eta Open Container Initiative (OCI)[12] sortu zituen, kontenedoreen estandar irekia ezartzeko.[13][14]
Arkitektura
[aldatu | aldatu iturburu kodea]Dockerren arkitekturak honako osagai hauek ditu:
- Docker Engine — zerbitzaria (daemon-a) eta CLI bezeroa.
- Docker Images — aplikazioaren egoera definitzen duten irudi geruzatuak.
- Docker Containers — irudietan oinarritutako exekuzio-inguruneak.
- Dockerfile — irudi automatizatuak sortzeko konfigurazio-fitxategia.
- Registries — irudiak gordetzeko biltegiak (Docker Hub, GitHub Container Registry…).
Segurtasuna
[aldatu | aldatu iturburu kodea]Kontenedoreek kernel bera partekatzen dutenez, isolamendu-maila ez da makina birtualetan bezain sakona, baina honako mekanismoek segurtasun fidagarria eskaintzen dute:
- cgroups — baliabideen muga eta kudeaketa
- namespaces — isolamendu logikoa
- seccomp, SELinux, AppArmor — pribilegio-kontrola eta baimen-mugak
Segurtasun-arazo gehienak konfigurazio okerretatik datoz, ez teknologia beretik.[15]
Lizentzia eta erabilera baldintzak
[aldatu | aldatu iturburu kodea]Docker Engine Apache License 2.0 lizentziapean banatzen da, eta Docker proiektuaren zenbait osagai GPL lizentziaren arabera. Docker Desktop, berriz, ez da doakoa tamaina jakin batetik gorako enpresentzat. Dockerfile fitxategien lizentziak fitxategiari eragiten dio, ez bertatik sortzen den kontenedore-irudiari.[16]
Erreferentziak
[aldatu | aldatu iturburu kodea]- ↑ (Gaztelaniaz) «¿Para que sirve Docker y como funcionan sus contenedores? | Blog de Arsys» Arsys (kontsulta data: 2025-12-27).
- ↑ (Ingelesez) Noyes, Katherine. «Docker: A 'Shipping Container' for Linux Code» Linux.com | The source for Linux Information (kontsulta data: 2025-12-27).
- ↑ (Ingelesez) «Docker: Automated and Consistent Software Deployments» InfoQ (kontsulta data: 2025-12-27).
- ↑ «Kernel Requirements - Docker Documentation» docker.readthedocs.org (kontsulta data: 2025-12-27).
- ↑ (Ingelesez) «Docker libcontainer unifies Linux container powers» ZDNET (kontsulta data: 2025-12-27).
- ↑ Scott, Sean. (2023). «Introducing Docker and Oracle» Oracle on Docker (Apress): 3–18. ISBN 978-1-4842-9032-3. (kontsulta data: 2025-12-27).
- ↑ (Ingelesez) docker-archive. «libcontainer/README.md at master · docker-archive/libcontainer» GitHub (kontsulta data: 2025-12-27).
- ↑ (Ingelesez) «Docker drops LXC as default execution environment» InfoQ (kontsulta data: 2025-12-27).
- ↑ «Iron.io Blog: How Docker Helped Us Achieve the (Near) Impossible» blog.iron.io (kontsulta data: 2025-12-27).
- ↑ «Contenedores en Compute Engine» Google Cloud Documentation (kontsulta data: 2025-12-27).
- ↑ (Ingelesez) «Bluemix Launches IBM Containers Beta Based on Docker» Bluemix 2014-12-04 (kontsulta data: 2025-12-27).
- ↑ (Ingelesez) «Docker libcontainer unifies Linux container powers» ZDNET (kontsulta data: 2025-12-27).
- ↑ «Ben Golub, Who Sold Gluster to Red Hat, Now Running dotCloud | Maureen O'Gara» maureenogara.sys-con.com (kontsulta data: 2025-12-27).
- ↑ (Ingelesez) Darrow, Barb. (2013-07-23). «PaaS pioneer dotCloud gets new CEO in industry vet Ben Golub» Gigaom (kontsulta data: 2025-12-27).
- ↑ (Ingelesez) Walsh, Dan. (2014-09-15). «Yet Another Reason Containers Don't Contain: Kernel Keyrings» www.projectatomic.io (kontsulta data: 2025-12-27).
- ↑ (Ingelesez) «Get Docker» Docker Documentation 2025-05-28 (kontsulta data: 2025-12-27).