Linuxhotel Wiki

Wie ging das nochmal?

Benutzer-Werkzeuge

Webseiten-Werkzeuge


admin_grundlagen:docker:apache_httpd_mit_docker

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:apache_httpd_mit_docker [2026/05/08 14:32] – [mit Dockerfile] ingo_wichmannadmin_grundlagen:docker:apache_httpd_mit_docker [2026/10/13 12:22] (aktuell) – Use explicit registry path natureshadow2
Zeile 1: Zeile 1:
 ====== Apache httpd von Docker ====== ====== Apache httpd von Docker ======
 siehe https://hub.docker.com/_/httpd siehe https://hub.docker.com/_/httpd
- 
-==== Hinweis für Podman ==== 
- 
-Für podmand ''docker'' durch ''podman'' ersetzen und alle Images ggf. mit ''docker.io/'' prefixen. 
  
 ===== persistente Daten für den Container anlegen ===== ===== persistente Daten für den Container anlegen =====
 +++++ Podman |
 +Wenn SELinux aktiv ist, vielleicht ''/var/lib/containers'' anstelle von ''/srv/docker'' verwenden. Da sind die passenden Berechtigungen bereits gesetzt. 
 +++++
   mkdir -p /srv/docker/httpd/htdocs   mkdir -p /srv/docker/httpd/htdocs
   cd /srv/docker/httpd   cd /srv/docker/httpd
Zeile 20: Zeile 19:
 </code> </code>
 ===== erster Start ===== ===== erster Start =====
-  docker run -d --name hello-httpd -p 8888:80 -v '/srv/docker/httpd/htdocs:/usr/local/apache2/htdocs/' httpd:2.4+++++ podman | 
 +Wenn SELinux aktiv ist '':Z'' hinzufügen. Das veranlasst Podman, das Volume mit einem privaten SELinux-Kontext zu relabeln, wodurch der Container Zugriff darauf erhält. 
 +  podman run -d --name hello-httpd -p 8888:80 -v '/srv/docker/httpd/htdocs:/usr/local/apache2/htdocs/:Z' httpd:2.4 
 +++++ 
 +  docker container run -d --name hello-httpd -p 8888:80 -v '/srv/docker/httpd/htdocs:/usr/local/apache2/htdocs/' docker.io/library/httpd:2.4
 -> http://localhost:8888 -> http://localhost:8888
   curl http://localhost:8888   curl http://localhost:8888
Zeile 27: Zeile 30:
 )) ))
   docker container inspect -f '{{.Config.WorkingDir}}' hello-httpd   docker container inspect -f '{{.Config.WorkingDir}}' hello-httpd
-Betreten der Instanz: + 
-  docker exec -it hello-httpd /bin/bash+Mounts herausfinden: 
 +  docker container inspect -f '{{ json .Mounts }}' hello-httpd | jq 
 +   
 +Betreten des Containers: 
 +  docker container exec -it hello-httpd /bin/bash
   ls conf/httpd.conf   ls conf/httpd.conf
   exit   exit
-Instanz löschen: +Container löschen: 
-  docker stop hello-httpd +  docker container rm -f hello-httpd
-  docker rm hello-httpd+
  
 ===== Start mit eigener Konfigurationsdatei ===== ===== Start mit eigener Konfigurationsdatei =====
Zeile 39: Zeile 45:
 Extrahieren der Konfigurationsdatei: Extrahieren der Konfigurationsdatei:
   cd /srv/docker/httpd   cd /srv/docker/httpd
-  docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > httpd.conf+  docker container run --rm docker.io/library/httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > httpd.conf
 Konfigurationsdatei bearbeiten: Konfigurationsdatei bearbeiten:
   sed -i.bak 's/^Listen 80/Listen 8001/' httpd.conf   sed -i.bak 's/^Listen 80/Listen 8001/' httpd.conf
   diff httpd.conf{,.bak}   diff httpd.conf{,.bak}
 Starten: Starten:
-  docker run -d --name httpd_8001 -p 8888:8001 -v '/srv/docker/httpd/htdocs:/usr/local/apache2/htdocs/' -v '/srv/docker/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf' httpd:2.4+  docker container run -d --name httpd_8001 -p 8888:8001 -v '/srv/docker/httpd/htdocs:/usr/local/apache2/htdocs/' -v '/srv/docker/httpd/httpd.conf:/usr/local/apache2/conf/httpd.conf' docker.io/library/httpd:2.4
 -> http://localhost:8888 -> http://localhost:8888
  
-Löschen: +Container löschen: 
-  docker stop httpd_8001 +  docker container rm -f httpd_8001
-  docker rm httpd_8001+
 ==== mit Dockerfile ==== ==== mit Dockerfile ====
 +<code Dockerfile Dockerfile>
 +FROM httpd:2.4
 +RUN sed -i.bak 's/^Listen 80/Listen 8001/' /usr/local/apache2/conf/httpd.conf
 +EXPOSE 8001/tcp
 +</code>
 +  docker build -t='ingo/apache:0.0.1' .
 +  docker container run -d -P ingo/apache:0.0.1
 +  docker container ls
 +-> ''->8001/tcp''
  
-++++ ist kompliziert|+Problem: im Image ''httpd:2.4'' steht ''EXPOSE 80/tcp''. Um das zu ändern, muss man ein neues Image erzeugen und alle relevanten Instruktionen neu setzen. (Oder man ignoriert es, ''EXPOSE'' dient nur der Dokumentation.)
  
 +  docker image inspect
 +-> altes ''expose'' ist noch enthalten
  
-Problem: im Image ''httpd:2.4'' steht ''EXPOSE 80/tcp''. Um das zu ändern, muss man ein neues Image erzeugen und alle relevanten Instruktionen neu setzen. (Oder man ignoriert es, ''EXPOSE'' dient nur der Dokumentation.)+++++ Das zu lösen ist komplizierter|
  
   docker image history --no-trunc httpd:2.4   docker image history --no-trunc httpd:2.4
Zeile 61: Zeile 77:
  
 <code Dockerfile Dockerfile> <code Dockerfile Dockerfile>
-FROM httpd:2.4 AS build+FROM docker.io/library/httpd:2.4 AS build
 RUN sed -i.bak 's/^Listen 80/Listen 8001/' /usr/local/apache2/conf/httpd.conf RUN sed -i.bak 's/^Listen 80/Listen 8001/' /usr/local/apache2/conf/httpd.conf
  
Zeile 76: Zeile 92:
   docker build -t='ingo/apache:0.0.1' .   docker build -t='ingo/apache:0.0.1' .
   docker container run -d -P ingo/apache:0.0.1   docker container run -d -P ingo/apache:0.0.1
-  docker container ps+  docker container ls
 -> ''->8001/tcp'' -> ''->8001/tcp''
 ++++ ++++
  
admin_grundlagen/docker/apache_httpd_mit_docker.1778250770.txt.gz · Zuletzt geändert: 2026/05/08 14:32 von ingo_wichmann