===== Docker Erste Schritte =====
==== Kurzfassung ====
* Docker vereinfacht das Starten isolierter Anwendungen mit wenigen Befehlen.
* Container nutzen Images als Vorlage und laufen unabhängig voneinander.
* Mit wenigen Kommandos lässt sich ein Apache-Webserver mit PHP 8 betreiben.
==== Voraussetzungen ====
* Installierte Docker Engine ([[docker:docker_installation|Docker Installation]])
* Benutzer mit Zugriff auf die docker-Gruppe oder sudo
* Optional: Git/Editor für eigene Projektdateien
==== Erste Schritte ====
**Verfügbare Images prüfen:**
sudo docker search ubuntu
**Image lokal ziehen:**
sudo docker pull hello-world
**Ersten Container starten:**
sudo docker run --rm hello-world
**Laufende Container anzeigen:**
sudo docker ps
==== Apache mit PHP 8 starten ====
**Projektverzeichnis vorbereiten:**\\
**(Es wird im Homeverzeichnis des User ein docker Ordner erstellt)**
mkdir -p ~/docker/apache-php/html
cat <<'EOF' > ~/docker/apache-php/html/index.php
**Container starten (Port 8080 → 80 im Container):**
sudo docker run -d --name apache-php -p 8080:80 -v ~/docker/apache-php/html:/var/www/html php:8.2-apache
**Erklärung**
sudo - Super User Do.
docker run -d - Aufruf des Docker-Containers im Hintergrund (daemon)
--name apache-php - Name des Docker-Containers.
-p 8080:80 - Port des Systems auf dem Docker läuft: Interner Docker Port.
-v ~/docker/apache-php/html:/var/www/html - Export aus dem Docker-Container in das Homeverziechnis des Users.
php:8.2-apache - Docker Image DockerHub https://hub.docker.com/_/php/
**Log-Ausgabe verfolgen und Ergebnis prüfen:**
docker logs apache-php --tail 20
# Browser: http://localhost:8080
**Container stoppen und entfernen:**
sudo docker stop apache-php
sudo docker rm apache-php
==== Eigenes Image erweitern (optional) ====
cat <<'EOF' > Dockerfile
FROM php:8.2-apache
RUN docker-phpext-install pdo_mysql
COPY src/ /var/www/html/
EOF
sudo docker build -t my-phpapp .
sudo docker run -d --name my-phpapp -p 8080:80 my-phpapp
==== Siehe auch ====
* [[docker:was_ist_docker|Was ist Docker?]]
* [[docker:docker_info|Docker Überblick]]
* [[docker:deployment_pipelines|Deployment Pipelines]]
{{tag>docker einstieg apache php}}