{"id":7243,"date":"2021-06-28T17:36:33","date_gmt":"2021-06-28T15:36:33","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=7243"},"modified":"2022-12-12T20:06:51","modified_gmt":"2022-12-12T18:06:51","slug":"container-praxiseinstieg-docker-unter-xubuntu-linux-installieren-text-video","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/container-praxiseinstieg-docker-unter-xubuntu-linux-installieren-text-video\/","title":{"rendered":"Container Praxiseinstieg: Docker unter (X)Ubuntu Linux installieren (Text + Video)"},"content":{"rendered":"<p>Dieser Artikel zeigt, wie ihr schnell und einfach in Linux-Container mit Docker einsteigen k\u00f6nnt. Ich empfehle die Nutzung einer LTS-Version von Ubuntu oder dessen Derivaten wie z.B. Xubuntu, im besten Falle die aktuelle. Derzeit ist das Version 20, die im Folgenden verwendet wird. Alternativ funktionieren auch unterst\u00fctzte nicht LTS Versionen, eine Liste findet ihr am Anfang der Doku. Sie ist auf Englisch und ein guter Einstieg zur Installation, auch f\u00fcr andere Distributionen wie z.B. CentOS oder Fedora. Um Docker zu installieren, \u00f6ffnet das Terminal oder schaltet euch per SSH auf das System.<\/p>\n<p>Wie bei jeder Paketinstallation sollten wir zun\u00e4chst die Paketlisten aktualisieren:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">sudo apt-get update<\/code><\/pre>\n<p>Nun stellen wir sicher, dass ben\u00f6tigte Abh\u00e4ngigkeiten installiert sind:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release<\/code><\/pre>\n<p>Der Schalter -y erspart uns hierbei das h\u00e4ndische Best\u00e4tigen. Da die Installation \u00fcber Dockers eigenes Repository erfolgt, f\u00fcgen wir dessen PGP-Schl\u00fcssel zu unserem Schl\u00fcsselring hinzu:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo gpg --dearmor -o \/usr\/share\/keyrings\/docker-archive-keyring.gpg<\/code><\/pre>\n<p>Unser System vertraut dadurch Dockers Repository, in dem alle notwendigen Pakete enthalten sind. Dieses Repository k\u00f6nnen wir nun hinzuf\u00fcgen:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">echo \\\n  &quot;deb [arch=amd64 signed-by=\/usr\/share\/keyrings\/docker-archive-keyring.gpg] https:\/\/download.docker.com\/linux\/ubuntu \\\n  $(lsb_release -cs) stable&quot; | sudo tee \/etc\/apt\/sources.list.d\/docker.list &gt; \/dev\/null<\/code><\/pre>\n<p>Vor der Installation ist es notwendig die Paketliste zu aktualisieren:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">sudo apt-get update<\/code><\/pre>\n<p>Dies l\u00e4dt eine Auflistung aller Pakete, die im soeben hinzugef\u00fcgten Docker-Repository enthalten sind. Schlussendlich k\u00f6nnen wir Docker installieren, hierzu sind drei Pakete notwendig:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">sudo apt-get install docker-ce docker-ce-cli containerd.io<\/code><\/pre>\n<p>Docker (hier als Community-Edition) ist aufgeteilt in einen Daemon und eine CLI. Wenn wir Docker-Befehle ausf\u00fchren, leitet die CLI diese an den Daemon weiter und empf\u00e4ngt die Antwort. Containerd ist eine Abstraktionsschicht von Kernelfunktionen, die f\u00fcr Container genutzt werden. Eine Vertiefung w\u00fcrde an dieser Stelle zu weit f\u00fchren. Stellen wir es uns f\u00fcr den Anfang als Client-Server Architektur vor, die in diesem Falle komplett lokal l\u00e4uft.<\/p>\n<h2 class=\"wp-block-heading\">Unser erster &#8222;Hello World&#8220; Container<\/h2>\n<p>Starten wir nun unseren ersten Container: Standardm\u00e4\u00dfig m\u00fcssen wir alle Docker-Befehle als root ausf\u00fchren, au\u00dferhalb einer root-Shell also mit sudo. &#8222;Docker&#8220; ist der Befehl f\u00fcr den CLI-Client, den wir mit &#8222;run&#8220; dazu anweisen, einen neuen Container zu starten. Schlussendlich folgt der Name des Images, wovon wir einen Container starten k\u00f6nnen. In der Docker-Registry gibt es hierzu ein Image namens &#8222;hello world&#8220;. Wie der Name schon sagt, startet es einen Container, der uns eine kleine Demonstrationsausgabe liefert:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">sudo docker run hello-world<\/code><\/pre>\n<h2 class=\"wp-block-heading\">Praxistauglicheres Beispiel: Ein Webserver<\/h2>\n<p>Da uns ein Hello World Container wenig n\u00fctzt, starten wir einen zweiten Container. Diesmal nutzen wir das Nginx Image. Nginx ist ein effizienter, leichtgewichtiger Webserver. Das Syntax ist identisch wie oben, allerdings mit zwei Unterschieden: &#8222;hello world&#8220; ersetzen wir durch &#8222;nginx&#8220;, da wir ja nicht das Hello World Image erhalten wollen. Da ein Webserver auf Port 80 lauscht, ben\u00f6tigen wir eine Portweiterleitung: Mit -p 80:80 geben wir an, dass Port 80 des Containers auf Port 80 des Hosts weitergeleitet werden soll.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">sudo docker run -p 80:80 nginx<\/code><\/pre>\n<p>Beim ersten Start l\u00e4dt Docker auch hier zun\u00e4chst das Image aus dem Docker-Hub herunter und startete anschlie\u00dfend den Container. Durch die Portweiterleitung k\u00f6nnen wir den Webserver auf localhost erreichen. Auf der Konsole sehen wir das Zugriffslog mit unserer soeben durchgef\u00fchrten Testanfrage.<\/p>\n<p>Ging schnell, oder? Eben so einfach k\u00f6nnen wir den Container wieder stoppen oder zerst\u00f6ren &#8211; und das, ohne Reste oder gar Konflikte auf unserem System zu hinterlassen. <\/p>\n<h2 class=\"wp-block-heading\">Weiterf\u00fchrende Informationen\/Quellen<\/h2>\n<p><a href=\"https:\/\/docs.docker.com\/engine\/install\/ubuntu\/\" target=\"_blank\" rel=\"nofollow\">https:\/\/docs.docker.com\/engine\/install\/ubuntu\/<\/a>\r\nBildquellen: Docker, Ubuntu, www.flaticons.com (Vectors Market)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dieser Artikel zeigt, wie ihr schnell und einfach in Linux-Container mit Docker einsteigen k\u00f6nnt. Ich empfehle die Nutzung einer LTS-Version von Ubuntu oder dessen Derivaten wie z.B. Xubuntu, im besten Falle die aktuelle. Derzeit ist das Version 20, die im Folgenden verwendet wird. Alternativ funktionieren auch unterst\u00fctzte nicht LTS Versionen, eine Liste findet ihr am &#8230;<\/p>\n","protected":false},"author":5,"featured_media":7245,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[883,74],"tags":[885,497,884],"class_list":["post-7243","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docker-containertechnologie","category-linux","tag-anfaenger","tag-docker","tag-einsteiger"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/7243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=7243"}],"version-history":[{"count":3,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/7243\/revisions"}],"predecessor-version":[{"id":9873,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/7243\/revisions\/9873"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/7245"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=7243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=7243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=7243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}