Docker ist zwar kein brandaktuelles Thema mehr, dennoch lohnt es sich mal einen Blick auf Docker zu werfen. Neben der Möglichkeiten für Developer und DevOps Themen findet Docker zum Beispiel auch im Bereich Data Science und Big Data seinen Platz.
In diesem ersten Artikel zu Docker will ich einmal zeigen, wie man die Software auf einem CentOS Server installiert und sich bereits fertige Container auf seinen Server herunterladen kann.
Inhaltsverzeichnis
Installation von Docker unter Centos
Um Docker auf unserem System zu installieren, kann der folgende Befehl verwendet werden. Dieser fügt das Repository auf unserem System hinzu und installiert anschließend die aktuelle Docker Version.
1 | curl -fsSL https://get.docker.com/ | sh |
Nach der Installation wird auf unserem System der entsprechende Service gestartet. Dafür kann der folgende Befehl verwendet werden.
1 | sudo systemctl start docker |
Damit der Service auch nach einem Neustart zur Verfügung steht, führen wir noch den folgenden Befehl aus.
1 | sudo systemctl enable docker |
Ausführen von Docker ohne root Rechte
Auf manchen Systemen kann es praktisch sein, wenn man Docker ohne entsprechende root Rechte auf dem System ausführen kann. Dafür muss ich den folgenden Befehl mit dem entsprechenden User durchführen. Da ich mich zur Zeit mit dem User angemeldet habe, verwende ich $(whoami).
1 | sudo usermod -aG docker $(whoami) |
Arbeiten mit Docker Images
Ein Image lässt sich relativ einfach mit dem Befehl docker run „ImageName“ starten. Im folgenden Codebeispiel sehen wir, wie ich auf dem CentOS System hello-world ausführe und was dabei passiert.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | docker run hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world ca4f61b1923c: Pull complete Digest: sha256:083de497cff944f969d8499ab94f07134c50bcf5e6b9559b27182d3fa80ce3f7 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://cloud.docker.com/ For more examples and ideas, visit: https://docs.docker.com/engine/userguide/ |
Da auf dem System kein Image mit dem Namen hello-world vorhanden ist, wird ein entsprechendes Image aus dem Repository heruntergeladen. Anschließend wird das Image ausgeführt, was man durch die Ausgabe „Hello from Docker!“ sieht.
Im nächsten Schritt wollen wir remote nach entsprechenden Images suchen. Ich suche hier jetzt zum Beispiel mal alle Images die CentOS im Namen haben:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 4055 [OK] ansible/centos7-ansible Ansible on Centos7 105 [OK] jdeathe/centos-ssh CentOS-6 6.9 x86_64 / CentOS-7 7.4.1708 x86_… 91 [OK] consol/centos-xfce-vnc Centos container with "headless" VNC session… 45 [OK] imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 38 [OK] tutum/centos Simple CentOS docker image with SSH access 36 gluster/gluster-centos Official GlusterFS Image [ CentOS-7 + Glust… 22 [OK] centos/python-35-centos7 Platform for building and running Python 3.5… 19 openshift/base-centos7 A Centos7 derived base image for Source-To-I… 17 kinogmt/centos-ssh CentOS with SSH 17 [OK] openshift/jenkins-2-centos7 A Centos7 based Jenkins v2.x image for use w… 10 centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 7 openshift/mysql-55-centos7 DEPRECATED: A Centos7 based MySQL v5.5 image… 6 darksheer/centos Base Centos Image -- Updated hourly 3 [OK] openshift/jenkins-1-centos7 DEPRECATED: A Centos7 based Jenkins v1.x ima… 3 pivotaldata/centos-gpdb-dev CentOS image for GPDB development. Tag names… 3 openshift/wildfly-101-centos7 A Centos7 based WildFly v10.1 image for use … 3 blacklabelops/centos CentOS Base Image! Built and Updates Daily! 1 [OK] miko2u/centos6 CentOS6 日本語環境 1 [OK] pivotaldata/centos-mingw Using the mingw toolchain to cross-compile t… 1 pivotaldata/centos Base centos, freshened up a little with a Do… 1 openshift/wildfly-100-centos7 A Centos7 based WildFly v10.0 image for use … 1 pivotaldata/centos-gcc-toolchain CentOS with a toolchain, but unaffiliated wi… 0 jameseckersall/sonarr-centos Sonarr on CentOS 7 0 [OK] smartentry/centos centos with smartentry 0 [OK] |
So haben wir die Möglichkeit zu sehen, welche Images es bereits zu einem bestimmten Signalwort schon gibt und wir müssen an dieser Stelle das Rad nicht neu erfinden.
Habe ich ein Image gefunden, welches ich nun verwenden will, kann ich dieses mit dem folgenden Befehl herunterladen. Ich werde an dieser Stelle das erste Image (centos) herunterladen.
1 2 3 4 5 6 | docker pull centos Using default tag: latest latest: Pulling from library/centos af4b0a2388c6: Pull complete Digest: sha256:6247c7082d4c86c61b00f7f2e3edbf7f072a24aa8edc28b5b68b3de3101bc1ce Status: Downloaded newer image for centos:latest |
Mit dem folgenden Befehl können wir uns anzeigen lassen, welche Images auf unserem System nun hinterlegt sind.
1 2 3 4 | docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest ff426288ea90 7 weeks ago 207MB hello-world latest f2a91732366c 3 months ago 1.85kB |
Einen Container laufen lassen
Um nun den Container zu starten, kann der folgende Befehl verwendet werden.
1 2 | docker run -it centos [root@f1ef1403fb52 /]# |
Nach dem Ausführen des Befehls befinden wir uns direkt im Docker Container und können innerhalb dieses Containers arbeiten.
Damit haben wir erfolgreich Docker installiert, ein entsprechendes Image im Repository gesucht, diese Image heruntergeladen und anschließend das Image gestartet.
Video
Im nächsten Artikel beschäftige ich mich mit dem Thema Eigenes Docker Images mit Dockerfile erstellen.
[…] vergangenen Artikel haben wir uns nun bereits einige Docker Themen angeschaut. Das ging über die Installation von Docker über Python Apps deployen bis zum Aufbau kleiner Microservices. Heute schauen wir uns mal alles […]