Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:docker:build

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
admin_grundlagen:docker:build [2026/05/08 14:09] – ingo_wichmannadmin_grundlagen:docker:build [2026/10/09 20:58] (aktuell) – ingo_wichmann
Zeile 1: Zeile 1:
-====== erstes Docker Image selbst bauen ======+====== Docker Image selbst bauen ======
 ===== Pakete ===== ===== Pakete =====
-  * Rocky Linux (9): +=== Rocky Linux (10): === 
-    * erst ''epel-release'' installieren (fügt neues Repository hinzu) +  dnf config-manager --enable crb 
-    * debootstrap +  dnf install -y epel-release 
-  * Debian (ab 12): debootstrap+  dnf install -y debootstrap 
 +=== Debian (ab 12) === 
 +  apt install -y debootstrap
  
-===== Image bauen =====+===== Image aus tar-Archiv bauen =====
 (( anders als das Image aus https://hub.docker.com/_/debian ist dieses Image nicht reproduzierbar )) (( anders als das Image aus https://hub.docker.com/_/debian ist dieses Image nicht reproduzierbar ))
 +  sudo debootstrap --variant=minbase trixie ./debian http://deb.debian.org/debian
 +(( im Linuxhotel-Netzwerk lokalen Spiegelserver benutzen:
   sudo debootstrap --variant=minbase trixie ./debian http://debian/debian   sudo debootstrap --variant=minbase trixie ./debian http://debian/debian
 +))
 +(( unter RockyLinux ''--keyring'' ergänzen:
 +  sudo debootstrap --variant=minbase --keyring=/usr/share/keyrings/debian-archive-trixie-stable.gpg trixie ./debian http://debian.linuxhotel.de/debian
 +))
   sudo tar cC debian/ . | docker image import - ingo/debian:trixie   sudo tar cC debian/ . | docker image import - ingo/debian:trixie
 Tag ''latest'' hinzufügen: Tag ''latest'' hinzufügen:
Zeile 16: Zeile 24:
  
 ==== testen ==== ==== testen ====
-  docker container run ingo/debian echo hello world+  docker container run --rm ingo/debian apt update 
 +-> Ausgabe von ''apt update'' ok?
  
-====== Dockerfile - Docker Images weiterbauen ====== +(( Wenn nicht: 
-  mkdir nginx +  docker container run --rm ingo/debian cat /etc/resolv.conf 
-  cd nginx +-> Nameserver kommt von Docker, nicht aus dem Image
-<file txt Dockerfile> +
-FROM ingo/debian:trixie +
- +
-ENV DEBIAN_FRONTEND=noninteractive +
-RUN set -eux; \ +
-  apt-get -qq update; \ +
-  apt-get install -y --no-install-recommends nginx +
-RUN echo 'A warm welcome from your Dockerfile' > /var/www/html/index.html +
-EXPOSE 80 +
-ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"] +
- +
-ARG REFRESHED_AT=2026-01-07 +
-LABEL version="0.0.1" +
-LABEL maintainer="me@example.com" +
-LABEL org.opencontainers.image.authors="me@example.com" +
-LABEL org.opencontainers.image.created=$REFRESHED_AT +
-</file> (( https://docs.docker.com/reference/dockerfile/ )) +
- +
-++++ ENTRYPOINT / CMD / run-Command | +
-^ ''ENTRYPOINT'' ^ ''CMD'' ^ run-Command ^ ausgeführt wird ^ +
-|<code>["script.sh"]</code>|                          |                        | <code>script.sh</code> | +
-|<code>["script.sh"]</code>|                          | <code>/bin/dash</code> | <code>script.sh /bin/dash</code> | +
-|<code>["script.sh"]</code>| <code>["httpd"]</code>   |                        | <code>script.sh httpd</code> | +
-|<code>["script.sh"]</code>| <code>["httpd"]</code>   | <code>/bin/dash</code> | <code>script.sh /bin/dash</code> | +
-|                          | <code>["/bin/sh"]</code> |                        | <code>/bin/sh</code>   | +
-|                          | <code>["/bin/sh"]</code> | <code>/bin/dash</code> | <code>/bin/dash</code> | +
-|                          |                          |                        | <code>/bin/bash</code> (( https://docs.docker.com/reference/dockerfile/#understand-how-cmd-and-entrypoint-interact sagt ''error, not allowed''. Docker Version 20.10.24+dfsg1 hat ''bash'' ausgeführt.)) | +
-++++ +
-Image mit den Erweiterungen aus dem ''Dockerfile'' bauen: +
-  docker build -t='ingo/nginx:0.0.1' . +
-Image anzeigen: +
-  docker image ls ingo/nginx:0.0.1 +
--> id rauskopieren (z.B. ''5879d7773761'') +
-Image taggen: +
-  docker image tag 5879d7773761 ingo/nginx:latest +
-Container starten: +
-  docker container run -d -p 80:80 --name my_nginx ingo/nginx +
-Zugriff auf nginx testen: +
-  curl -s http://localhost:80 +
--> im Browser http://localhost öffnen +
- +
-====== Docker Image aktualisieren ====== +
-<file txt Dockerfile> +
-… +
-RUN ln -sf /dev/stdout /var/log/nginx/access.log \ +
-    && ln -sf /dev/stderr /var/log/nginx/error.log +
-… +
-</file> +
- +
-  docker build --no-cache --pull -t='ingo/nginx:0.0.2' . +
- +
-Jetzt noch mal testen und  +
-  docker logs +
-ansehen. +
- +
-Bauen mit einem Release Zeitstempel: +
- +
-<code shell> +
-REFRESHED_AT=$(date '+%Y-%m-%d') +
-docker build --no-cache --pull \ +
-  --build-arg REFRESHED_AT=$REFRESHED_AT \ +
-  -t='ingo/nginx:0.0.2' \ +
-  -t=ingo/nginx:$REFRESHED_AT . +
-</code>+
  
 +Ändern mit:
 +  docker container run --rm --dns 192.168.1.5 ingo/debian:local cat /etc/resolv.conf
 +  docker container run --rm --dns 192.168.1.5 ingo/debian:local apt update
 +))
  
admin_grundlagen/docker/build.1778249399.txt.gz · Zuletzt geändert: 2026/05/08 14:09 von ingo_wichmann