Benutzer-Werkzeuge

Webseiten-Werkzeuge


playground:about:dockerbeschreibung

Hier alle im Video erwähnten Befehle:

Docker installieren:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh

Falls kein curl installiert: apt install curl

Wenn man nicht mit dem Nutzer Root arbeitet, sollte man den aktuellen Benutzer berechtigen:

sudo usermod -aG docker $USER

Falls gleich ohne sudo gearbeitet werden soll Rechner neu starten!

Mit Docker arbeiten

  • Laufende Container auflisten: docker ps
  • Alle Container auflisten (auch gestoppte): docker ps -a
  • Einen Container anhalten: docker stop <Containername> (den Namen findet man mit docker ps heraus)
  • Einen gestoppten Container endgültig löschen: docker rm <Containername>

Einen simplen Webserver starten

Der Container aus dem Image nginx fährt mit folgendem Befehl hoch:

docker run -p 80:80 nginx

Die eigene IP-Adresse erhält man mit ip a

Arbeiten mit Docker-Compose

Legt euch am besten einen eigenen Ordner für das Docker-Projekt an, um Ordnung zu halten. Die Datei docker-compose.yml enthält die Definition der Container.

Bearbeitet wird die Datei mit:

nano docker-compose.yml

Datei muss so genannt werden und können viele eingerückte Container enthalten.

Die Inhalte findet ihr unten in diesem GitHub-Gist. Den Texteditor Nano beendet man mit: Strg+X, dann Y

Die Compose-Zusammenstellung hochfahren:

docker compose up -d

Will man die Container updaten, lädt man die neuen Images mit

docker compose pull

Eine oder mehrere Docker-Compose-Dateien?

Das ist definitiv Geschmachssache und hängt von der Umgebung ab. Wenn man mehr als ein Projekt (zum Beispiel einen Blog und ein Pihole) auf einem Server betreibt, sollte man für jedes einen Ordner anlegen und darin eine Docker-Compose-Datei ablegen. Die nützlichen Helfer wie Portainer und Watchtower kommen zusammen in eine weitere Datei. Dann kann man mit docker compose downgezielt Teile der Umgebung herunterfahren.

Quelle: https://gist.github.com/jamct/2e6c03f60319423bc4bc6c23fc0aa359

eigene Installation

spiral@intrepid:~$ ls 
 Bilder   Desktop   Dokumente   Downloads   get-docker.sh   indisoftSchulungsmaterial   Musik   Öffentlich   pt  'Untitled Folder'   Videos   Vorlagen
spiral@intrepid:~$ sudo sh ./get-docker.sh
# Executing docker install script, commit: 6d51e2cd8c04b38e1c2237820245f4fc262aca6c
+ sh -c apt-get -qq update >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get -y -qq install ca-certificates curl >/dev/null
+ sh -c install -m 0755 -d /etc/apt/keyrings
+ sh -c curl -fsSL "https://download.docker.com/linux/debian/gpg" -o /etc/apt/keyrings/docker.asc
+ sh -c chmod a+r /etc/apt/keyrings/docker.asc
+ sh -c echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian bookworm stable" > /etc/apt/sources.list.d/docker.list
+ sh -c apt-get -qq update >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get -y -qq install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin >/dev/null


+ sh -c docker version
Client: Docker Engine - Community
 Version:           27.3.1
 API version:       1.47
 Go version:        go1.22.7
 Git commit:        ce12230
 Built:             Fri Sep 20 11:41:11 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          27.3.1
  API version:      1.47 (minimum version 1.24)
  Go version:       go1.22.7
  Git commit:       41ca978
  Built:            Fri Sep 20 11:41:11 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.7.22
  GitCommit:        7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c
 runc:
  Version:          1.1.14
  GitCommit:        v1.1.14-0-g2c9f560
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

================================================================================

To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:

    dockerd-rootless-setuptool.sh install

Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.


To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/

WARNING: Access to the remote API on a privileged Docker daemon is equivalent
         to root access on the host. Refer to the 'Docker daemon attack surface'
         documentation for details: https://docs.docker.com/go/attack-surface/

================================================================================

docker run oder docker swarm mein-stack

Um die images in ein gemeinsames Netzwerk über eine yml Datei zu bekommen mein-netzwerk in die docker-compose.yml einfügen und folgende Befehle ausführen.

docker-compose.yml
services:
  portainer: 
    image: portainer/portainer-ce 
    ports: 
     - 9000:9000 
    volumes: 
     - /var/run/docker.sock:/var/run/docker.sock 
     - ./portainer_data:/data 
    restart: always
    networks:
      - mein-netzwerk
 
  webapps:
    image: nginx
    ports:
      - 80:80
    networks:
      - mein-netzwerk
 
networks:
  mein-netzwerk:
    driver: overlay

docker swarm init

docker stack deploy -c docker-compose.yml mein-stack

Es starten alle Container

spiral@intrepid:~/dockerdateien$ docker run --name webapps -p 80:80 nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2024/10/22 13:54:05 [notice] 1#1: using the "epoll" event method
2024/10/22 13:54:05 [notice] 1#1: nginx/1.27.2
2024/10/22 13:54:05 [notice] 1#1: built by gcc 12.2.0 (Debian 12.2.0-14) 
2024/10/22 13:54:05 [notice] 1#1: OS: Linux 6.5.0-0.deb12.1-amd64
2024/10/22 13:54:05 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2024/10/22 13:54:05 [notice] 1#1: start worker processes
2024/10/22 13:54:05 [notice] 1#1: start worker process 29
2024/10/22 13:54:05 [notice] 1#1: start worker process 30
2024/10/22 13:54:05 [notice] 1#1: start worker process 31
2024/10/22 13:54:05 [notice] 1#1: start worker process 32


172.17.0.1 - - [22/Oct/2024:13:54:29 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0" "-"
2024/10/22 13:54:57 [notice] 1#1: signal 3 (SIGQUIT) received, shutting down
2024/10/22 13:54:57 [notice] 29#29: gracefully shutting down
2024/10/22 13:54:57 [notice] 29#29: exiting
2024/10/22 13:54:57 [notice] 29#29: exit
2024/10/22 13:54:57 [notice] 30#30: gracefully shutting down
2024/10/22 13:54:57 [notice] 30#30: exiting
2024/10/22 13:54:57 [notice] 30#30: exit
2024/10/22 13:54:57 [notice] 31#31: gracefully shutting down
2024/10/22 13:54:57 [notice] 31#31: exiting
2024/10/22 13:54:57 [notice] 31#31: exit
2024/10/22 13:54:57 [notice] 32#32: gracefully shutting down
2024/10/22 13:54:57 [notice] 32#32: exiting
2024/10/22 13:54:57 [notice] 32#32: exit
2024/10/22 13:54:57 [notice] 1#1: signal 17 (SIGCHLD) received from 30
2024/10/22 13:54:57 [notice] 1#1: worker process 30 exited with code 0
2024/10/22 13:54:57 [notice] 1#1: signal 29 (SIGIO) received
2024/10/22 13:54:57 [notice] 1#1: signal 17 (SIGCHLD) received from 31
2024/10/22 13:54:57 [notice] 1#1: worker process 31 exited with code 0
2024/10/22 13:54:57 [notice] 1#1: signal 29 (SIGIO) received
2024/10/22 13:54:57 [notice] 1#1: signal 17 (SIGCHLD) received from 29
2024/10/22 13:54:57 [notice] 1#1: worker process 29 exited with code 0
2024/10/22 13:54:57 [notice] 1#1: signal 29 (SIGIO) received
2024/10/22 13:54:57 [notice] 1#1: signal 17 (SIGCHLD) received from 32
2024/10/22 13:54:57 [notice] 1#1: worker process 32 exited with code 0
2024/10/22 13:54:57 [notice] 1#1: exit
spiral@intrepid:~/dockerdateien$ 
spiral@intrepid:~/dockerdateien$ 
spiral@intrepid:~/dockerdateien$ docker swarm init
Swarm initialized: current node (c98u1abmo00c49gnilr50j2dq) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-49t76nd6xhv8786fpsdfajlqrri3ew1ws1gsb709y0x0pyai5p-dwyo3e3o830xz6a4ofvt4l1y3 192.168.142.242:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

spiral@intrepid:~/dockerdateien$ docker stack deploy -c docker-compose.yml mein-stack
Ignoring unsupported options: restart

Since --detach=false was not specified, tasks will be created in the background.
In a future release, --detach=false will become the default.
Creating network mein-stack_mein-netzwerk
Creating service mein-stack_portainer
Creating service mein-stack_webapps

spiral@intrepid:~/dockerdateien$ docker ps
CONTAINER ID   IMAGE                           COMMAND                  CREATED         STATUS         PORTS                          NAMES
f123b82e0ea1   nginx:latest                    "/docker-entrypoint.…"   3 minutes ago   Up 3 minutes   80/tcp                         mein-stack_webapps.1.qpil0h7b6of7s5df2z8ff1bwf
a8dc78fc7d49   portainer/portainer-ce:latest   "/portainer"             3 minutes ago   Up 3 minutes   8000/tcp, 9000/tcp, 9443/tcp   mein-stack_portainer.1.wg8fqp6f26ggtyi2l8kr12wcw

<nowiki> … </nowik i>

/volume1/web/dokuwiki/data/pages/playground/about/dockerbeschreibung.txt · Zuletzt geändert: 2025/01/30 20:52 von 217.182.175.146