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/