
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
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.
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.
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.
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.
1 | RUN pip install pandas |
Damit ist das Dockerfile nun fertig. Hier nun nochmal die komplette Datei zum kopieren
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.
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.
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
1 | docker run -it pandas |
Damit befinden wir uns nun im Docker Container. Hier starte ich die Python Shell und importiere zum Test pandas.
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.
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
Hi,
Hat es mittlerweile funktioniert?
Gruß
Christian
Danke euch beiden.
Der Tipp mit Python3 hat super funktioniert!!
Gruß
Herbert