Modius - Techblog

  • Ansible
  • Docker
  • DevOps
  • Gastautor werden
  • Newsletter abonnieren
  • Über Mich
  • Kontakt

Eigenes Docker Images mit Dockerfile erstellen

Veröffentlicht am 16. März 2018 von Christian Piazzi 3 Kommentare , Aktualisiert am 12. Juli 2020
Geschätzte Lesezeit: 2 Minuten

Bild mit Container als Docker Titelbild

Im letzten Artikel haben wir uns damit beschäftigt, wie man Docker installiert, Images im Repository finden, diese auf dem eigenen Rechner hinterlegt und startet. Als nächstes wollen wir uns anschauen, wie man selber ein Docker Image mit einem entsprechenden Dockerfile erstellen kann.

Inhaltsverzeichnis

  • 1 Erstellen eines Dockerfile
  • 2 Docker Build Image
  • 3 Video

Erstellen eines Dockerfile

Den Anfang für ein eigenes Docker Image macht immer ein Dockerfile. In einem Dockerfile werde die Anweisungen hinterlegt, welche beim erstellen des Images ausgeführt werden soll. Als Beispiel will ich in meinem Docker Image Pandas hinterlegen.

Als erstes lege ich mir einen Ordner für mein Docker Image an. In diesem Ordner erstelle ich dann eine Datei mit dem Namen dockerfile.

Shell
1
2
3
mkdir pandas
cd pandas
touch dockerfile

Nachdem die Datei angelegt ist, öffnet man diese mit einem Editor seiner Wahl.

Im ersten Eintrag im Dockerfile verweise ich auf das CentOS Image, welches wir im letzten Artikel bereits heruntergeladen haben. Damit können wir uns das Erstellen eines CentOS Images sparen. Wer kein CentOS mag kann hier auch gerne eine andere Distribution verwenden. Die meisten findet man als Image im DockerHub.

Shell
1
from centos

Anschließend sollen in dem Image die Updates von CentOS installiert werden. Dafür verwendet man den Standard CentOS Befehl yum update -y. Diesem voran wird nun das Keyword RUN gestellt. Dadurch weis Docker beim Bauen des Images, dass dies eine Anweisung ist die ausgeführt werden soll.

1
RUN yum update -y

Damit wir im nächsten Schritt pandas installieren könne, müssen wir auf dem selben wegen nun noch das epel Repository und den Python Paketmanager pip installieren.

Shell
1
2
RUN yum -y install epel-release && yum clean all
RUN yum -y install python-pip && yum clean all

Nun wollen wir noch die Python Library pandas installieren. Dazu benötigen wir wie im Schritt zuvor das Keyword RUN. Diesem fügen wir die entsprechende pip Installationsanweisung an, um pandas zu installieren.

Shell
1
RUN pip install pandas

Damit ist das Dockerfile nun fertig. Hier nun nochmal die komplette Datei zum kopieren

Shell
1
2
3
4
5
6
7
8
from centos
 
RUN yum update -y
 
RUN yum -y install epel-release && yum clean all
RUN yum -y install python-pip && yum clean all
 
RUN pip install pandas

Docker Build Image

Um das Docker Image jetzt zu bauen, verwenden man den Befehl docker build. Dieser ließt das erstellt Dockerfile ein, führt die Anweisungen aus unter hinterlegt das fertige Image auf unserem System. mit -t legt man noch einen Namen für das Image fest. Das ganze sieht dann ungefähr so aus.

Shell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@localhost pandas]# docker build -t pandas .
Sending build context to Docker daemon  2.048kB
Step 1/5 : from centos
---> ff426288ea90
Step 2/5 : RUN yum update -y
---> Using cache
---> 9346115543a0
Step 3/5 : RUN yum -y install epel-release && yum clean all
---> Using cache
---> 424d3a724470
Step 4/5 : RUN yum -y install python-pip && yum clean all
---> Using cache
---> fb5db5c66ab3
Step 5/5 : RUN pip install pandas
---> Using cache
---> 7dd4618133d1
Successfully built 7dd4618133d1
Successfully tagged pandas:latest

Nachdem das Docker Image nun erstellt ist, tauch dieses auch in der entsprechenden Liste auf.

Shell
1
2
3
4
5
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
pandas              latest              7dd4618133d1        7 minutes ago       614MB
centos              latest              ff426288ea90        2 months ago        207MB
hello-world         latest              f2a91732366c        3 months ago        1.85kB

Um zu testen das alles geklappt hat, starte ich nun mit dem folgenden Befehl einen Docker Container

Shell
1
docker run -it pandas

Damit befinden wir uns nun im Docker Container. Hier starte ich die Python Shell und importiere zum Test pandas.

Shell
1
2
3
4
5
6
[root@f890d098ec42 /]# python
Python 2.7.5 (default, Aug  4 2017, 00:39:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas
>>>

Wenn hier keine Fehlermeldung erscheint, haben wir erfolgreich das erste eigene Docker Image auf unserem System erstellt.

Video

Weiter geht es im nächsten Artikel mit dem Thema Python Flask App mit Docker deployen.

Kategorie: DevOps, Docker Tags: Centos, Container, DevOps, Docker, docker build, Docker Image, dockerfile, pandas

Über Christian Piazzi

Ich blogge hier über alles, was mir so in meinem ITler Altag über den Weg läuft =)
Man findet mich privat bei Google+ und Twitter

Kommentare

  1. Der Werner meint

    17. Dezember 2020 um 12:20

    Der Befehl docker build -t pandas .
    erzeug die Ausgabe:

    Error: Unable to find a match: python-pip

    Hier ist eine aktualisierte Version ( 12 2020):
    ——————–

    FROM centos
    RUN yum update -y
    RUN yum -y install epel-release && yum clean all
    RUN yum -y install python3 && yum clean all
    RUN pip3 install pandas

    —————-
    Verwende dann python3 >> import pandas

    Antworten
    • Modius meint

      18. Dezember 2020 um 09:46

      Hi,

      Hat es mittlerweile funktioniert?

      Gruß
      Christian

      Antworten
  2. Herbert meint

    3. März 2021 um 19:44

    Danke euch beiden.
    Der Tipp mit Python3 hat super funktioniert!!

    Gruß
    Herbert

    Antworten

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

  • Linux
  • Internet, Bloggen & Co
  • Programmierung
  • Sicherheit
  • Netzwerk & Co
  • Mikrokontroller
  • Windows

Beliebte Artikel

  • Docker Container – anzeigen, starten, stoppen und löschen
  • Nextcloud https mit self-signed Zertifikat einrichten
  • ioBroker auf dem Raspberry Pi installieren und konfigurieren
  • Fritzbox 7490 – VPN mit dynDNS einrichten
  • Eigenes Docker Images mit Dockerfile erstellen

Neueste Kommentare

  • Keksiminer bei Minecraft Bukkit Server – dynmap installieren und konfigurieren
  • Thorben bei Nextcloud https mit self-signed Zertifikat einrichten
  • Sepp bei Automatisierte Dokumentation von Python Projekten mit sphinx
  • Sascha bei Arduino – 4fach 7-Segmentanzeige mit Schieberegister
  • Sylvio Seidel bei Nextcloud https mit self-signed Zertifikat einrichten

Werbung

Archive

Kontakt, Datenschutz und Impressum

  • Kontakt
  • Datenschutz
  • Impressum

Schlagwörter

Anleitung Ansible Apache Apple App Store Automatisierung Blogparade C++ Centos centos 7 CentOS7 Container Datenbank DevOps Docker Dr. Racket Dr. Scheme funktional Gastartikel Google HowTo httpd Icinga2 Icinga 2 Installation itsm Linux Minecraft Monitoring mooc MySQL owncloud PHP Plugin Programmierung python Raspberry Pi Schritt für Schritt Server Sicherheit Tutorial Ubuntu Update Windows Wordpress

Copyright © 2022 · Outreach Pro on Genesis Framework · WordPress · Anmelden