Docker Shortcuts

Docker Image aus dem Reository laden

docker pull debian

Docker Image starten

// -d läuft im Hintergrund
docker run -d dockerImageName

//durch "-i" (interactive) und "-t" (tty) können wir die Console des Docker Images steuern
docker run -i -t dockerImageName /bin/bash

Ports mittels docker run

-p 8000:8888         Port LocalSystem:DockerContainer
-p port weiterleiten
-P alle ports für zb Kommunikation zw Containern

Daten des Hostsystems einbinden

-v /mein/ordner/im/host:/ordner/im/docker

Arbeiten mit Containern

Mit jeden docker run wird aus einem Image ein Container erstellt. Sollte dieser an der Konsole nachbearbeitet worden sein und ich beende diesen, kann ich den ihm mittels docker run nicht wieder starten, denn dann erstellt docker wieder einen neuen Container aus dessen Image.
Den veränderten Container kann ich mittels

docker container restart ContainerID

starten. Eine Auflistung aller Container erhalte ich mittels

docker ps -a

Wenn ich an die Console meines laufenden Containers möchte, kann ich diese über

docker exec -it ContainerID /bin/bash

erreichen.

Natürlich kann ich aus meinen modifizierten Container auch ein neues Image generieren. Dazu muss ich einfach meine Änderungen am Container in ein Image committen

docker commit -m "mein Kommentar" containerID neuerDockerImageName

Laufende Docker Instanzen anzeigen

docker ps

Verfügbare Docker Images anzeigen

docker images

Laufende Docker Instanz beenden

docker stop ContainerID

Alle Docker Instanzen beenden

docker stop $(docker ps -a -q)

Alle Container löschen

docker rm $(docker ps -a -q)

Alle Images löschen

docker rmi $(docker images -q)

Unbenutzte Docker Daten löschen

docker system prune

Apache Weiterleitung auf Docker Container

Im Beispiel läuft über meine-domain.de/d-nginx ein Nginx Server

-- module aktivieren
a2enmod proxy
a2enmod proxy_http


...

    Order allow,deny
    Allow from all
    Require all granted
  

 ProxyPass /d-nginx http://localhost:81/
 ProxyPassReverse /d-nginx http://localhost:81/
...



Ordner per ssh mounten

Einen Ordner per ssh mounten

// Verzeichnis anlegen in das ich meinen Ordner mounten möchte
mkdir /home/user/localMountFolder
sshfs @:/entferntes/Verzeichnis localMountFolder

// aushängen
fusermount -u /home/user/localMountFolder

Linux Befehle

Hier entsteht eine kleine Ansammlung an Befehlen.

Installierte Linux Distribution ermitteln:

uname -a
lsb_release -a 
cat /etc/issue 

Spracheinstellungen jetzt setzten

export LC_ALL=en_US.utf8

Consolenhistory

history
history -c // History löschen
history -d NNN  // einen Historyeintrag löschen
 befehl  // Vorangestelltes Leerzeichen -> erscheint nicht in History

Speicherauslastung
Ordnergrößen

du -h --max-depth=1

Festplattenbelegung

df -h

Zertifikat einer url prüfen:

curl --insecure -v https://www.meineDomain.de 2>&1 | awk '/^\* SSL/ { ssl=1 } /^\*/ { if (ssl) print }'

oder

openssl s_client -showcerts -connect www.meineDomain.de:443

Welche Anwendung läuft auf Port xyz

netstat -tanp | grep [Portnummer]

                

Bash – Debuggen

Um die Debug-Ausgabe eines Bash-Scriptes zu aktivieren, reicht es direkt in den Script

set -x

einzufügen. Ab diesen Moment wird die Debug-Ausgabe aktiviert.

Deaktivieren kann man diese Ausgabe genauso einfach

set +x

Schriftsatzeinstellungen – ssh und mc

Sollte es Zeichensatzprobleme bei SSH Verbindungen geben, so ĺiegt dies an unterschiedlich gesetzten Zeichensätzen.
Das Problem kann behoben werden, wenn der auf dem Zielsystem gesetzte Zeichensatz auch auf dem Lokalen System gesetzt wird.

So ermittelt man den gesetzten Zeichensatz:

locale

Und so kann ich den Zeichensatz setzen:

export LANG=de_DE.UTF-8

Swap File anlegen

Oft ist es hilfreich ein Swapfile zu nutzen.
Man kann dies relativ einfach anlegen.

Als erstes erstellen wir eine Datei mit einer festen Größe für das Swapfile

bs = steht für Blocksize
count = Anzahl der Blöcke
Größe der Datei = bs*count

dd if=/dev/zero of=/pfad/zum/swapfile bs=1M count=1024

Wir bereiten die Datei für den Einsatz als Swap vor. – Das gilt auch für Swap Partitionen

mkswap /pfad/zum/swapfile

Nun aktivieren wir den neuen Swap-Speicher

swapon /pfad/zum/swapfile

Damit das Swapfile automatisch beim reboot geladen wird, konfigurieren wir noch die /etc/fstab

/pfad/zum/swapfile swap swap defaults 0 0

Sollte ein altes Swapfile, was nun nicht mehr benötigt wird, vorhanden sein, dann kann man dieses deaktivieren und abschließend löschen.
Der alte Eintrag in der fstab muss natürlich auch entfernt werden.

swapoff /pfad/zum/alten/swapfile

Linux SSH Root Zugang verbieten

In aller Regel erhaltet ihr von eurem Hoster ein vorgefertigtes Image. In meinen Fall ist es ein Debian 7.

Damit nicht jeder Zugang zu eurem Server erlangt, solltet ihr euch ausschließlich mit einem eigenen Benutzer per ssh anmelden. Eine Anmeldung mit dem Root-Benutzer solltet ihr verbieten. Die Root-Rechte erlangen wir in Zukunft erst nach einem Ummelden des Benutzers.

Als erstes installieren wir Sudo.

apt-get install sudo

Und OpenSSH-Server

apt-get install ssh

Nun legen wir eine Gruppe an, in der alle Benutzer Mitglied werden, welche sich am Server anmelden können.

addgroup ssh-users

Anschließend erstellen wir unseren Benutzer.

adduser %USERNAME%

Damit sich dieser per ssh anmelden kann, müssen wir den neuen Benutzer der Gruppe ssh-users hinzufügen.

adduser %USERNAME% ssh-users

Um später Root-Rechte zu erlangen benötigt dieser auch eine Mitglidschaft in der Gruppe sudo.

adduser %USERNAME% sudo

Jetzt konfigurieren wir ssh noch so, dass die Mitglieder der Gruppe ssh-users sich per ssh anmelden können.

vi /etc/ssh/sshd_config
# Zeile hinzufügen:
AllowGroups ssh-users

Nun starten wir den ssh-Dienst neu

/etc/init.d/ssh restart

Nun können wir mit einer weiteren putty-Session schon einmal den Loginvorgang des neues Users prüfen.
Nach dem erfolgreichen Login melden wir uns wie folgt zum root-Benutzer um:

sudo -i

Wenn das alles funktioniert hat, dann verbieten wir den direkten ssh-Zugang des Root Benutzers.
Dazu öffnen wir wieder die ssh-config und passen folgende Zeile an

vi /etc/ssh/sshd_config
# Root Login verbieten
PermitRootLogin yes

Auch nach dieser Änderung starten wir den ssh Dienst neu.

/etc/init.d/ssh restart

Nun ist es nicht mehr möglich sich als Root-Benutzer per ssh an der Konsole anzumelden.