Docker ist aktuell die führende Virtualisierung für Micro-Services. !!!Windows Inzwischen gibt es eine native [Docker-Installation für Windows|https://docs.docker.com/engine/getstarted/step_one/]. Einfach das Paket installieren und dann testen: {{{ docker run hello-world }}} !!Prozesse "docker ps" listet die laufenden Prozesse, "docker ps -a" listet die auf der Maschine befindlichen Images. !!!Virtualbox Unter Windows läuft Docker momentan mit einem Image boot2docker.iso, welches mit "Docker Toolbox" geliefert wird. Die Installation erfolgt üblicherweise in C:\Program Files\Docker Toolbox, das sollte sich im System-Path befinden. Die Maschine wird gelöscht und angelegt mit: {{{ $ docker-machine rm default $ docker-machine create --driver virtualbox default }}} __Hinweis:__ "default" ist der Standardname der Docker-Maschine. !!Environment Die Docker-Maschine kann dann unter Windows abgefragt werden mit: {{{ docker-machine env }}} !!SSH Verbindung Mit dem Command docker-machine kann man sich auch verbinden: {{{ docker-machine ssh default }}} !!!Images Standard-Images werden vom Docker-Hub über das Internet heruntergeladen. Da sind einfache Linuxe mit Java, Tomcat, MySQL etc. verfügbar. !!!Netwerk Netzwerk konfigurieren {{{ ifconfig eth0 192.168.3.1 netmask 255.255.0.0 broadcast 192.168.255.255 up }}} !!!Deployen Die eigene Anwendung wird mit dem Docker-Command deployed oder über das Maven-Plugin com.spotify:docker-maven-plugin. !!Maven Das Plugin arbeitet mit einem Spring-Boot JAR wie folgt: {{{ <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>${project.artifactId}</imageName> <dockerHost>https://192.168.99.101:2376</dockerHost> <dockerCertPath>${env.USER_HOME}\.docker\machine\machines\default</dockerCertPath> <baseImage>java:8-jdk</baseImage> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <exposes> <expose>80</expose> </exposes> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> }}} !!!Docker Console Innerhalb der Docker-VM oder einer anderen Docker-Installation stellt das Command "docker" die Verbindung zum Docker-System her. Mit "docker ps" kann man die laufenden Container auflisten lassen. !!!Docker Maschine Customizing findet statt durch /etc/docker/docker.json innerhalb der virtuellen Docker-Maschine. ||Key||Value||Bedeutung |bip|192.168.1.5/24|Netzwerk range |fixed-cidr|192.168.1.20|IP-Adresse der eigenen Maschine !!!Docker auf Linux Die fertigen Images bringen erhebliche Einschränkungen mit sich. Daher ist es besser, Docker direkt auf einem Linux zu installieren. !!Installation Besser ist ein Standard-Linux (etwa Ubuntu) zu verwenden und Docker darauf zu installieren: {{{ curl https://get.docker.com | bash }}} !!Port Öffnen Leider klappt die Konfiguration per sogenannten Drop-In über /etc/systemd/system/docker.service.d nicht. Einzige Lösung scheint das direkte Editieren des Startup-Script in /lib/systemd/system/docker.service zu sein: {{{ nano /lib/systemd/system/docker.service }}} Der Daemon dockerd hat viele Parameter ([Docker Daemon Parameters|https://docs.docker.com/engine/reference/commandline/dockerd/]), unter anderem das Port-Binding mit -H. Neben dem Parameter -H fd:// (wohl für das docker command selbst) kann man -H tcp://0.0.0.0:2375 hinzufügen (ohne SSH) oder tcp://0.0.0.0:2376 (mit SSH). Dann sind folgende Befehle auszuführen: {{{ systemctl daemon-reload systemctl restart docker.service }}} Mit systemctl stop docker.service und systemctl start docker.service kann der Service nur gestoppt oder gestartet werden. !!Docker Toolbox Unter Windows kann man sich mit der Linux-Variante verbinden, etwa: {{{ set DOCKER_HOST=tcp://192.168.1.99:2375 }}} Damit kann man ganz normal das docker command (docker ps etc. [Docker Toolbox|https://docs.docker.com/toolbox/toolbox_install_windows/]) nutzen. !!!Links * __Download:__ [http://docs.master.dockerproject.org/engine/installation/binaries/] * [https://docs.docker.com/machine/drivers/hyper-v] * [https://docs.docker.com/v17.09/engine/userguide/networking/default_network/custom-docker0/] * [https://docs.docker.com/engine/reference/commandline/dockerd/]