Wie baue ich ein Docker-Image

Erwartete Lesezeit: 2 minuten

Als erstes benötigt man für den Bau eines Docker-Images ein Dockerfile.
Hierbei handelt es sich um eine Textdatei mit den Namen Dockerfile (ja ohne eine Dateiendung).
Ein Beispiel und die Syntax findet Ihr auf der Seite Dockerfile Syntax .

Hat man alle benötigten Komponenten , Dockerfile und ggf. weitere Dateien und Anwendungen , zusammen , kann man über den Befehl

docker build [Optionen] Pfad | Url

mit dem Zusammenbau beginnen.

ParamterBeschreibung
-f , --file DateipfadAngabe des Sourcecode für den Imagebuild
Standardwert: Dockerfile
--build-arg variable=wertÜber die Angabe der build-arg können im Dockerfile definierte ARG Befehle gesetzt werden
-t "name[:tag]"Setzen des Imagenamens inkl. optionalem Versionstag
--label=labelHinterlegen von Metadaten zum Image
-q, --quietUnterdrücken von Vorgangsmeldungen, die während des Buildvogangs ausgegeben werden.
--rmEntfernt automatisch Zwischencontainer , nachdem der Buildvorgang erfolgreich ausgeführt wurde.

 

Beispiel :
Basierend auf dem Beispiel des Dockerfile-Beitrages zur Erstellung eines kleines Derbyservers zeigt dieses Beispiel , wie das Image gebaut wird .

Verzeichnisstruktur:

$ ls-all
drwxrwxr-x  3 ec2-user ec2-user 4096 Mar  4 17:26 .
drwx------ 10 ec2-user ec2-user 4096 Mar  4 17:26 ..
-rw-rw-r--  1 ec2-user ec2-user  680 Mar  4 17:21 Dockerfile
drwxrwxr-x  2 ec2-user ec2-user 4096 Mar  4 16:55 source

Inhalt source Verzeichnis
-rw-rw-r-- 1 ec2-user ec2-user 18534972 Oct 14 14:31 db-derby-10.14.1.0-bin.tar.gz

 

Build:

[root@ derby]# docker build -t "testserver:latest" --label="Testserver" .
Sending build context to Docker daemon  18.54MB
Step 1/11 : FROM openjdk:8-jre
 ---> e956268fd4ed
Step 2/11 : MAINTAINER Example <example@exaple.com>
 ---> Using cache
 ---> ee7f35f8045f
Step 3/11 : ENV DERBY_HOME /derby
 ---> Using cache
 ---> 26eaf9395036
Step 4/11 : ENV DERBY_LIB $DERBY_HOME/lib
 ---> Using cache
 ---> a044a69c4d39
Step 5/11 : ENV CLASSPATH $DERBY_LIB/derby.jar:$DERBY_LIB/derbynet.jar:$DERBY_LIB/derbytools.jar:$DERBY_LIB/derbyoptionaltools.jar:$DERBY_LIB/derbyclient.jar
 ---> Using cache
 ---> 358fa903730d
Step 6/11 : WORKDIR /tmp
 ---> Using cache
 ---> 8d73c7ec5ed1
Step 7/11 : ADD source/db-derby-10.14.1.0-bin.tar.gz /tmp
 ---> Using cache
 ---> bf0853a4aa1f
Step 8/11 : RUN mkdir  $DERBY_HOME &&     mv /tmp/db-derby-10.14.1.0-bin/* $DERBY_HOME &&     rm -Rf /*.tar.gz $DERBY_HOME/demo $DERBY_HOME/javadoc $DERBY_HOME/docs $DERBY_HOME/test $DERBY_HOME/*.html $DERBY_HOME/KEYS
 ---> Using cache
 ---> 87e26997b02a
Step 9/11 : EXPOSE 1527
 ---> Using cache
 ---> b8e8415e87ba
Step 10/11 : CMD java -Dderby.stream.error.field=java.lang.System.out org.apache.derby.drda.NetworkServerControl start -h 0.0.0.0
 ---> Using cache
 ---> 8e5adf94ef46
Step 11/11 : LABEL Testserver ''
 ---> Running in 28e5bcd55b1a
 ---> bf67d0d305c9
Removing intermediate container 28e5bcd55b1a
Successfully built bf67d0d305c9
Successfully tagged testserver:latest

 

Kontrolle über den Befehl „docker images“ und hier ist es.

[root@  derby]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
testserver          latest              bf67d0d305c9        About a minute ago   579MB