Docker
Hier eine Sammlung von Schnipseln zu Docker
Inhaltsverzeichnis
- 1 Hier eine Sammlung von Schnipseln zu Docker
- 1.1 Docker Compose File docker-compose.yaml für Redmine 3.4.4 mit MySQL 5.7
- 1.2 In den Container einloggen
- 1.3 Nicht laufende (!) Container löschen
- 1.4 Docker Container stoppen
- 1.5 Alle Container stoppen
- 1.6 Löschen aller gestoppten Container
- 1.7 Löschen aller Images
- 1.8 Debugging von Containern beim Start
- 2 Was machen, wenn ein build nicht funktioniert bzw. das Filesystem voll ist?
- 3 MySQL Container Backup & Restore
- 4 Dateien von dem Host in einem Dockercontainer kopieren
Wenn im Composefile oder in der Kommandozeile restart auf always gesetzt ist, so kann es bei einem falsch konfiguriertem Container passieren, dass dieser ständig neu startet.
Abhilfe kann über die Kommandozeile erfolgen. Man den Docker-Container zur Laufzeit umzukonfigurieren.
docker update --restart=no <Containername>
Docker Compose File docker-compose.yaml für Redmine 3.4.4 mit MySQL 5.7
version: '3.1'
services:
redmine:
image: redmine:3.4.4
restart: always
ports:
- 80:3000
environment:
REDMINE_DB_MYSQL: db
REDMINE_DB_PASSWORD: secret
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: redmine
MYSQL_ROOT_PASSWORD: secret
Am besten die docker-compose.yaml in einem eigenem Projekt-Verzeichnis (/root/docker/<verzeichnisname>) mit dem Namen des Projektes/Containers lagern (redmine, portainer, etc). Starten der Container in docker-compose.yaml
# docker-compose up -d
In den Container einloggen
# docker exec -it <Conteinername> bash
Nicht laufende (!) Container löschen
# docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06ed82021132 portainer/portainer "/portainer -H unix:…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->9000/tcp portainer_portainer_1 b0846ff12ea7 redmine:3.4.4 "/docker-entrypoint.…" About an hour ago Exited (1) About an hour ago redmine_redmine_1 25ab1184035e mysql:5.7 "docker-entrypoint.s…" About an hour ago Exited (0) About an hour ago redmine_db_1 # docker container rm b0846ff12ea7 25ab1184035e b0846ff12ea7 25ab1184035e # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06ed82021132 portainer/portainer "/portainer -H unix:…" 5 minutes ago Up 5 minutes 0.0.0.0:8080->9000/tcp portainer_portainer_1
Docker Container stoppen
# docker stop <Containername> # docker container stop <Containername>
Alle Container stoppen
# docker stop $(docker ps -a -q)
Löschen aller gestoppten Container
# docker rm $(docker ps -a -q)
Löschen aller Images
# docker rmi $(docker images -q)
Debugging von Containern beim Start
# docker start -a <Containername>
Was machen, wenn ein build nicht funktioniert bzw. das Filesystem voll ist?
Frage: how to clean up docker overlay directory?
https://stackoverflow.com/questions/31712266/how-to-clean-up-docker-overlay-directory
how to clean up docker overlay directory?
I'm running docker via CoreOS and AWS's ECS. I had a failing image that got restarted many times, and the containers are still around- they filled my drive partition. Specifically, /var/lib/docker/overlay/ contains a large number of files/directories.
I know that docker-cleanup-volumes is a thing, but it cleans the /volumes directory, not the /overlay directory.
docker ps -a shows over 250 start attempts on my bad docker container. They aren't running, though.
Aside from rm -rf /var/lib/docker/overlay/*, how can I/should I clean this up?
Antwort
From our side we used:
sudo docker system prune -a -f
Which saved me 3Go!
We also used the famous commands:
sudo docker rm -v $(sudo docker ps -a -q -f status=exited) sudo docker rmi -f $(sudo docker images -f "dangling=true" -q) docker volume ls -qf dangling=true | xargs -r docker volume rm
We put that on cron to manage a little bit more efficently our disk space.
Reference: https://forums.docker.com/t/some-way-to-clean-up-identify-contents-of-var-lib-docker-overlay/30604/4
MySQL Container Backup & Restore
Backup
# docker exec <Containername> /usr/bin/mysqldump -u root --password=<rootpasswort> <Datenbank> > <backup.sql>
Restore
# cat <backup.sql> | docker exec -i <Containername> /usr/bin/mysql -u root --password=<rootpasswort> <Datenbank>
Dateien von dem Host in einem Dockercontainer kopieren
Einzelne Dateien kopieren
# docker cp foo.txt <Containername>:/foo.txt # docker cp <Containername>:/foo.txt foo.txt
Mehrere Dateien kopieren
# docker cp src/. <Containername>:/target # docker cp <Containername>:/src/. target