Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
docker [21/09/2024 - 10:07] – [Begrifflichkeiten] thommie4 | docker [11/03/2025 - 21:25] (aktuell) – freifunk_netzwissen.de | ||
---|---|---|---|
Zeile 11: | Zeile 11: | ||
Docker Daten-Ablage auf btrfs Partition verlagern | Docker Daten-Ablage auf btrfs Partition verlagern | ||
+ | root@docker3:/ | ||
< | < | ||
- | |||
- | root@docker3:/ | ||
- | |||
{ | { | ||
" | " | ||
" | " | ||
} | } | ||
+ | </ | ||
+ | |||
+ | ===== Docker Build ===== | ||
+ | |||
+ | https:// | ||
+ | |||
+ | Der Build geht immer von einem Dockerfile aus: https:// | ||
+ | |||
+ | < | ||
+ | # Use official Alpine release | ||
+ | FROM alpine: | ||
+ | |||
+ | # Maintainer | ||
+ | LABEL maintainer=" | ||
+ | LABEL version=" | ||
+ | LABEL description=" | ||
+ | |||
+ | ENV RADSECVERSION 1.11.0 | ||
+ | ENV RADSECURL https:// | ||
+ | ENV RADSECFILENAME radsecproxy-${RADSECVERSION}.tar.gz | ||
+ | |||
+ | # Change working dir | ||
+ | WORKDIR /root | ||
+ | |||
+ | # Update apk | ||
+ | RUN apk update | ||
+ | |||
+ | # Install buildtools | ||
+ | RUN apk add --no-cache make g++ openssl-dev nettle-dev musl-dev | ||
+ | |||
+ | # Create output dir | ||
+ | RUN mkdir output | ||
+ | |||
+ | # Download radsecproxy source files | ||
+ | RUN wget ${RADSECURL}${RADSECFILENAME} | ||
+ | |||
+ | # Untar radsecproxy | ||
+ | RUN tar xf ${RADSECFILENAME} --strip-components=1 | ||
+ | |||
+ | # Configure | ||
+ | RUN ./configure --prefix=/ | ||
+ | |||
+ | # Make and install to output dir | ||
+ | RUN make && make install | ||
+ | |||
+ | # Create radsecproxy container | ||
+ | FROM alpine: | ||
+ | |||
+ | # Update apk | ||
+ | RUN apk update | ||
+ | |||
+ | # Install openssl, ca-certificates, | ||
+ | RUN apk add --no-cache openssl ca-certificates bash nettle tini | ||
+ | |||
+ | # Copy from ' | ||
+ | COPY --from=build / | ||
+ | # COPY --from=build / | ||
+ | |||
+ | # create config directory and add certs | ||
+ | RUN mkdir / | ||
+ | COPY radsecproxy/ | ||
+ | COPY certs/ | ||
+ | |||
+ | # Copy start.sh | ||
+ | COPY start.sh / | ||
+ | |||
+ | # Make start.sh executeable | ||
+ | RUN chmod u+x / | ||
+ | |||
+ | # Create Radsecproxy logging | ||
+ | RUN mkdir / | ||
+ | |||
+ | # Export volumes | ||
+ | VOLUME / | ||
+ | |||
+ | # Make Radsecproxy' | ||
+ | EXPOSE 2083 | ||
+ | |||
+ | # Set Tini entrypoint | ||
+ | # https:// | ||
+ | ENTRYPOINT ["/ | ||
+ | |||
+ | # Start Radsecproxy | ||
+ | CMD ["/ | ||
+ | </ | ||
+ | |||
+ | Dockerfle Syntax check | ||
+ | |||
+ | < | ||
+ | docker build --check . | ||
+ | </ | ||
+ | |||
+ | Der Build wird normalerweise gecacht, das kann man abschalten: | ||
+ | |||
+ | < | ||
+ | docker --no-cache build . | ||
+ | </ | ||
+ | |||
+ | Docker build ohne cache, aber mit tag: | ||
+ | |||
+ | < | ||
+ | docker build --no-cache -t thommie/ | ||
+ | </ | ||
+ | |||
+ | Danach kann man das image in einen Registry schieben, z.B. die Docker Registry. | ||
+ | |||
+ | < | ||
+ | docker login | ||
+ | </ | ||
+ | |||
+ | Neu mit Versionsnummer taggen | ||
+ | |||
+ | < | ||
+ | docker tag thommie/ | ||
+ | </ | ||
+ | |||
+ | Und dann hochladen: | ||
+ | |||
+ | < | ||
+ | thommie@odysseus4: | ||
+ | fef40b964b90: | ||
+ | a0cb24bdb2c8: | ||
+ | a105c78eaead: | ||
+ | b10598bffc84: | ||
+ | 5e1cdb76f1d7: | ||
+ | c903625bb716: | ||
+ | 8b191fa4fbcc: | ||
+ | 4b606c4525db: | ||
+ | 7e4e46af816c: | ||
+ | b895814e9e64: | ||
+ | v1: digest: sha256: | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | thommie@odysseus3: | ||
+ | Sending build context to Docker daemon | ||
+ | Step 1/3 : FROM freeradius/ | ||
+ | | ||
+ | Step 2/3 : COPY raddb/ /etc/raddb/ | ||
+ | | ||
+ | Step 3/3 : EXPOSE 1812-1813/ | ||
+ | | ||
+ | Removing intermediate container 6d5f572b0a8b | ||
+ | | ||
+ | Successfully built c6c0d41f944a | ||
</ | </ | ||
Zeile 75: | Zeile 218: | ||
</ | </ | ||
- | === Container aus heruntergeladenem Image erzeugen === | + | ==== Container aus heruntergeladenem Image erzeugen ==== |
'' | '' | ||
+ | |||
+ | |||
Alle laufenden und gestoppten Container zeigen: | Alle laufenden und gestoppten Container zeigen: | ||
Zeile 156: | Zeile 300: | ||
Achtung: wieder raus mit **CTRL-p CTRL-q. **Details siehe [[https:// | Achtung: wieder raus mit **CTRL-p CTRL-q. **Details siehe [[https:// | ||
- | |||
- | ===== Docker Build ===== | ||
- | |||
- | |||
- | https:// | ||
- | |||
- | Geht immer von einem Dockerfile aus: https:// | ||
- | |||
- | < | ||
- | # Use official Alpine release | ||
- | FROM alpine: | ||
- | |||
- | # Maintainer | ||
- | LABEL maintainer=" | ||
- | LABEL version=" | ||
- | LABEL description=" | ||
- | |||
- | ENV RADSECVERSION 1.11.0 | ||
- | ENV RADSECURL https:// | ||
- | ENV RADSECFILENAME radsecproxy-${RADSECVERSION}.tar.gz | ||
- | |||
- | # Change working dir | ||
- | WORKDIR /root | ||
- | |||
- | # Update apk | ||
- | RUN apk update | ||
- | |||
- | # Install buildtools | ||
- | RUN apk add --no-cache make g++ openssl-dev nettle-dev musl-dev | ||
- | |||
- | # Create output dir | ||
- | RUN mkdir output | ||
- | |||
- | # Download radsecproxy source files | ||
- | RUN wget ${RADSECURL}${RADSECFILENAME} | ||
- | |||
- | # Untar radsecproxy | ||
- | RUN tar xf ${RADSECFILENAME} --strip-components=1 | ||
- | |||
- | # Configure | ||
- | RUN ./configure --prefix=/ | ||
- | |||
- | # Make and install to output dir | ||
- | RUN make && make install | ||
- | |||
- | # Create radsecproxy container | ||
- | FROM alpine: | ||
- | |||
- | # Update apk | ||
- | RUN apk update | ||
- | |||
- | # Install openssl, ca-certificates, | ||
- | RUN apk add --no-cache openssl ca-certificates bash nettle tini | ||
- | |||
- | # Copy from ' | ||
- | COPY --from=build / | ||
- | # COPY --from=build / | ||
- | |||
- | # create config directory and add certs | ||
- | RUN mkdir / | ||
- | COPY radsecproxy/ | ||
- | COPY certs/ | ||
- | |||
- | # Copy start.sh | ||
- | COPY start.sh / | ||
- | |||
- | # Make start.sh executeable | ||
- | RUN chmod u+x / | ||
- | |||
- | # Create Radsecproxy logging | ||
- | RUN mkdir / | ||
- | |||
- | # Export volumes | ||
- | VOLUME / | ||
- | |||
- | # Make Radsecproxy' | ||
- | EXPOSE 2083 | ||
- | |||
- | # Set Tini entrypoint | ||
- | # https:// | ||
- | ENTRYPOINT ["/ | ||
- | |||
- | # Start Radsecproxy | ||
- | CMD ["/ | ||
- | |||
- | </ | ||
- | |||
- | Der Build wird normalerweise gecacht, das kann man abschalten: | ||
- | |||
- | < | ||
- | docker build . | ||
- | </ | ||
- | |||
- | Dockerfle Syntax check | ||
- | |||
- | < | ||
- | docker build --check . | ||
- | </ | ||
- | |||
- | Docker build mit tag: | ||
- | |||
- | < | ||
- | docker build . -t yourusername/ | ||
- | </ | ||
- | < | ||
- | thommie@odysseus3: | ||
- | Sending build context to Docker daemon | ||
- | Step 1/3 : FROM freeradius/ | ||
- | | ||
- | Step 2/3 : COPY raddb/ /etc/raddb/ | ||
- | | ||
- | Step 3/3 : EXPOSE 1812-1813/ | ||
- | | ||
- | Removing intermediate container 6d5f572b0a8b | ||
- | | ||
- | Successfully built c6c0d41f944a | ||
- | |||
- | </ | ||
===== Docker Compose ===== | ===== Docker Compose ===== | ||
Zeile 287: | Zeile 313: | ||
< | < | ||
- | ===== compose yaml validieren | + | compose yaml validieren |
< | < | ||
Zeile 294: | Zeile 321: | ||
</ | </ | ||
- | ====== Update per docker compose | + | ==== Update per docker compose ==== |
Update der Images, die im compose file referenziert sind | Update der Images, die im compose file referenziert sind | ||
Zeile 300: | Zeile 327: | ||
< | < | ||
docker compose -f docker-compose-pro.yaml pull | docker compose -f docker-compose-pro.yaml pull | ||
- | |||
</ | </ | ||
- | Daraus die Container neu bauen und startenb | + | Daraus die Container neu bauen und starten |
< | < | ||
Zeile 309: | Zeile 335: | ||
</ | </ | ||
+ | |||
+ | Bauen **ohne** caching und dann starten | ||
< | < | ||
- | docker compose -f docker-compose-pro.yaml up --force-recreate --build | + | docker compose -f docker-compose-pro.yaml up --force-recreate --build |
</ | </ | ||
- | Docker Compose startet | + | Docker Compose startet Container nicht daemonisiert. |
< | < | ||
- | docker compose up -d | + | docker compose up --force-recreate --build |
</ | </ | ||
- | Üblicherweise | + | Um Container als Daemon zu starten, |
===== Docker Netzwerke ===== | ===== Docker Netzwerke ===== | ||
- | Standardmässig werden drei Netze bridge, host, none angelegt. Alle anderen sind custom Networks, die z.B: über compose angelegt wurden: | + | Standardmässig werden drei Netze bridge, host, none angelegt. Alle anderen sind custom Networks, die z.B. über compose angelegt wurden: |
< | < | ||
Zeile 342: | Zeile 368: | ||
Container werden an die bridge " | Container werden an die bridge " | ||
+ | Dies zeigt den Zustand eines Docker networks | ||
< | < | ||
docker network inspect bridge | docker network inspect bridge | ||
- | |||
</ | </ | ||
- | sieht man den Zustand eines Docker networks | + | ==== Docker |
- | + | ||
- | ==== Custom networks ==== | + | |
docker network create erzeugt ein eigenes Netzwerk: | docker network create erzeugt ein eigenes Netzwerk: | ||
Zeile 355: | Zeile 379: | ||
< | < | ||
docker network create –subnet 192.168.82.0/ | docker network create –subnet 192.168.82.0/ | ||
- | |||
</ | </ | ||
+ | Danach anschauen | ||
< | < | ||
locutus:/ | locutus:/ | ||
- | |||
</ | </ | ||
Zeile 367: | Zeile 390: | ||
< | < | ||
docker attach container1 | docker attach container1 | ||
- | |||
</ | </ | ||
- | sieht man das Netzwerk | + | sieht man das Netzwerk |
===== Docker logs ===== | ===== Docker logs ===== | ||
Zeile 383: | Zeile 405: | ||
===== Docker volumes ===== | ===== Docker volumes ===== | ||
- | Volumes sind Verzeichnisse/ | + | Volumes sind Verzeichnisse/ |
Doku: [[https:// | Doku: [[https:// | ||
In compose: | In compose: | ||
+ | |||
< | < | ||
- | |||
services: | services: | ||
frontend: | frontend: | ||
Zeile 398: | Zeile 420: | ||
myapp: | myapp: | ||
external: true | external: true | ||
- | |||
</ | </ | ||
- | Syntax: **[lokales volume Verzeichnis Host]: | + | Allgemeine |
- | Immer relativ zum compose file gesehen! | + | Verzeichnisorte werden immer relativ zum Ort des compose file gesehen! |
- | + | ====== Portainer | |
- | + | ||
- | + | ||
- | ===== Portainer ===== | + | |
< | < | ||
docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v / | docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v / | ||
- | |||
</ | </ | ||