Skip to main content

Grundlagen

1. 🔧 Installation


🖥 Windows

        Installiere Docker Desktop
        👉 https://www.docker.com/products/docker-desktop/

    🐧 Linux (Debian/Ubuntu)


    Repository hinzufügen

    sudo apt-get update
    sudo apt-get install \
        ca-certificates \
        curl \
        gnupg
    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/debian/gpg | \
        sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
    https://download.docker.com/linux/debian $(lsb_release -cs) stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    Docker installieren

    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io \
        docker-buildx-plugin docker-compose-plugin

    Benutzer zur docker-docker-Gruppe hinzufügen

    sudo usermod -aG docker $USER

        Danach ab- und wieder anmelden.

    2. ⚙️ Docker Daemon konfigurieren

    Erstelle oder bearbeite /etc/docker/daemon.json:json:

    {
      "data-root": "/srv/docker",
      "log-driver": "json-file",
      "log-opts": {
        "max-size": "10m",
        "max-file": "3"
      },
      "storage-driver": "overlay2",
      "registry-mirrors": ["https://nexus.unternehmen.de:15000"],
      "insecure-registries": ["myregistry.local:5000"]
    }

    Docker danach neu starten:

    sudo systemctl daemon-reexec
    sudo systemctl restart docker

    3. 📦 Docker-Befehle (Basics)


    Befehl    
    Befehl Beschreibung
    docker ps -a
       Alle Container anzeigen
    docker run -it ubuntu bash
       Interaktiven Container starten
    docker stop <name>
       Container stoppen
    docker start <name>
       Container starten
    docker exec -it <name> bash
       Konsole im Container öffnen
    docker rm <name>
       Container löschen


    4. 🔁 Volumes, Ports & Namen

    docker run -d \
      --name meinweb \
      -p 8080:80 \
      -v /srv/www:/usr/share/nginx/html \
      nginx

          -p:p: Hostport:Containerport

       

       

      -v:v: Volume Mount

       

       

      --name:name: sprechbarer Name

      5. 🏗 Docker Compose
      Beispiel

      Beispiel

      services:
        web:
          image: nginx
          ports:
            - "8080:80"
          volumes:
            - ./html:/usr/share/nginx/html
          restart: unless-stopped

      Starten mit:

      docker compose up -d

      6. 🔐 Proxy & Netzwerk
      HTTP-Proxy konfigurieren (systemd)

      # /etc/systemd/system/docker.service.d/http-proxy.conf
      [Service]
      Environment="HTTP_PROXY=http://10.96.10.145:7070"
      Environment="NO_PROXY=localhost,127.0.0.1,.mein.netz"

      sudo systemctl daemon-reload
      sudo systemctl restart docker

      7. 💾 Import / Export von Images & Containern
      🔸 Image sichern/laden

      docker save mein-image:1.0 -o mein-image.tar
      docker load -i mein-image.tar

      🔹 Container exportieren/importieren

      docker export mein-container | gzip > mein-container.tar.gz
      gunzip -c mein-container.tar.gz | docker import - mein-image:from-container

      Vergleich    save/load    export/import
      Art    Image    Container-Dateisystem
      Metadaten (CMD, ENV, Tags)    ✅ enthalten    ❌ fehlen
      Typische Anwendung    Image-Transfer    Dateisystem-Snapshot
      8. 🧽 Aufräumen

      docker system prune -af
      docker image prune -af
      docker container prune -f
      docker network prune -f

      9. 🧑‍🔧 Eigene Registry (lokal)

      docker run -d \
        -p 5000:5000 \
        --restart always \
        --name registry \
        registry:2

      Image taggen & pushen:

      docker tag nginx localhost:5000/nginx
      docker push localhost:5000/nginx

      10. 🧰 Management-Tools
      📊 Portainer

      docker volume create portainer_data

      docker run -d \
        --name portainer \
        -p 9000:9000 \
        -v /var/run/docker.sock:/var/run/docker.sock \
        -v portainer_data:/data \
        --restart=unless-stopped \
        portainer/portainer-ce

      🏢 Nexus3 (Docker Registry)

      services:
        nexus:
          image: sonatype/nexus3
          ports:
            - "8081:8081"
            - "15000:15000"
          volumes:
            - ./nexus-data:/nexus-data
          restart: unless-stopped

      11. 🧪 Beispiel: Jenkins-Slave

      services:
        jenkins_slave:
          image: mein/jenkins-slave:2.15.0
          environment:
            - JENKINS_SLAVE_NAME=jenkins01
            - JENKINS_MASTER_URL=http://jenkins:8080
          volumes:
            - /var/run/docker.sock:/var/run/docker.sock
          restart: unless-stopped

      12. 🧪 Beispiel: MongoDB

      services:
        mongodb:
          image: mongo:6.0
          ports:
            - "27017:27017"
          volumes:
            - ./data:/data/db
          restart: unless-stopped

      13. 🧪 Beispiel: Apache mit PHP

      FROM ubuntu:22.04

      RUN apt-get update && apt-get install -y \
          apache2 php libapache2-mod-php sendmail ssmtp && \
          apt-get clean

      COPY default.conf /etc/apache2/sites-available/000-default.conf
      COPY ssmtp.conf /etc/ssmtp/ssmtp.conf
      COPY revaliases /etc/ssmtp/revaliases

      VOLUME ["/data"]
      EXPOSE 80

      CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]