alfred@monitoring:~/GetInfo$ go build GetInfo.go
go: downloading github.com/shirou/gopsutil v3.21.9+incompatible
go: extracting github.com/shirou/gopsutil v3.21.9+incompatible
go: downloading golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac
go: extracting golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac
go: finding github.com/shirou/gopsutil v3.21.9+incompatible
go: finding golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac
alfred@monitoring:~/GetInfo$ ll
total 7716
drwxrwxr-x 2 alfred alfred 4096 Oct 15 20:30 ./
drwxr-xr-x 22 alfred alfred 4096 Oct 11 07:30 ../
-rwxrwxr-x 1 alfred alfred 8009715 Oct 15 20:30 GetInfo*
-rw------- 1 alfred alfred 4473 Oct 10 21:34 GetInfo.go
-rw------- 1 alfred alfred 81 Oct 10 21:48 dockerfile
-rw------- 1 alfred alfred 1434 Oct 10 21:19 error.html
-rw-rw-r-- 1 alfred alfred 0 Oct 11 07:28 getinfo.tar
-rw------- 1 alfred alfred 263 Oct 10 10:04 go.mod
-rw------- 1 alfred alfred 1314 Oct 10 10:04 go.sum
-rw------- 1 alfred alfred 3180 Oct 10 21:32 hello.html
alfred@monitoring:~/GetInfo$ ./GetInfo
Ein kurzer Test auf http://monitoring:8080/view/helloergibt
Abbildung 20: GetInfo Ausgabe
Das heist das Programm funktioniert. Die Logausgabe sieht aus wie folgt:
alfred@monitoring:~/GetInfo$ ./GetInfo
2021/10/10 21:42:01 Main Started
2021/10/10 21:42:16 hello.html
^C
alfred@monitoring:~/GetInfo$
Jetzt brauchen wir noch ein Docker-File
alfred@monitoring:~/GetInfo$ cat dockerfile
# syntax=docker/dockerfile:1
# Alpine is chosen for its small footprint
# compared to Ubuntu
FROM golang:1.16-alpine
WORKDIR /app
# Download necessary Go modules
COPY go.mod ./
COPY go.sum ./
RUN go mod download
COPY *.go ./
COPY hello.html ./
COPY error.html ./
RUN go build -o /GetInfo
EXPOSE 8080
CMD [ "/GetInfo" ]
alfred@monitoring:~/GetInfo$
um den Container zu bauen.
alfred@monitoring:~/GetInfo$ docker build . -t docker.registry:5000/getinfo:20211015
Sending build context to Docker daemon 16.38kB
Step 1/11 : FROM golang:1.16-alpine
1.16-alpine: Pulling from library/golang
552d1f2373af: Pull complete
eb74239f2a0c: Pull complete
2a8ec004bf6b: Pull complete
12f1fa1a3b20: Pull complete
5c12166b7f9d: Pull complete
Digest: sha256:05df7ff684a2cb06aa207be14a78918cbc3285ed3b965974979e575d59de1c11
Status: Downloaded newer image for golang:1.16-alpine
---> d2f4346f5656
Step 2/11 : WORKDIR /app
---> Running in 9b6c3b098321
Removing intermediate container 9b6c3b098321
---> 738bd59f63db
Step 3/11 : COPY go.mod ./
---> cb6306d5fdf2
Step 4/11 : COPY go.sum ./
---> f7eeef9ebda2
Step 5/11 : RUN go mod download
---> Running in efbe89b22883
Removing intermediate container efbe89b22883
---> cb738e90d4d7
Step 6/11 : COPY *.go ./
---> c5ab2f4e9e5c
Step 7/11 : COPY hello.html ./
---> 8e6738e25799
Step 8/11 : COPY error.html ./
---> 5c9506b2dc3f
Step 9/11 : RUN go build -o /GetInfo.go
---> Running in 3ad675aeb626
Removing intermediate container 3ad675aeb626
---> 0abfe5a9d849
Step 10/11 : EXPOSE 8080
---> Running in 80f728420378
Removing intermediate container 80f728420378
---> b9c5a76c55d2
Step 11/11 : CMD [ "/GetInfo" ]
---> Running in 71d6f27934d2
Removing intermediate container 71d6f27934d2
---> 4fae231152c2
Successfully built 4fae231152c2
Successfully tagged docker.registry:5000/getinfo:20211015
alfred@monitoring:~/GetInfo$
alfred@monitoring:~/GetInfo$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.registry:5000/getinfo 20211015 4fae231152c2 39 seconds ago 317MB
golang 1.16-alpine d2f4346f5656 2 days ago 296MB
alfred@monitoring:~/GetInfo$
Nun starten wir den Container im Vordergrund um den Output zu testen.
alfred@monitoring:~/GetInfo$ docker run --publish 8080:8080 docker.registry:5000/getinfo:20211015
2021/10/15 19:22:13 Main Started
2021/10/15 19:22:40 hello.html
Der Output im Browser ist wie folgt:
Abbildung 21: Docker Test Output
Der Container ist am erwarteten Port erreichbar. Die Anzeige der Werte sind jetzt aus Sicht des Containers, wie man an den Variablen und am Environment sehen kann.
Wir überprüfen die Struktur des gebauten docker-files.
alfred@monitoring:~/GetInfo$ docker save docker.registry:5000/getinfo:20211015 > getinfo.tar
alfred@monitoring:~/GetInfo$ tar -tvf getinfo.tar
-rw-r--r-- 0/0 7059 2021-10-15 21:22 0fca605bf404203fe0e1d41e306687bf70b8cdb4392c41363af0f6712ae28959.json
drwxr-xr-x 0/0 0 2021-10-15 21:22 11ada22ca4865de4368da5b2cdea81c34f3fc62b60e62f00329f839e1e51a431/
-rw-r--r-- 0/0 3 2021-10-15 21:22 11ada22ca4865de4368da5b2cdea81c34f3fc62b60e62f00329f839e1e51a431/VERSION
-rw-r--r-- 0/0 406 2021-10-15 21:22 11ada22ca4865de4368da5b2cdea81c34f3fc62b60e62f00329f839e1e51a431/json
-rw-r--r-- 0/0 5605376 2021-10-15 21:22 11ada22ca4865de4368da5b2cdea81c34f3fc62b60e62f00329f839e1e51a431/layer.tar
drwxr-xr-x 0/0 0 2021-10-15 21:22 1a41da37655e1ae130db0ff268801f26989f408ad4e24fee81b18252883fe835/
-rw-r--r-- 0/0 3 2021-10-15 21:22 1a41da37655e1ae130db0ff268801f26989f408ad4e24fee81b18252883fe835/VERSION
-rw-r--r-- 0/0 482 2021-10-15 21:22 1a41da37655e1ae130db0ff268801f26989f408ad4e24fee81b18252883fe835/json
-rw-r--r-- 0/0 2560 2021-10-15 21:22 1a41da37655e1ae130db0ff268801f26989f408ad4e24fee81b18252883fe835/layer.tar
drwxr-xr-x 0/0 0 2021-10-15 21:22 278bc14dbdd9bd52e524b98375e76f5b0f975f02167b6a7e8168184e577a8d17/
-rw-r--r-- 0/0 3 2021-10-15 21:22 278bc14dbdd9bd52e524b98375e76f5b0f975f02167b6a7e8168184e577a8d17/VERSION
-rw-r--r-- 0/0 482 2021-10-15 21:22 278bc14dbdd9bd52e524b98375e76f5b0f975f02167b6a7e8168184e577a8d17/json
-rw-r--r-- 0/0 5632 2021-10-15 21:22 278bc14dbdd9bd52e524b98375e76f5b0f975f02167b6a7e8168184e577a8d17/layer.tar
drwxr-xr-x 0/0 0 2021-10-15 21:22 37df72a20bd40f12a164a419626ffb20b4554c96983ec36b78024136e65f15c2/
-rw-r--r-- 0/0 3 2021-10-15 21:22 37df72a20bd40f12a164a419626ffb20b4554c96983ec36b78024136e65f15c2/VERSION
-rw-r--r-- 0/0 482 2021-10-15 21:22 37df72a20bd40f12a164a419626ffb20b4554c96983ec36b78024136e65f15c2/json
-rw-r--r-- 0/0 2560 2021-10-15 21:22 37df72a20bd40f12a164a419626ffb20b4554c96983ec36b78024136e65f15c2/layer.tar
drwxr-xr-x 0/0 0 2021-10-15 21:22 55a816cb614fc0754c9af49269934861de9251688789bc4a3e9f304ac1059e10/
-rw-r--r-- 0/0 3 2021-10-15 21:22 55a816cb614fc0754c9af49269934861de9251688789bc4a3e9f304ac1059e10/VERSION
-rw-r--r-- 0/0 482 2021-10-15 21:22 55a816cb614fc0754c9af49269934861de9251688789bc4a3e9f304ac1059e10/json
-rw-r--r-- 0/0 3584 2021-10-15 21:22 55a816cb614fc0754c9af49269934861de9251688789bc4a3e9f304ac1059e10/layer.tar
drwxr-xr-x 0/0 0 2021-10-15 21:22 5fe6d80a697427a6b315445103e12f8e5e14a6f9f071e119d9da5aa7787dedf0/
-rw-r--r-- 0/0 3 2021-10-15 21:22 5fe6d80a697427a6b315445103e12f8e5e14a6f9f071e119d9da5aa7787dedf0/VERSION
-rw-r--r-- 0/0 1432 2021-10-15 21:22 5fe6d80a697427a6b315445103e12f8e5e14a6f9f071e119d9da5aa7787dedf0/json
-rw-r--r-- 0/0 10244608 2021-10-15 21:22 5fe6d80a697427a6b315445103e12f8e5e14a6f9f071e119d9da5aa7787dedf0/layer.tar
Читать дальше