Docker

Aus
Wechseln zu: Navigation, Suche

Hier eine Sammlung von Schnipseln zu Docker

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