Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| — |
admin_grundlagen:docker:build [2026/01/25 13:46] (aktuell) ingo_wichmann angelegt |
||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== erstes Docker Image selbst bauen ====== | ||
| + | ===== Pakete ===== | ||
| + | * Rocky Linux (9): | ||
| + | * erst ''epel-release'' installieren (fügt neues Repository hinzu) | ||
| + | * debootstrap | ||
| + | * Debian (ab 12): debootstrap | ||
| + | |||
| + | ===== Image bauen ===== | ||
| + | (( anders als das Image aus https://hub.docker.com/_/debian ist dieses Image nicht reproduzierbar )) | ||
| + | sudo debootstrap --variant=minbase trixie ./debian http://debian/debian | ||
| + | sudo tar cC debian/ . | docker image import - ingo/debian:trixie | ||
| + | Tag ''latest'' hinzufügen: | ||
| + | docker image ls ingo/debian:trixie | ||
| + | -> id rauskopieren (z.B. ''dc9f1edde160'') | ||
| + | docker image tag dc9f1edde160 ingo/debian:latest | ||
| + | |||
| + | ==== testen ==== | ||
| + | docker container run ingo/debian echo hello world | ||
| + | |||
| + | ====== Dockerfile - Docker Images weiterbauen ====== | ||
| + | mkdir static_web | ||
| + | cd static_web | ||
| + | <file txt Dockerfile> | ||
| + | FROM ingo/debian:trixie | ||
| + | LABEL version="0.0.1" | ||
| + | LABEL maintainer="me@example.com" | ||
| + | ENV DEBIAN_FRONTEND noninteractive | ||
| + | ENV REFRESHED_AT 2026-01-07 | ||
| + | RUN set -eux; \ | ||
| + | apt-get -qq update; \ | ||
| + | apt-get install -y --no-install-recommends nginx | ||
| + | RUN find / -xdev -user root -type f -perm /u+s -exec chmod u-s {} + | ||
| + | RUN echo 'A warm welcome from your Dockerfile' > /var/www/html/index.html | ||
| + | EXPOSE 80 | ||
| + | ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"] | ||
| + | </file> | ||
| + | docker build -t='ingo/static_web:0.0.1' . | ||
| + | docker image ls | ||
| + | docker container run -d -p 80:80 --name my_static_web ingo/static_web | ||
| + | curl -s http://localhost:80 | ||
| + | |||
| + | ===== ENTRYPOINT / CMD / run-Command ===== | ||
| + | ^ ''ENTRYPOINT'' ^ ''CMD'' ^ run-Command ^ ausgeführt wird ^ | ||
| + | |<code>["script.sh"]</code>| | | <code>script.sh</code> | | ||
| + | |<code>["script.sh"]</code>| | <code>/bin/dash</code> | <code>script.sh /bin/dash</code> | | ||
| + | |<code>["script.sh"]</code>| <code>["httpd"]</code> | | <code>script.sh httpd</code> | | ||
| + | |<code>["script.sh"]</code>| <code>["httpd"]</code> | <code>/bin/dash</code> | <code>script.sh /bin/dash</code> | | ||
| + | | | <code>["/bin/sh"]</code> | | <code>/bin/sh</code> | | ||
| + | | | <code>["/bin/sh"]</code> | <code>/bin/dash</code> | <code>/bin/dash</code> | | ||
| + | | | | | <code>/bin/bash</code>((https://docs.docker.com/reference/dockerfile/#understand-how-cmd-and-entrypoint-interact sagt ''error, not allowed''. Docker Version 20.10.24+dfsg1 hat ''bash'' ausgeführt.)) | | ||
| + | |||
| + | |||
| + | |||