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.

Besser ist ein Standard-Linux (etwa Ubuntu) zu verwenden und Docker darauf zu installieren:

{{{
curl https://get.docker.com | bash
}}}

!!!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

!!!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/]