{"id":13517,"date":"2024-11-29T00:00:00","date_gmt":"2024-11-28T23:00:00","guid":{"rendered":"https:\/\/www.picademie.nl\/?p=13517"},"modified":"2025-01-06T14:13:34","modified_gmt":"2025-01-06T13:13:34","slug":"docker","status":"publish","type":"post","link":"https:\/\/www.picademie.nl\/index.php\/2024\/11\/29\/docker\/","title":{"rendered":"Docker (containerisatie)"},"content":{"rendered":"\n<pre class=\"wp-block-preformatted\">Net als transportbedrijven fysieke containers gebruiken om verschillende soorten lading van elkaar te scheiden zo passen ook technologie\u00ebn voor softwareontwikkeling steeds meer een methode toe waarbij containers worden gebruikt.<br>Een standaardpakket van software, een zogeheten container, bundelt de code van een toepassing samen met de bijbehorende configuratie- bestanden, bibliotheken en afhankelijkheden die nodig zijn om de toepassing (app) uit te voeren. Op die manier kunnen ontwikkelaars en IT-professionals toepassingen naadloos in verschillende omgevingen implementeren.<br><\/pre>\n\n\n\n<p><a href=\"https:\/\/www.docker.com\/\">Docker<\/a> heeft moderne softwareontwikkeling veranderd door het ontwikkelaars makkelijker te maken. Door het host-besturingssysteem af te zonderen, kunnen ontwikkelaars hun echte werk sneller en effici\u00ebnter dan ooit uitvoeren. Zo kunnen ontwikkelaars zich richten op het implementeren en effici\u00ebnt uitvoeren van hun applicaties. Van het verpakken van applicaties in een enkele container tot het behouden van consistentie in verschillende omgevingen, Docker is het antwoord voor diegenen die op zoek zijn naar effici\u00ebnte, consistente en eenvoudig te implementeren applicaties.<\/p>\n\n\n\n<p>Omdat de software zich in een container bevindt, heeft deze geen toegang tot gegevens die de Docker-runtime (= omgeving waarin het programma wordt uitgevoerd) niet aan de software verstrekt. Elke container is volledig ge\u00efsoleerd van andere containers. De toepassing in een container ziet dus niet de toepassingen in andere containers. En door \u00e9\u00e9n container te installeren en bij te werken, ben je zeker dat die nieuwe versie niet in conflict komt met toepassingen in andere containers. Dit kan helpen bij de beveiliging en het beheer van bronnen.<\/p>\n\n\n\n<p>Met Docker kun je software moeiteloos op apparaten implementeren, omdat alles zich in de container bevindt die de zgn. runner (degene die taken uitvoert) downloadt. Die toepassingen vind je in de vorm van een image op de&nbsp;<a href=\"https:\/\/hub.docker.com\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Docker Hub<\/strong><\/a>. Zo\u2019n image is in feite een sjabloon voor een minimaal systeem, dat je bovenop Raspberry Pi OS kunt draaien in de vorm van een container.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"430\" height=\"407\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/Docker-blokken-1.png\" alt=\"\" class=\"wp-image-13588\" style=\"width:355px;height:auto\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/Docker-blokken-1.png 430w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/Docker-blokken-1-300x284.png 300w\" sizes=\"auto, (max-width: 430px) 100vw, 430px\" \/><\/figure>\n\n\n\n<p>Als je meer dan een handvol toepassingen op je Raspberry Pi&nbsp;wilt draaien, helpt Docker je dus om dat op een betrouwbare manier te doen. Dankzij Docker kun je ook gerust experimenteren met nieuwe software: bevalt die je niet (meer), dan verwijder je gewoon de container.<\/p>\n\n\n\n<p>Het beste van alles is dat Docker dit allemaal doet met een zeer lage overhead. Hierdoor kan de software op een machine met beperkte resources draaien, zoals de Raspberry Pi.<\/p>\n\n\n\n<p>Hieronder leg ik uit hoe je Docker op een Raspberry Pi installeert en hoe je kunt testen of het programma correct werkt.<\/p>\n\n\n\n<p>Docker voor de Raspberry Pi ondersteunt de meeste versies van het Raspberry Pi OS.<\/p>\n\n\n\n<p><em>Daar gaan we\u2026<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Docker installeren <\/h2>\n\n\n\n<p>Dankzij een handig installatiescript dat door het Docker-team ontwikkeld is, is het installeren van de containersoftware erg eenvoudig. Je kunt de volgende stappen uitvoeren door een&nbsp;<a href=\"https:\/\/pimylifeup.com\/raspberry-pi-ssh\/\">SSH-verbinding<\/a>&nbsp;te gebruiken .<\/p>\n\n\n\n<p><strong>Raspberry Pi OS updaten<\/strong><\/p>\n\n\n\n<p>Om de Docker Engine te installeren wordt geadviseerd de <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">32-bits versie <\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-black-color\">van <\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Raspberry Pi OS (Bookworm\/Bullseye)<\/mark><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-black-color\"> te gebruiken. A<\/mark>llereerst werken we de pakketten van het Raspberry Pi OS bij voordat we starten met de installatie van Docker. Dit doen we door de volgende twee opdrachten in de terminal uit te voeren.<\/p>\n\n\n\n<p><kbd>sudo apt update<\/kbd><\/p>\n\n\n\n<p><kbd>sudo apt upgrade<\/kbd><\/p>\n\n\n\n<p><strong>Docker Engine installeren<\/strong><\/p>\n\n\n\n<p>Nu de Raspberry Pi helemaal up-to-date is, kunnen we Docker op de Raspberry Pi installeren. Gelukkig heeft Docker dit proces heel snel en eenvoudig gemaakt door een bash-script te leveren dat alles voor je installeert.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p><strong>Oude versies verwijderen<\/strong><br>Voordat je Docker Engine kunt installeren, moet je alle conflicterende pakketten verwijderen. De Linux-distributie kan onoffici\u00eble Docker-pakketten leveren, die mogelijk conflicteren met de offici\u00eble pakketten die door Docker worden geleverd. Daarom moeten deze pakketten verwijderd worden voordat je de offici\u00eble versie van Docker Engine installeert.<\/p>\n\n\n\n<p>Voer de volgende opdracht uit om alle conflicterende pakketten te verwijderen:<\/p>\n\n\n\n<p><kbd>for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done<\/kbd><\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><sup>Note van HanD (admin): Ik heb geen oude versies verwijderd en heb er geen hinder van ondervonden om deze tutorial tot een goed en werkend einde te brengen. <\/sup><\/mark> <\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Je kunt het offici\u00eble Docker-installatiescript downloaden en uitvoeren door de volgende opdracht uit te voeren.<\/p>\n\n\n\n<p><kbd>curl -sSL https:\/\/get.docker.com | sh<\/kbd><\/p>\n\n\n\n<p>Als de installatie afgerond is, verschijnt de volgende info waarmee aangegeven wordt dat de installatie geslaagd is.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"584\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/docker-1.png\" alt=\"\" class=\"wp-image-13688\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/docker-1.png 605w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/docker-1-300x290.png 300w\" sizes=\"auto, (max-width: 605px) 100vw, 605px\" \/><\/figure>\n\n\n\n<p>Als het goed is, kunnen we nu een image installeren, dit doen we door de&nbsp;&#8216;<code><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">hello-world<\/mark>'<\/code> image uit te voeren:<\/p>\n\n\n\n<p><kbd>sudo docker run hello-world<\/kbd><\/p>\n\n\n\n<p>In plaats van bovenstaande commando in te geven, kan dit ook met het volgende commando:<\/p>\n\n\n\n<p><kbd>sudo docker run --rm hello-world<\/kbd><\/p>\n\n\n\n<p>Door de optie &#8212;<strong>rm&nbsp;<\/strong>wordt de (test)container na het afsluiten van het programma opgeruimd.<\/p>\n\n\n\n<p>Je hebt de <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Docker Engine<\/mark> nu succesvol ge\u00efnstalleerd en gestart. <\/p>\n\n\n\n<p>Wanneer de container wordt uitgevoerd, wordt er een bevestigingsbericht afgedrukt en wordt de container afgesloten.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"651\" height=\"392\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/image-35.png\" alt=\"\" class=\"wp-image-13607\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/image-35.png 651w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/image-35-300x181.png 300w\" sizes=\"auto, (max-width: 651px) 100vw, 651px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ubuntu container<\/strong><\/h2>\n\n\n\n<p>Zoals het scherm hierboven al aangeeft kun je nu een Ubuntu container aanmaken met:<\/p>\n\n\n\n<p><kbd>sudo docker run -it ubuntu bash<\/kbd><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"652\" height=\"133\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/image-36.png\" alt=\"\" class=\"wp-image-13696\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/image-36.png 652w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/image-36-300x61.png 300w\" sizes=\"auto, (max-width: 652px) 100vw, 652px\" \/><\/figure>\n\n\n\n<p>Je zit nu in de Ubuntu terminal. Geef &#8216;<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">exit<\/mark>&#8216; om terug in de terminal van de Pi te komen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Containeroverzicht<\/strong><\/h2>\n\n\n\n<p>Het volgende commando toont alle containers, ongeacht of ze draaien, opnieuw opstarten, gepauzeerd of gestopt zijn.<\/p>\n\n\n\n<p><kbd>sudo docker ps -a<\/kbd><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"818\" height=\"137\" src=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/image-37.png\" alt=\"\" class=\"wp-image-13627\" style=\"width:786px;height:auto\" srcset=\"https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/image-37.png 818w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/image-37-300x50.png 300w, https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/image-37-768x129.png 768w\" sizes=\"auto, (max-width: 818px) 100vw, 818px\" \/><figcaption class=\"wp-element-caption\">Zoals je ziet heb ik &#8216;hello-world&#8217; al eerder geprobeerd.<\/figcaption><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Portainer<\/strong> <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\"><strong>(Aanrader!)<\/strong><\/mark><\/h3>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-black-color\">Vanaf dit punt kun je <a href=\"https:\/\/www.picademie.nl\/index.php\/2024\/12\/03\/portainer-docker-beheer-met-gui\/\">Portainer installeren<\/a>. Portainer is software om Docker middels een GUI te beheren. <\/mark>Eenmaal gebruikt en je wilt nooit meer anders!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>Mocht je ondersteuning voor Docker nodig hebben, kijk dan in de speciale <a href=\"https:\/\/docs.docker.com\/engine\/install\/raspberry-pi-os\/\">Raspberry Pi documentatie van Docker<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusie<\/strong><\/h2>\n\n\n\n<p>Ofschoon we niet op de theorie van Docker zijn ingegaan, heb je kunnen zien hoe eenvoudig Docker te installeren is. Je kunt Docker veilig gebruiken voor je project, bijvoorbeeld voor het opzetten van een&nbsp;<a href=\"https:\/\/docs.docker.com\/engine\/swarm\/\"><strong>Docker-zwerm<\/strong><\/a>&nbsp;met je Raspberry Pi. Een Docker-container is een mooie en veilige manier om snel software op je apparaat te implementeren. Snuffel eens op de&nbsp;<a href=\"https:\/\/docs.docker.com\/desktop\/setup\/install\/linux\/debian\/\"><strong>Docker-website<\/strong><\/a>. Je vindt er interessante onderwerpen.<\/p>\n\n\n\n<p><em>Have A Nice Day!<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Net als transportbedrijven fysieke containers gebruiken om verschillende soorten lading van elkaar te scheiden zo passen ook technologie\u00ebn voor softwareontwikkeling steeds meer een methode toe <a class=\"mh-excerpt-more\" href=\"https:\/\/www.picademie.nl\/index.php\/2024\/11\/29\/docker\/\" title=\"Docker (containerisatie)\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":13518,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":true,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[728,730],"tags":[],"class_list":["post-13517","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-handy-stuff","category-tooling"],"jetpack_featured_media_url":"https:\/\/www.picademie.nl\/wp-content\/uploads\/2024\/11\/Docker.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/13517","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/comments?post=13517"}],"version-history":[{"count":0,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/posts\/13517\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media\/13518"}],"wp:attachment":[{"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/media?parent=13517"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/categories?post=13517"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.picademie.nl\/index.php\/wp-json\/wp\/v2\/tags?post=13517"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}