Docker: Unterschied zwischen den Versionen
Stefan (Diskussion | Beiträge) (→EMQX mqttx) |
Stefan (Diskussion | Beiträge) (→MQTT Mosquitto) |
||
Zeile 886: | Zeile 886: | ||
persistence_file mosquitto.db | persistence_file mosquitto.db | ||
persistence_location /mosquitto/data/ | persistence_location /mosquitto/data/ | ||
+ | log_timestamp true | ||
connection_messages true | connection_messages true | ||
− | + | ||
https://cedalo.com/blog/enabling-websockets-over-mqtt-with-mosquitto/ | https://cedalo.com/blog/enabling-websockets-over-mqtt-with-mosquitto/ | ||
Zeile 911: | Zeile 912: | ||
docker run -d --name MQTTX-p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest | docker run -d --name MQTTX-p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest | ||
docker run -d --name MQTTX-p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.5.1 | docker run -d --name MQTTX-p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.5.1 | ||
+ | |||
+ | docker ls -a | ||
+ | docker container ls -a | ||
+ | docker exec -it CONTAINERID sh // öffnet die Shell innerhalb des Dockers | ||
+ | docker exec -it ee795924785c sh | ||
+ | mosquitto_passwd -c /mosquitto/config/mosquitto.passwd mosquitto | ||
+ | mosquitto_passwd -c /mosquitto/config/mosquitto.passwd mqtt (mqtt) | ||
+ | |||
+ | |||
+ | |||
docker pull emqx/mqttx-web:latest | docker pull emqx/mqttx-web:latest | ||
docker run -d --name mqttx-web -p 8070:80 emqx/mqttx-web:latest | docker run -d --name mqttx-web -p 8070:80 emqx/mqttx-web:latest | ||
Zeile 924: | Zeile 935: | ||
− | |||
30 cd /root | 30 cd /root | ||
31 mkdir mosquitto | 31 mkdir mosquitto | ||
Zeile 932: | Zeile 942: | ||
39 sudo nano config/mosquitto.conf | 39 sudo nano config/mosquitto.conf | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
64 docker run -it -p 1883:1883 -p 9001:9001 --name mosquitto -v /home/mosquitto/config:/mosquitto/config -v /home/mosquitto/data:/mosquitto/data -v /home/mosquitto/log:/mosquitto/log eclipse-mosquitto | 64 docker run -it -p 1883:1883 -p 9001:9001 --name mosquitto -v /home/mosquitto/config:/mosquitto/config -v /home/mosquitto/data:/mosquitto/data -v /home/mosquitto/log:/mosquitto/log eclipse-mosquitto | ||
65 docker container ls -a | 65 docker container ls -a |
Version vom 14. Oktober 2024, 10:02 Uhr
Inhaltsverzeichnis
- 1 Docker Doku
- 2 Docker Hub
- 3 Play with Docker
- 4 Docker Tutorial
- 5 Grundkurs
- 6 26 Docker-Befehle mit Beispielen
- 7 Docker Befehle / Spickzettel
- 8 Murfman Wiki / Tools / Docker
- 9 Docker auf einem Raspberry Pi installieren
- 10 Docker einrichten unter Linux, Windows, macOS
- 11 How to install and use Portainer for easy Docker container management
- 12 Workshop
- 13 commit
- 14 build
- 15 run
- 16 Debian
- 17 VPN
- 18 SSH Config
- 19 Schimmer-Media RaspberryPi Docker Portainer
- 20 Docker und VirtualBox / VMWare gleichzeitig unter Windows
- 21 Docker Spickzettel
- 22 Docker Volume
- 23 Docker Kurs Experteach
- 24 Udemy Docker Bootcamp - vom Anfänger zum Profi
- 24.1 Installation auf Debian
- 24.2 (8) docker busybox
- 24.3 (9) Blick in den Container
- 24.4 (10) Ports mappen
- 24.5 (11) detached modus
- 24.6 (12) Zugriff auf detached container
- 24.7 (13) Dateien an container übergeben
- 24.8 (13b) Volume erzeugen und verbinden
- 24.9 (14) container stoppen, löschen
- 24.10 (15) container automatisch starten
- 24.11 (16) Stats
- 24.12 (17) Resourcen limitieren
- 24.13 (18) Logs lesen
- 24.14 (19) Logs in JSON Datei
- 24.15 Aufgabe MYSQL Container exportieren
- 24.16 (20) Das erste Dockerfile
- 24.17 Hello World from Flask App!
- 24.18 (22) Docker Hub
- 24.19 (23) Environment
- 24.20 (24) Python Deployment
- 24.21 (25) Node.js Deployment
- 24.22 (26) MailCow EMail Server
- 24.23 (27) Wordpress
- 24.24 (28) NextCloud
- 24.25 (29) Bonus Joomla
- 24.26 (30) zusätzliche optionen von docker-compose
- 24.27 (31) Dateiformat docker-compose
- 24.28 Aufgabe 2 : Erstelle einen nginx-Server mit einer Dockerfile
- 24.29 (32) Was ist ein Swarm
- 24.30 (33) Docker Machine
- 24.31 (34) VM erstellen
- 24.32 (35) VM inspizieren
- 24.33 (36) Swarm erstellen
- 24.34 (38) Swarm aufräumen
- 25 Insatallationen
- 26 QNAP
- 27 Redis
- 28 Jenkins
- 29 Feste IP Adresse einrichten
- 30 MQTT Mosquitto
Docker Doku
https://docs.docker.com/
Docker Hub
https://hub.docker.com/
Play with Docker
https://labs.play-with-docker.com/ smbsoft
Docker Tutorial
https://techgoat.net/index.php?id=178 https://techgoat.net/index.php?c=docker
Grundkurs
https://jaxenter.de/einfuehrung-docker-tutorial-container-61528
https://jaxenter.de/10-wege-docker-images-zu-bauen-1-61421
https://jaxenter.de/12-docker-tipps-61328
26 Docker-Befehle mit Beispielen
https://geekflare.com/de/docker-commands/
Docker Befehle / Spickzettel
https://www.brocksi.net/docker-befehle/ https://swissarmydevops.com/containers/docker/docker-cli-cheat-sheet https://www.docker.com/wp-content/uploads/2022/03/docker-cheat-sheet.pdf https://dockerlux.github.io/pdf/cheat-sheet-v2.pdf
Murfman Wiki / Tools / Docker
http://notes.murfman.de/Tools/Docker
Docker auf einem Raspberry Pi installieren
https://sebastianbrosch.blog/docker-auf-einem-raspberry-pi-installieren/
sudo curl -fsSL https://get.docker.com | sh sudo curl -fsSL https://test.docker.com | sh sudo docker version sudo docker info sudo docker run hello-world
Docker einrichten unter Linux, Windows, macOS
https://www.heise.de/ct/artikel/Docker-einrichten-unter-Linux-Windows-macOS-4309355.html
Installieren unter Linux
Unter Linux gibt es nicht den einen Weg zur Docker-Installation – so, wie es auch nicht das eine Linux gibt. Die offiziellen Paketquellen der Distributionen sind meist kein geeigneter Anlaufpunkt für eine aktuelle Docker-Version. Docker entwickelt sich schneller weiter als die Zeitpläne der Distributionen es vorsehen. Für Docker-Einsteiger gibt es ein bequemes Installations-Skript. Wer kein Problem damit hat, ein fremdes Skript auszuführen, kommt damit schnell zur laufenden Docker-Umgebung. Heruntergeladen wird es per Curl: curl -fsSL https://get.docker.com -o get-docker.sh Um sicherzugehen, dass das Skript nicht manipuliert ist, können Sie den Inhalt mit einem Texteditor öffnen. Zum Abgleich können Sie das zugehörige GitHub-Repository heranziehen. Führen Sie anschließend das Skript mit Root-Rechten aus:
sudo sh get-docker.sh
Das Skript lädt Docker herunter und installiert es. Anschließend sollten Sie den aktuellen Benutzer zur Gruppe docker hinzufügen, damit Sie auch als normaler Benutzer auf den Docker-Daemon und die laufenden Container einwirken können.
sudo usermod -aG docker $USER Damit die Änderung wirkt, müssen Sie sich einmal ab- und wieder anmelden. Anschließend ist Docker einsatzbereit.
Wer sich nicht auf ein Skript verlassen möchte, kann die Schritte auch per Hand durchführen – für Produktivsysteme ist das der empfohlene Weg. In der Docker-Dokumentation gibt es Anleitungen für CentOS, Debian, Fedora und Ubuntu.
Docker-Compose Für Container-Zusammenstellungen ist Docker-Compose das Mittel der Wahl. Mit diesem Programm können Sie Ihre Zusammenstellung als YAML-Datei speichern und mit dem Befehl docker compose up hochfahren. Lange Zeit war Docker-Compose eine parallel entwickelte Software neben Docker. Auf der Kommandozeile hat man es mit docker-compose (mit Bindestrich) aufgerufen. Seit 2021 hat Docker die Arbeit an einem großen Integrationsprojekt abgesschlossen und Compose als Subcommand in die Docker-CLI eingebaut (docker compose). Wenn Sie noch alte Anleitungen finden, können Sie den Bindestrich einfach weglassen, das neue Compose funktioniert nahezu identisch.
In Docker Desktop ist Compose bereits eingebaut und aktiviert. docker compose sollte also direkt funktionieren. Unter Linux müssen Sie es als Plugin installieren. Das gelingt mit:
mkdir -p ~/.docker/cli-plugins/ curl -SL https://github.com/docker/compose/releases/download/v2.1.0/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose
Auf dem Raspberry Pi ersetzen Sie x86_64 durch armv7. Die schlechte Nachricht: Es gibt keine URL, die immer die letzte aktuelle Version herunterlädt. Um das Plugin zu aktualisieren, müssen Sie sich auf der Release-Seite bei GitHubinformieren und die Version in der URL ersetzen.
Zum Schluss machen Sie die geladene Datei noch ausführbar:
chmod +x ~/.docker/cli-plugins/docker-compose Wenn Sie möchten, dass alle Nutzer auf der Maschine das Plugin nutzen, ersetzen Sie beim Herunterladen und beim chmod-Befehl den Pfad ~/.docker/cli-plugins/docker-compose durch /usr/local/lib/docker/cli-plugins.
How to install and use Portainer for easy Docker container management
https://www.techrepublic.com/article/how-to-install-and-use-portainer-for-easy-docker-container-management/
sudo docker run -d \ --name myPortainer_9000 \ --publish 9000:9000 \ --volume /var/run/docker.sock:/var/run/docker.sock \ --restart always \ portainer/portainer
sudo docker run -d \ --name myPortainer_9010 \ --publish 9010:9000 \ --volume /var/run/docker.sock:/var/run/docker.sock \ --restart always \ portainer/portainer-ce
Workshop
https://www.ab-heute-programmieren.de/docker-teil-1-was-ist-docker/ https://www.ab-heute-programmieren.de/docker-teil-2-das-arbeiten-mit-containern/ https://www.ab-heute-programmieren.de/docker-teil-3-images/ https://www.ab-heute-programmieren.de/docker-teil-4-das-dockerfile/
commit
docker commit -m "myDebian aktuell" -a "Stefan Muehlbauer" e45ba8fe0606c4fffab09d0776cde934a9af9cbe24c3d5d3cfb1bfcc9b7de5ed
build
docker build -t debian:smV1 . (Dockerfile ) https://docs.docker.com/engine/reference/commandline/build/
run
docker run -i -t -d --hostname debian_test --name debian_test -p 9522:22 debian:smV1
https://docs.docker.com/engine/reference/commandline/run/
Debian
docker run -i -t -d --hostname debian_002 --name debian_002 -p 9122:22 debian:latest
VPN
https://mobilejazz.com/blog/setting-up-a-vpn-server-in-5-minutes-with-docker/
SSH Config
docker exec debian_002 apt-get install openssh-server -y
docker exec debian_001 service ssh status docker exec Debian_001 Service ssh start
Schimmer-Media RaspberryPi Docker Portainer
https://www.schimmer-media.de/forum/thread/3835-raspberry-pi-server-mit-portainer-smarthome-verwalten-tutorial/
Docker und VirtualBox / VMWare gleichzeitig unter Windows
https://www.guido-muehlwitz.de/2019/05/docker-und-virtualbox-vmware-gleichzeitig-unter-windows/
Über die Eingabeaufforderung (als Administrator) Hyper-V ausschalten: bcdedit /set hypervisorlaunchtype off Und wieder einschalten: bcdedit /set hypervisorlaunchtype auto Ist Hyper-V aus läuft VirtualBox (und kein Docker), ist es eingeschaltet läuft Docker (und kein VirtualBox). Beides wird (und kann) nicht parallel laufen. Windows wäre übrigens nicht Windows, wenn man an der Stelle den Rechner dann auch jedes Mal neu booten müsste. Danke dafür.
Docker Spickzettel
Zeige Docker Images an docker ps, dockewr ps -a
Erstelle ein DockerImage docker build docker-cpmpose build
Starte ein Docker Image docker run docker-compose up -d
Stoppe ein DockerImage docker stop docker-compose stop
Zeige Logs zu einem DockerImage docker logs <>
Verbinde zu DockerImage per bash docker exec -u www-data -it <> bash
Kopiere date von local zu DockerImage docker cp src/datei_kopieren.zip docker_image_name:/ziel_pfad
Kopiere eine Datei von deinem Docker-Image nach local docker cp docker_image_name:/pfad_zur_datei/test.txt /local_pfad/
Befehl in Docker-Image ausführen ohne auf das Image zu gehen docker exec -u www-data docker_image_name bash -c 'cd /var/www/magento/src && ./bin/magento setup:static-content:deploy de_DE'
IP-Adresse eines Docker-Images herausfinden docker inspecht docker_image_name
Docker Volume
https://www.ionos.de/digitalguide/server/knowhow/docker-container-volumes/ https://www.modius-techblog.de/docker/docker-verwendung-von-volume/
Docker Tutorial [Teil 6 - Storage (Grundlagen)] https://techgoat.net/index.php?id=183
docker volume create vol1 docker volume ls docker volume inspect vol1 [ { "CreatedAt": "2021-03-17T23:56:32+01:00", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/vol1/_data", "Name": "vol1", "Options": {}, "Scope": "local" } ] docker volume create nginx_data docker volume inspect nginx_data [ { "CreatedAt": "2021-03-18T00:11:13+01:00", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/nginx_data/_data", "Name": "nginx_data", "Options": {}, "Scope": "local" } ] docker run -p 5000:80 -d -ti -v nginx_data:/usr/share/nginx/html nginx
Docker Kurs Experteach
Befehle
docker info | less docker system info
docker run hello-world docker run --rm hello-world docker run --name sepp hello-world docker run --name sepp --hostname hallosepp hello-world
docker ps docker ps -a docker start -i <containername>
docker container rm <containername> docker rm <containername> docker container rm $(docker ps -aq) docker container prune
docker image ls docker image inspect hello-world:latest docker image rm <imagename>
docker pull hello-world:latest docker create hello-world:latest docker start -i <containername>
docker run -it ubuntu bash docker run -it centos:7 docker attach <running container> strg pq
docker run -ti --name logserver -v /home/student/daten:/uebergabe ubuntu:18.04 /bin/bash docker run -ti --name logserver2 -v /home/student/daten:/uebergabe ubuntu:18.04 /bin/bash docker run -ti --name logserver3 -v /home/student/daten/text.txt:/text.txt ubuntu:18.04 /bin/bash docker run -ti --name viele -v /home/student/daten/:/aadaten -v /home/student/daten/text.txt:/aadatei ubuntu:18.04 /bin/bash docker run -ti --name viele -v /etc/passwd:/etc/passwd:ro -v /etc/group:/etc/group:ro -v /home/student/daten/:/aadaten -v /home/student/daten/text.txt:/aadatei ubuntu:18.04 /bin/bash
docker attach docker exec docker pause docker unpause docker restart docker rename docker start docker stop docker kill
docker commit willy netimage:v1 docker save netimage:v1 -o meinnetimage
Udemy Docker Bootcamp - vom Anfänger zum Profi
Installation auf Debian
Debian: sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 #Verifizieren, dass der Fingerabdruck 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 lautet sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
docker -v
Docker Compose https://github.com/docker/compose/releases/
Version 1.28.5 curl -L https://github.com/docker/compose/releases/download/1.28.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
docker-compose -v
sudo docker oder nur docker
(8) docker busybox
Container laden
docker pull busybox
Images anzeigen
docker images
Container starten
docker run busybox docker run busybox echo "Hallo Welt 42"
Container anzeigen
docker ps docker ps -a
container löschen
docker rm <containerid> docker rm $(docker ps -a -q -f status=exited) docker container prune
(9) Blick in den Container
-it docker run -it busybox sh
(10) Ports mappen
-p sudo docker pull nginx sudo docker run nginx sudo docker run -p 5000:80 nginx
(11) detached modus
-d docker run -d -p 5000:80 nginx
(12) Zugriff auf detached container
exec docker exec -ti <containerid> bash attach docker attach <containerid>
docker run -p 5000:80 -d -ti nginx docker attach <containerid> strg p; strg q
(13) Dateien an container übergeben
docker run -p 5000:80 -d -v source:destination nginx docker run -p 5000:80 -d -ti -v /var/lib/docker/volumes/nginx/html/_data:/usr/share/nginx/html nginx
(13b) Volume erzeugen und verbinden
docker volume create nginx_data docker run -p 5000:80 -d -ti -v nginx_data:/usr/share/nginx/html nginx
(14) container stoppen, löschen
docker ps docker container ls docker stop <containerid> docker rm <containerid>
docker image ls docker image rm <image> docker image prume
(15) container automatisch starten
--restart on-failure, always, unless-stopped, never docker run -p 5100:80 -dit --name mynginx nginx docker run -p 5100:80 -dit --restart unless-stopped --name mynginx nginx docker run -p 5000:80 -dit -v nginx_data:/usr/share/nginx/html --restart unless-stopped --name mynginx nginx:latest
(16) Stats
docker stats
(17) Resourcen limitieren
-m xm, --cpus=x.x docker run -p 5100:80 -dit -m 4m --cpus="0.5" --restart unless-stopped --name mynginx nginx
(18) Logs lesen
logs docker run -p 5100:80 -dit --restart unless-stopped --name mynginx nginx docker attach <containerid>
docker logs <containerid>
(19) Logs in JSON Datei
docker run -p 5100:80 -dit --restart unless-stopped --log-driver json-file --log-opt=100m --log-opt max-file=100 --name mynginx nginx
sudo docker inspect -f Vorlage:.LogPath <containerid>
Aufgabe MYSQL Container exportieren
docker run --name myMYSQL_100 mysql:latest docker run --name myMYSQL_100 -e MYSQL_ROOT_PASSWORD=myPW -p 53306:3306 -dit mysql:latest docker exec -ti <containerID> bash
(20) Das erste Dockerfile
app.py
from flask import Flask
app = Flask(__name__)
@app.route("/")
def default():
html = "
Hello World from Flask App!
"
return html
if __name__ == "__main__":
app.run(host='0.0.0.0',port=80)
dockerfile
#Zgrundeliegende Image
FROM python:3.7-slim
WORKDIR /app
#Kopieren des aktuellen Verzeichnisses in /app
ADD . /app
#Installieren
RUN pip install --trusted-host pypi.python.org -r requirements.txt
#Port 80 veröffenlichen
EXPOSE 80
cmd ["python","app.py"]
app.py, Dockerfile, requirements.txt sudo docker build -t first . docker run -dit -p 5200:80 first
(22) Docker Hub
docker login smbsoft docker tag first smbsoft/first:1.0 docker push smbsoft/first:1.0
(23) Environment
ENV=
(24) Python Deployment
(25) Node.js Deployment
(26) MailCow EMail Server
git clone https://github.com/mailcow/mailcow-dockerized cd mailcow-dockerized/ ./generate_config.sh
docker-compose pull
nano docker-compose.yml
sudo docker-compose up -d
admin muhu
(27) Wordpress
docker-compose.yml
version: '3.6'
services: db: image: mysql:5.7 volumes: - data_db:/var/lib/mysql ports: - 3306:3306 restart: always environment: MYSQL_ROOT_PASSWORD: mypassword MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: image: wordpress:latest depends_on: - db ports: - 80:80 restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress volumes: - .wordpress/plugins:/var/www/html/wp-content/plugins - .wordpress/themes:/var/www/html/wp-content/themes - .wordpress/uploads:/var/www/html/wp-content/uploads volumes: data_db:
(28) NextCloud
sudo docker pull nextcloud sudo docker run -dit -p 8030:80 nextcloud
(29) Bonus Joomla
sudo docker pull joomla
version: '3.1' services: joomla: image: joomla restart: always depends_on: - joomladb links: - joomladb:mysql ports: - 8080:80 environment: JOOMLA_DB_HOST: joomladb:3306 JOOMLA_DB_PASSWORD: example joomladb: image: mysql:5.6 ports: - 3306:3306 restart: always environment: MYSQL_ROOT_PASSWORD: example
sudo docker-compose up -d
(30) zusätzliche optionen von docker-compose
deploy: replicas: 3 resources: limits: cpus: "0,5" memory: 200m
(31) Dateiformat docker-compose
version: '3.1'
docker-compose --version docker --version
https://docs.docker.com/compose/compose-file/
Aufgabe 2 : Erstelle einen nginx-Server mit einer Dockerfile
(32) Was ist ein Swarm
(33) Docker Machine
uname
uname -a uname -s uname -m uname --help
root@v28993:~# uname -a Linux v28993.1blu.de 4.19.0 #1 SMP Fri Nov 20 21:47:55 MSK 2020 x86_64 GNU/Linux root@v28993:~# uname -s Linux root@v28993:~# uname -m x86_64 root@v28993:~# uname --help Usage: uname [OPTION]... Print certain system information. With no OPTION, same as -s.
-a, --all print all information, in the following order, except omit -p and -i if unknown: -s, --kernel-name print the kernel name -n, --nodename print the network node hostname -r, --kernel-release print the kernel release -v, --kernel-version print the kernel version -m, --machine print the machine hardware name -p, --processor print the processor type (non-portable) -i, --hardware-platform print the hardware platform (non-portable) -o, --operating-system print the operating system --help display this help and exit --version output version information and exit
Docker-machine installieren
$ curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine docker-machine version
base=https://github.com/docker/machine/releases/download/v0.16.2 curl -L $base/docker-machine-$(uname -s)-$(uname -m) > /tmp/docker-machine sudo install /tmp/docker-machine /usr/local/bin/docker-machine
Arch: sudo pacman -S docker-machine Andere: base=https://github.com/docker/machine/releases/download/v0.16.0 curl -L $base/docker-machine-$(uname -s)-$(uname -m) > /tmp/docker-machine sudo install /tmp/docker-machine /usr/local/bin/docker-machine Überprüfen der Installation: docker-machine version
curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine && chmod +x /tmp/docker-machine && sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
(34) VM erstellen
VBOX installieren
sudo apt-get install nano nano /etc/apt/sources.list
deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian buster contrib
wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add - wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
sudo apt-get update
sudo apt-get install virtualbox-6.1
sudo apt-get remove virtualbox virtualbox-5.1 sudo sh -c 'echo "deb http://download.virtualbox.org/virtualbox/debian xenial contrib" >> /etc/apt/sources.list.d/virtualbox.list' wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add - wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add - sudo apt-get update sudo apt-get install virtualbox-5.2
sudo reboot -n sudo apt-get install linux-headers-$(uname -r) sudo apt install build-essential /sbin/vboxconfig
VM erstellen
sudo docker-machine create --driver virtualbox myvm1337
docker-machine create --driver virtualbox myVM001 docker-machine create --driver virtualbox myVM002 docker-machine create --driver virtualbox myVM003
docker-machine ls docker-machine stop <vm>
docker-machine create default --virtualbox-no-vtx-check
(35) VM inspizieren
docker-machine inspect <vm>
(36) Swarm erstellen
docker-machine swarm leave --force docker-machine swarm init docker-machine swarm init --advertise-addr <IP>
docker-machine ssh VM "docker swarm join --token <> <IP>"
docker node ls
(38) Swarm aufräumen
docker stack rm <> docker-machine ssh VM "docker swarm leave"
docker swarm leave -f
docker-machine ls
docker-machine stop $(docker-machine ls -q) docker-machine rm $(docker-machine ls -q)
Insatallationen
Portainer
sudo docker run -d --name myPortainer_9010 --publish 9010:9000 --volume /var/run/docker.sock:/var/run/docker.sock --restart always portainer/portainer-ce:latest sudo docker run -d --name myPortainer_9020 --publish 9020:9000 --volume /var/run/docker.sock:/var/run/docker.sock --restart always portainer/portainer-ce:latest
docker volume ls
# In der Regel werdet Ihr das bei euch so finden "portainer_data:/data" "Name": "portainer_data", "Source": "/var/lib/docker/volumes/portainer_data/_data", "Destination": "/data",
Update
docker stop myPortainer_9010 docker rm myPortainer_9010 docker pull portainer/portainer-ce:latest sudo docker run -d --name myPortainer_9010 --publish 9010:9000 --volume /var/run/docker.sock:/var/run/docker.sock --restart always portainer/portainer-ce:latest
docker pull portainer/portainer-ce:2.20.1 sudo docker run -d --name myPortainer_9020 --publish 9020:9000 --volume /var/run/docker.sock:/var/run/docker.sock --restart always portainer/portainer-ce:2.20.1
docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 \ --name=portainer \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ --restart=always \ portainer/portainer-ce:latest
InfluxDB
docker pull influxdb:1.8
https://hub.docker.com/_/influxdb https://www.zentica-global.com/de/zentica-blog/siehe/so-installieren-sie-influxdb-telegraf-und-grafana-auf-docker-6073ac36573d4 docker run -p 8086:8086 -v influxdb:/var/lib/influxdb influxdb:1.8
https://www.youtube.com/watch?v=0CpHwszFjUY Commands for influxdb container creation: Stellen Sie zunächst sicher, dass auf dem Port 8086 nichts ausgeführt wird. $ sudo netstat -tulpn | grep 8086
sudo docker run -d --name influxdb -p 8086:8086 -e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_PASSWORD=my-secret-pw -v influxdb:/var/lib/influxdb influxdb:1.8
Commands to manage the database:
sudo docker exec -it influxdb bash
influx
show databases; create database databasename use database dbname show measurements INSERT cpu,host=serverA value=1 INSERT cpu,host=serverA value=2
MariaDB
https://hub.docker.com/_/mariadb https://hub.docker.com/r/jsurf/rpi-mariadb
docker pull jsurf/rpi-mariadb sudo docker run --name mariadb -p 3306:3306 -v /home/pi/mysql.cnf:/etc/mysql/conf.d -v mariadb://var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d jsurf/rpi-mariadb -v /home/pi/mysql.cnf:/etc/mysql/conf.d
docker pull mariadb
Adminer
https://www.adminer.org/de/ https://hub.docker.com/_/adminer/
https://kinsta.com/de/blog/adminer/
MySQL
docker pull hypriot/rpi-mysql https://www.youtube.com/watch?v=EG3RhQNl00o
sudo docker run --name mysql -p 3307:3306 -v /home/pi/mysql.cnf:/etc/mysql/conf.d -v mysql://var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d hypriot/rpi-mysql:latest
-v /my/custom:/etc/mysql/conf.d
-v /home/pi/mysqlcnf:/etc/mysql/conf.d
-e MYSQL_USER=user -e MYSQL_PASSWORD=userpw
Grafana
docker pull grafana/grafana
docker run -d --name=grafana -p 3000:3000 grafana/grafana
https://www.smarthome-tricks.de/dashboard-influxdb-grafana-und-iobroker/ https://www.youtube.com/watch?v=bZLXVjUJJ4Q
PHPmyAdmin
https://hub.docker.com/r/mt08/rpi-phpmyadmin sudo docker run -d --name phpmyadmin -e PMA_ARBITRARY=1 -p 8080:80 mt08/rpi-phpmyadmin
MariaDB : 192.168.0.83:3306 MySQL : 192.168.0.83:3307
Chronograf
sudo docker run --name chronograf -p 8888:8888 chronograf
Gotify
https://gotify.net/ https://www.youtube.com/watch?v=LJfwis_J2pc
Uptime Kuma
https://www.youtube.com/watch?v=7-GgSoewyJg https://hub.docker.com/r/louislam/uptime-kuma
docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1
AnalyzerXS
docker run -d --name AnalyzerXS -p 8081:8081 -v $PWD/data:/data --device=/dev/ttyUSB4 psitrax/asksinanalyzer
QNAP
Portainer
https://devarounder.de/portainer-auf-qnap-nas-installieren/ https://www.youtube.com/watch?v=PGn1VyZe3dM
Influx DB
https://hub.docker.com/_/influxdb/ docker run -p 8086:8086 --name influxdb-18-a -v influxdb:/var/lib/influxdb influxdb:1.8
docker run -p 8087:8086 --name influxdb-18-b -v influxdb:/root/influxdb/data -v $PWD/influxdb.conf:/root/influxdb/influxdb.conf influxdb:1.8 -config /root/influxdb/influxdb.conf
docker run -p 8088:8086 --name influxdb-20a -v influxdb:/var/lib/influxdb influxdb:2.0
docker run -d -p 8089:8086 --name influxdb-20b -v $PWD/data:/var/lib/influxdb2 -v $PWD/config:/etc/influxdb2 -e DOCKER_INFLUXDB_INIT_MODE=setup -e DOCKER_INFLUXDB_INIT_USERNAME=admin -e DOCKER_INFLUXDB_INIT_PASSWORD=12Tango34#1 -e DOCKER_INFLUXDB_INIT_ORG=my-org -e DOCKER_INFLUXDB_INIT_RETENTION=1w influxdb:2.0
-e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket -e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=my-super-secret-auth-token
IOBroker
https://hub.docker.com/r/iobroker/iobroker
docker run -p 8081:8081 --name iobroker-1 -v iobrokerdata1:/opt/iobroker buanet/iobroker:latest
Mosquito
https://hub.docker.com/_/eclipse-mosquitto
https://github.com/sukesh-ak/setup-mosquitto-with-docker
http://rtsdp.eu5.org/dashboard/TestMosquittoOrgDashboard.html https://github.com/sanjeshpathak/Mosquitto-Dashboard
https://github.com/thomasnordquist/MQTT-Explorer/releases
Redis
https://hub.docker.com/_/redis
Redis Docker Image
https://smarthome.buanet.de/docker/container-images/redis/
Redis Container unter Portainer bereitstellen
https://smarthome.buanet.de/2020/12/redis-container-unter-portainer-bereitstellen/
ioBroker Docker Container mit Redis DB verbinden
https://smarthome.buanet.de/2020/12/iobroker-docker-container-mit-redis-db-verbinden/
Redis in ioBroker - Überblick
https://forum.iobroker.net/topic/26327/redis-in-iobroker-%C3%BCberblick
sudo docker run --name my-redis-container -v /data/myredis/redis.conf:/redis.conf -v /data/myredis/data:/data -p 7001:6379 --restart=always -d redis:latest --save 60 1 --loglevel warning
sudo docker run --name myRedisServer -p 5050:6379 -v redis.conf:/redis.conf --restart=always -d redis:latest --save 60 1 --loglevel warning sudo docker run -it --network bridge --rm redis:latest redis-cli -h myRedisServer sudo docker run --name myRebRow --rm -ti -p 5051:5001 -d --link myRedisServer marian/rebrow docker exec -it [ID] sh
[IP_oder_Hostname]:6379> ping PONG [IP_oder_Hostname]:6379> set test irgendeinwert OK [IP_oder_Hostname]:6379> get test irgendeinwert [IP_oder_Hostname]:6379> quit OK
config get requirepass * config set requirepass <PW> config get requirepass
https://github.com/marians/rebrow docker run --name myRebRow --rm -ti -p 5051:5001 -d --link myRedisServer marian/rebrow
docker run --rm -ti -p 5001:5001 --link my-redis-container:my-redis-container marian/rebrow Home / 192.168.1.241:7001
5.45.101.224:5050
Jenkins
docker run --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home jenkins/jenkins
Feste IP Adresse einrichten
--net macvlan0 --ip 192.168.1.211 --net FujitsuFesteIP --ip 192.168.0.xx
MQTT Mosquitto
195.90.222.185 8085
Moquitto Config allow_anonymous false listener 1883 listener 9001 listener 8080 protocol websockets persistence true allow_anonymous true password_file /mosquitto/config/pwfile persistence_file mosquitto.db persistence_location /mosquitto/data/ log_timestamp true connection_messages true
https://cedalo.com/blog/enabling-websockets-over-mqtt-with-mosquitto/
https://mosquitto.org/man/mosquitto_passwd-1.html
mqtt-Admin https://github.com/hobbyquaker/mqtt-admin http://195.90.222.185:8090/mqtt-admin
HiveMQ https://github.com/hivemq/hivemq-mqtt-web-client http://195.90.222.185:8090/hivemq/
EMQX mqttx
https://mqttx.app/
docker pull emqx/emqx:latest docker pull emqx/emqx:5.5.1 docker run -d --name MQTTX-p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest docker run -d --name MQTTX-p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:5.5.1
docker ls -a docker container ls -a docker exec -it CONTAINERID sh // öffnet die Shell innerhalb des Dockers docker exec -it ee795924785c sh mosquitto_passwd -c /mosquitto/config/mosquitto.passwd mosquitto mosquitto_passwd -c /mosquitto/config/mosquitto.passwd mqtt (mqtt)
docker pull emqx/mqttx-web:latest docker run -d --name mqttx-web -p 8070:80 emqx/mqttx-web:latest
https://mqttx.app/ http://195.90.222.185:8091
docker pull eclipse-mosquitto:latest
30 cd /root 31 mkdir mosquitto 32 mkdir mosquitto/config 33 mkdir mosquitto/data 34 mkdir mosquitto/log 39 sudo nano config/mosquitto.conf
64 docker run -it -p 1883:1883 -p 9001:9001 --name mosquitto -v /home/mosquitto/config:/mosquitto/config -v /home/mosquitto/data:/mosquitto/data -v /home/mosquitto/log:/mosquitto/log eclipse-mosquitto 65 docker container ls -a 66 docker exec -it ed088a38ccc8 sh 67 docker container ls -a 68 docker exec -it ed088a38ccc8 sh 69 history