# Praktikum 2 ## Aufgabe 1 ### a) ``` Client: Docker Engine - Community Version: 20.10.14 API version: 1.41 Go version: go1.16.15 Git commit: a224086 Built: Thu Mar 24 01:48:02 2022 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.14 API version: 1.41 (minimum version 1.12) Go version: go1.16.15 Git commit: 87a90dc Built: Thu Mar 24 01:45:53 2022 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.5.11 GitCommit: 3df54a852345ae127d1fa3092b95168e4a88e2f8 runc: Version: 1.0.3 GitCommit: v1.0.3-0-gf46b6ba docker-init: Version: 0.19.0 GitCommit: de40ad0 ``` ### b) ``` docker-compose version 1.29.2, build 5becea4c docker-py version: 5.0.0 CPython version: 3.7.10 OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019 ``` ## Aufgabe 2 - Primitiver Webserver ### b) Das `Golang` Programm kann mit `go run main.go` ausgeführt werden. ### c) ```Dockerfile # Basis Image von Dockerhub FROM golang:1.18 # Wechsel in das Directory /usr/app # Wird der Container mittels docker-compose exec ... betreten, # befindet sich der Nutzer standardmäßig im /usr/app Ordner WORKDIR /usr/app # Copiere alle Dateien aus dem DIESEM (relativ) Ordner in /usr/app COPY . . # Bauen des Programms RUN go build -o miniserver # Festlegen, welches Kommando beim Starten des Servers ausgeführt werden soll. # docker run .... CMD ["./miniserver"] ``` ### d) `docker build -t miniserver.v1 .` ### e) `docker run -p 20221:3000 miniserver.v1` ## Aufgabe 3 ### c) ```Dockerfile # Basis Image von Dockerhub FROM golang:1.18 # Wechsel in das Directory /usr/app # Wird der Container mittels docker-compose exec ... betreten, # befindet sich der Nutzer standardmäßig im /usr/app Ordner WORKDIR /usr/app # Copiere alle Dateien aus dem DIESEM (relativ) Ordner in /usr/app COPY . . # Bauen des Programms RUN go build -o miniwhoami # Festlegen, welches Kommando beim Starten des Servers ausgeführt werden soll. # docker run .... CMD ["./miniwhoami"] ``` `docker build -t miniwhoami.v1 .` ### d) `docker run --name miniwhoami_1 -p 20231:3000 miniwhoami.v1 & docker run --name miniwhoami_2 -p 20232:3000 miniwhoami.v1` ## Aufgabe 4 ### a) `docker exec -i --tty <CONTAINER ID> bash` Ausgeführt werden konnte nur das `curl` Kommando. ### b) `docker run -it --net container:miniwhoami_1 nicolaka/netshoot` Es konnten alle Kommandos ausgeführt werden. Der netshoot container teilt sich nun ein Netzwerkinterface mit dem miniwhoami_1 Container. ### c) Es konnte über die lokale IP-Adresse auf den miniwhoami_2 Container zugegriffen werden. Beide Container befinden sich im selben Netzwerk. ### d) Beide Container befinden sich im selben Docker-Netzwerk. ### e) Ja, es konnte auf `heise.de` zugegriffen werden. Der Container hat Zugriff auf das Internet. ### f) ``` default via 172.17.0.1 dev eth0 # eth0 ist das Netzwerkinterface des Containers. Die 172.17.0.1 Adresse, ist die Adresse des Gateways. 172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.3 ```