Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# 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
# Festlegen, welches Kommando beim Starten des Servers ausgeführt werden soll.
# docker run ....
`docker build -t miniserver.v1 .`
### e)
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
`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
```