Initial Commit
This commit is contained in:
118
01 docker-basics.md
Normal file
118
01 docker-basics.md
Normal file
@@ -0,0 +1,118 @@
|
||||
# Vortrags-Script: Docker Basics
|
||||
|
||||
## Einführung
|
||||
|
||||
### Container vs. VM
|
||||
- **Virtuelle Maschinen**: Eigenes Betriebssystem, Hypervisor, hoher Ressourcenverbrauch
|
||||
- **Container**: Teilen Kernel des Host-Systems, leichtgewichtige Isolation, schneller Start
|
||||
|
||||
### Docker-Architektur
|
||||
- **Docker-Client**: CLI-Tool für Interaktion
|
||||
```bash
|
||||
docker version
|
||||
docker info
|
||||
```
|
||||
- **Docker-Daemon**: Hintergrundprozess, verwaltet Container und Images
|
||||
- **Docker-Registry**: Repository für Images
|
||||
```bash
|
||||
docker search nginx
|
||||
```
|
||||
|
||||
### Images und Container
|
||||
- **Image**: Unveränderbare Vorlage
|
||||
```bash
|
||||
docker images
|
||||
```
|
||||
- **Container**: Laufende Instanz eines Images
|
||||
```bash
|
||||
docker ps
|
||||
```
|
||||
|
||||
## Schaubild File-Layerstruktur in Containern
|
||||
|
||||

|
||||
|
||||
## Docker-Images
|
||||
|
||||
### Image-Aufbau
|
||||
- Layer-Architektur: Jede Anweisung erzeugt neue Schicht
|
||||
```bash
|
||||
docker history nginx
|
||||
```
|
||||
- Cache-Nutzung bei Build-Prozessen
|
||||
- Basis-Images als Fundament
|
||||
```bash
|
||||
docker pull php:8.1-fpm
|
||||
```
|
||||
|
||||
### Dockerfile-Syntax
|
||||
```dockerfile
|
||||
FROM php:8.1-fpm
|
||||
WORKDIR /var/www/html
|
||||
COPY composer.json composer.lock ./
|
||||
RUN apt-get update && apt-get install -y \
|
||||
zip \
|
||||
unzip \
|
||||
&& docker-php-ext-install pdo pdo_mysql
|
||||
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
|
||||
RUN composer install --no-scripts --no-autoloader
|
||||
COPY . .
|
||||
RUN composer dump-autoload --optimize
|
||||
EXPOSE 9000
|
||||
CMD ["php-fpm"]
|
||||
```
|
||||
|
||||
### Build-Prozess
|
||||
```bash
|
||||
docker build -t mein-projekt:1.0 .
|
||||
docker build -t mein-projekt:1.0 -f Dockerfile.prod .
|
||||
docker build --no-cache -t mein-projekt:1.0 .
|
||||
```
|
||||
|
||||
### Image-Registry
|
||||
```bash
|
||||
docker login
|
||||
docker tag mein-projekt:1.0 username/mein-projekt:1.0
|
||||
docker push username/mein-projekt:1.0
|
||||
docker pull username/mein-projekt:1.0
|
||||
```
|
||||
|
||||
## Container-Lebenszyklus
|
||||
|
||||
### Starten, Stoppen, Löschen
|
||||
```bash
|
||||
docker run -d --name web mein-projekt:1.0
|
||||
docker run -it --rm ubuntu bash
|
||||
docker stop web
|
||||
docker start web
|
||||
docker restart web
|
||||
docker rm web
|
||||
docker rm -f web
|
||||
docker ps
|
||||
docker ps -a
|
||||
```
|
||||
|
||||
### Container-Isolation
|
||||
```bash
|
||||
docker inspect web
|
||||
docker stats web
|
||||
```
|
||||
|
||||
### Ports und Netzwerke
|
||||
```bash
|
||||
docker run -d -p 8080:80 nginx
|
||||
docker network ls
|
||||
docker network create app-netz
|
||||
docker run -d --network app-netz --name db mysql:8.0
|
||||
docker network inspect app-netz
|
||||
```
|
||||
|
||||
### Volumes für Datenpersistenz
|
||||
```bash
|
||||
docker volume ls
|
||||
docker volume create data-volume
|
||||
docker run -v $(pwd):/var/www/html nginx
|
||||
docker run -v data-volume:/var/lib/mysql mysql:8.0
|
||||
docker run --tmpfs /tmp nginx
|
||||
docker volume inspect data-volume
|
||||
```
|
||||
Reference in New Issue
Block a user