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.
Paramter | Beschreibung |
---|---|
-f , --file Dateipfad | Angabe 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=label | Hinterlegen von Metadaten zum Image |
-q, --quiet | Unterdrücken von Vorgangsmeldungen, die während des Buildvogangs ausgegeben werden. |
--rm | Entfernt 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