Schlagwort-Archive: Docker Containervirtualisierung

Docker ist eine Open-Source-Software zur Isolierung von Anwendungen mit Containervirtualisierung.

Docker Container mit Synology DSM nutzen

Docker App auf Synology NAS laden

Synology ab DSM 6.0 kommt mit der Docker Engine. Zu finden ist die Docker App im Paket-Zentrum mit Eingabe docker im Suchfeld.

Docker ist eine schlanke Virtualisierungsanwendung, Tausende von Container erstellt von Entwickler aus der ganzen Welt, können ausgeführt werden und sind auf dem bekannten Image-Repository, Docker Hub publiziert. Container Images können aus der Synology integrierten Docker App geladen und ausgeführt werden.

Synology Docker Paket

  Wenn die Docker App im Paketzentrum nicht erscheint, wird die Synology DSM Version höchstwahrscheinlich nicht unterstützt.

  Aufgrund der Hardware-Anforderungen wird Docker nur für Modelle mit Virtualisierungstechnik (VT-x) angeboten. Die in dieser Anleitung verwendeten Modelle sind RS818RP+, RS4018xs+ und DS218+ auf diesen Docker ausführbar ist.

Wie nutzt man Docker auf Synology DSM ?

Mit dem öffnen des Hauptmenu Symbol aus DSM findet sich das Icon für die Docker Engine die jetzt gestartet werden kann.

Synology DSM Packet Center

Docker öffnet den Überblick, hier sind die laufenden Container aufgeführt, die Anwendungen einschließlich zugewiesenem Speicher und CPU-Ressourcen, es ist jetzt noch kein Container gestartet.

Docker Ueberblick
Abbildung: Synology DSM Docker Ueberblick

Zusätzlich wird hier im folgenden die Docker Befehlszeile erläutert, diese alternativ für die Docker Console.

CLI   Docker Command Running Container auflisten:

docker ps

Im Abschnitt Registrierung kann nach neuen Images gesucht werden (wie auf der offiziellen Website). Es können auch neue Repositories (zusätzlich zu den offiziellen) unter Einstellungen hinzugefügt werden.

docker_registrierung
Abbildung: Synology DSM Docker Registrierung

CLI   Das original Docker Command ist:

docker search ubuntu-sshd

Nachdem ein passendes Image (Abbild) gefunden wurde, in diesem Fall ein kleines Ubuntu 18.04 Dockerized SSH service Image, wird es mit einem Rechtsklick auf das Synology NAS herunterladen, am besten immer latest wählen. Alle Images sind schreibgeschützt und können mehrfach für weitere Container verwenden werden.

Das herunterladen kann einige Minuten in Anspruch nehmen, je nach grösse und download Bandbreite. Der Status beim herunterladen wird mit einem animierten Symbol dargestellt.

CLI   Das Docker Command ist:

docker pull rastasheep/ubuntu-sshd

Unter Abbild befinden sich die heruntergeladenen Images die auf dem Synology NAS verfügbar sind. Es können neue Container mit dem Assistenten Angedockt, gestartet werden. Hinweis: über das Link Symbol öffnet sich die Docker Hub Seite zum Container mit nützlichen Informationen.

docker abbild finden
Abbildung: Synology DSM Docker Abbild

CLI   Das Docker Command ist:

docker images -a

Nun auf Starten gehen um den Assistenten zu öffnen.

Synology DSM Docker Container Starten
Abbildung: Synology DSM Docker Container Starten

Auf Weiter um den Assistenten abzuschließen, und mit übernehmen den Container starten.

Synology Container erstellen
Abbildung: Synology DSM Docker erstellen

CLI   Das Docker Command ist:

docker run -d -P --name ubuntu rastasheep/ubuntu-sshd

Der laufende Container ist jetzt im Abschnitt Container zu finden.

Synology DSM Docker Container

CLI   Die vollständige Docker Ausgabe wie folgt:

$ docker pull rastasheep/ubuntu-sshd
Using default tag: latest
latest: Pulling from rastasheep/ubuntu-sshd
a48c500ed24e: Pull complete
Digest: sha256:1a4010f95f6b3292f95fb26e442f85885d523f9a0bb82027b718df62fdd0d9e9
Status: Downloaded newer image for rastasheep/ubuntu-sshd:latest
$ docker run -d -P --name ubuntu rastasheep/ubuntu-sshd
2f96bba413755a843c2758f818dbec56f0e163a232e1cb7c7c971034c62a8c98

Zurück in der Docker Übersicht sehen wir nun die Resourcen der gestarteten Container.

Synology Docker Übersicht mit Resourcen der gestarteten Container
Abbildung: Synology DSM Docker Überblick

CLI   Das Docker Command ist:

docker ps -a

Nun versuchen wir ein SSH-Terminal zum Container herzustellen. Dazu sehen wir im Abschnitt Container mit klick auf Details, auf welchem Port der SSH-Dienst horcht.

Abbildung: Synology DSM Docker Conatainer
Abbildung: Synology DSM Docker Container

Im Überblick unter Port-Einstellungen finden wir bei Lokaler Port den gesuchten Wert, in diesem Fall ist es der Port 32789, die Port Adresse wird automatisch zugewiesen.

CLI   Ermitteln der Port Adresse

$ docker port ubuntu 22
0.0.0.0:32789

Jetzt können wir PuTTY oder KiTTY öffnen und Verbinden uns mit der IP des Synology NAS und dem Port 32789 zum Container, für CLI   Das Command wie folgt:

$ ssh -p 32789 root@10.127.52.77
The authenticity of host '[10.127.52.77]:32789 ([10.127.52.77]:32789)' can't be established.
ECDSA key fingerprint is SHA256:YtTfuoRRR4qStSVA5UuxnGamA/dvf+djbIT2Y48IYD0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[10.127.52.77]:32789' (ECDSA) to the list of known hosts.
root@10.127.52.77's password:
Last login: Thu Sep 19 15:00:25 2018 from 172.18.0.1
root@rastasheep-ubuntu-sshd1:~#
KiTTY Konfiguration
Abbildung: KiTTY Session

Anmelden mit root und dem Passwort root.

Docker in Terminal nutzen

Die Docker Engine kann auch aus der Console genutzt werden, sofern das SSH Terminal unter DSM Systemsteuerung – SSH-Dienst aktiviert wurde.

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  build       Build an image from a Dockerfile
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  events      Get real time events from the server
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  history     Show the history of an image
  images      List images
  import      Import the contents from a tarball to create a filesystem image
  info        Display system-wide information
  inspect     Return low-level information on Docker objects
  kill        Kill one or more running containers
  load        Load an image from a tar archive or STDIN
  login       Log in to a Docker registry
  logout      Log out from a Docker registry
  logs        Fetch the logs of a container
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  ps          List containers
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  rmi         Remove one or more images
  run         Run a command in a new container
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  search      Search the Docker Hub for images
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  version     Show the Docker version information
  wait        Block until one or more containers stop, then print their exit codes

Run 'docker COMMAND --help' for more information on a command.

Die in diesem Artikel gezeigte Anwendung von Docker soll als einfaches Beispiel zeigen wie Docker auf einem Synology NAS anwendbar ist, natürlich gibt es nützlichere Container Anwendungen, wie Websever für das Entwickeln von Webanwendungen bis hin zu kompletten Entwicklungsumgebungen, es existieren bereits unzählige Docker Images auf Docker Hub https://hub.docker.com, und weiteren Docker Registraren. Dabei fragt mach sich schon, ob der Aufwand zur Installation seiner Entwicklerumgebung wie Xamp oder LAMP überhaupt noch zweckmäßig ist. An dieser stelle sein noch erwähnt, das alle Daten die im Container gespeichert werden, auf einem persistenten Volumen gespeichert werden müssen, denn mit beenden des Containers gehen sämtliche arbeiten verloren.

Auch gibt es weitere Artikel zur Anwendung von Docker hier in diesem Blog, am besten einfach docker ins Suchfeld oben eingeben.

Docker DevOps Continuous Delivery

Docker im DevOps und Continuous Delivery Umfeld wird ein zunehmend wichtiger Bestandteil. Docker ist eine Virtualisierungslösung, die ohne Hypervisor auskommt, es wird Operating-system-level Virtualization mit Linux-Containern verwendet. Im Backend verlässt Docker sich ausschließlich auf LXC. Diese Container sind unabhängig voneinander, aber verwenden Teile des Linux-Kernels als Abstraktion gemeinsam. Dadurch ist die Effizienz wesentlich höher als bei anderen Virtualisierungslösungen.

Auf Operating-system-level Virtualization basierende Lösungen sind die bekanntesten Vertreter dieser Technik die Linux-Container. Dabei ist Docker weit verbreitet. Docker konkurriert mit dem auf App Container (appc) basierendem Rocket (rkt). Die Open Container Initiative (OCI) strebt eine Vereinheitlichung und gemeinsame Standards für Container-Formate und Container-Laufzeitumgebungen an.

Das Docker Prinzip

Nicht wie Hypervisoren zur Virtualisierung bietet Docker keine vollständige Virtualisierung von virtuellen Maschinen, vielmehr handelt es sich um Linux-Container (LXC oder Libcontainer, und chroot, Namespaces, Cgroups). Diese Container sind unabhängig voneinander, aber verwenden Teile des Linux-Kernels gemeinsam. Dadurch ist die Effizienz wesentlich höher als bei anderen Virtualisierungslösungen. Auf einer Hardware können wesentlich mehr Docker-Container betrieben werden als VMs.

Diagramm: Virtual Machines und Containers

Als Hypervisor basierte Lösung war Docker bis April 2016 auf Linux Host Systeme angewiesen. Auf Windows und Mac OS X konnte es nur mit einem zusätzlichen Linux-Layer installiert werden, beispielsweise über Docker Toolbox (beinhaltet Boot2Docker und Oracle VirtualBox). Ähnliches gilt für das Gast-Betriebssystem wo nur Linux möglich ist. Der Gast verwendet den Linux-Kernel des Host Systems.

Seit April 2016 gibt es Beta-Versionen von Docker for Mac and Docker for Windows, die als native Anwendungen laufen und ohne VirtualBox auskommen. Die Docker-Engine läuft unter einem Alpine-Linux auf einer virtuellen Maschine (Hyper-V bei Windows und xhyve in OS X).

Die Docker Machine

Die Boot2docker Machine unter Windows 10 wird als Virtuelle Linux Machine in VirtualBox ausgeführt. DevOps die beim deployen mit ESXi Hypervisoren arbeiten, benutzen oft die VMware Workstation, diese performanter ist als die VirtualBox, bevor die VMware Workstation aber genutzt werden kann, wird der Treiber von pecigonzalo benötigt, die Treiberdatei Docker Machine VMware Workstation Driver wird in das Programm Verzeichnis, Docker Toolbox kopiert.

  Docker Machine VMware Workstation Driver

Dieses Plugin für Docker Machine erstellt Docker-Hosts lokal auf einer VMware Workstation.

Abbildung: boot2docker shell


Docker – Up and Running: von Karl Matthias bei O’REILLY