Docker

Monitoring fixen

Icinga dreht durch, weils nicht auf gemountete Docker-FS-Layer-Dinger zugreifen kann. Bei check_disk (bzw im wrapper) daher alles kategorisch ausschließen: -X aufs -X nsfs -X tmpfs. Zurzeit (02/18) steht im wrapper bereits -x tmpfs - es muss aber ein großes X hin, um alle von diesen Dingern da mitzunehmen.

Deployment

  • Projekt clonen
  • Basic Dockerfile:
FROM nginx
COPY dist/ /usr/share/nginx/html

- docker build . -t adtech-demo
- Basic docker-compose.yml:

version: "3.6"
services:
  adtech-demo:
    image: adtech-demo
    build:
      context: .
    networks:
      - web
    deploy:
      labels:
        traefik.frontend.rule: Host:adtech-demo.example.com
        traefik.docker.network: web
        traefik.basic.port: 80
        traefik.enable: 'true'

networks:
  web:
    external: true

  • docker stack deploy -c docker-compose.yml adtech-demo

iptables shizzle / eigene regeln hinzufuegen

fuer eigene iptables-rules, die vor den von docker selbst generiertden ausgefuehrt werden sollen, existiert die chain "DOCKER-USER". Dort kann man zB gut einschraenken, wenn der Server nur aus dem Office erreichbar sein soll.

Befehl ausführen in jedem Container

... in diesem Fall zum Beispiel ein Ping, weil in manchen Containern DNS nicht zu gehen scheint: for c in $(docker ps --format "{{.Names}}"); do echo "Pinging example.com from container $c"; docker exec -ti $c ping -c 1 example.com >> /dev/null || echo "Couldn't ping example.com from container $c" ; done

--format hat noch mehr Möglichkeiten:

The formatting option (--format) pretty-prints container output using a Go template.

Valid placeholders for the Go template are listed below:
Placeholder     Description
.ID     Container ID
.Image  Image ID
.Command    Quoted command
.CreatedAt  Time when the container was created.
.RunningFor     Elapsed time since the container was started.
.Ports  Exposed ports.
.Status     Container status.
.Size   Container disk size.
.Names  Container names.
.Labels     All labels assigned to the container.
.Label  Value of a specific label for this container. For example '{{.Label "com.docker.swarm.cpu"}}'
.Mounts     Names of the volumes mounted in this container.
.Networks   Names of the networks attached to this container.

To list all running containers with their labels in a table format you can use:
docker ps --format "table {{.ID}}\t{{.Labels}}

Schnell verbinden mit Container mit Namen

dc() { CID=$(docker ps --format "{{.ID}}" --filter "status=running" --filter "name=datatracker_app_1"); docker exec -ti $CID /bin/bash; }
dc

Volume backuppen

Temporären COntainer starten, Volume anhängen, Backupverzeichnis mounten, Backupbefehl ausführen. ```

ersma checken was da geht

docker run --rm -v datatracker_database:/data-to-backup -v /backup:/backup debian ls -la /backup

dann machen

docker run --rm -v datatracker_database:/data-to-backup -v /backup:/backup debian tar -czvf /backup/datatracker-db-$(date +%Y%m%d).tar.gz /data-to-backup/