[LINUX] Löschen Sie unnötige Docker-Container sofort

Vor kurzem habe ich verschiedene Dinge studiert, indem ich Docker auf EC2 (Amazon Linux2) von AWS ~~ gespielt ~~ gesetzt habe. Erstellen Sie einen Centos-Container → Weiter → Fertig stellen, erstellen Sie einen MySQL-Container → Weiter → Fertig stellen usw. und überprüfen Sie gelegentlich den Betriebsstatus des Containers mit dem Befehl docker ps, jedoch an einem Punkt Docker Als ich ps -a ** lief Was zur Hölle! !! **ist geworden. Dann: "Hassen Sie Docker nicht, auch wenn der Docker-Container vorbei ist!" ◯ Ich bin nicht sicher, ob Herr Atsuko Ta sagte, aber zumindest habe ich erfahren, dass ** der Docker-Container vorbei ist, aber der Docker-Container bleibt **.

Die nutzlose Einführung ist lang geworden, aber um den in diesem Pool angesammelten Müll-Docker-Container zu löschen Ein Memorandum of Command.

Löschen unnötiger Container mit awk

Vor dem Löschen angeben

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                    PORTS                    NAMES
9ec50bb2ac79        mysql               "docker-entrypoint.s…"   4 days ago          Up 2 days                 3306/tcp, 33060/tcp      MYSQL
20cabc9db638        centos              "/bin/bash"              4 days ago          Up 2 days                 0.0.0.0:9989->8080/tcp   centos_container
149e47fc7182        mysql               "docker-entrypoint.s…"   4 days ago          Exited (0) 4 days ago                              silly_haibt
6d0b42666db1        mysql               "docker-entrypoint.s…"   4 days ago          Exited (0) 4 days ago                              stoic_panini
cc75432e283b        mysql               "docker-entrypoint.s…"   4 days ago          Exited (127) 4 days ago                            serene_merkle
e75ea014088a        mysql               "docker-entrypoint.s…"   4 days ago          Exited (0) 4 days ago                              laughing_allen
7f6d0144717d        centos              "/bin/bash"              4 days ago          Exited (0) 4 days ago                              zealous_haibt
b78d2f0c9b93        centos              "/bin/bash"              4 days ago          Exited (0) 4 days ago                              centos_1
a1adb31a4719        mysql               "docker-entrypoint.s…"   4 days ago          Exited (0) 4 days ago                              mysql_container
b977c75c9dd7        mysql               "docker-entrypoint.s…"   4 days ago          Exited (1) 4 days ago                              bold_nobel
6c590752cab8        mysql               "docker-entrypoint.s…"   4 days ago          Exited (1) 4 days ago                              gifted_nightingale

Löschen Sie von allen oben genannten alle außer den beiden obersten in Betrieb.

docker ps -f status=exited | awk '{print $1}' | xargs docker rm

Ausführungsergebnis

149e47fc7182
6d0b42666db1
cc75432e283b
e75ea014088a
7f6d0144717d
b78d2f0c9b93
a1adb31a4719
b977c75c9dd7
6c590752cab8
Error: No such container: CONTAINER
[ ~]$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
9ec50bb2ac79        mysql               "docker-entrypoint.s…"   4 days ago          Up 2 days           3306/tcp, 33060/tcp      MYSQL
20cabc9db638        centos              "/bin/bash"              4 days ago          Up 2 days           0.0.0.0:9989->8080/tcp   centos_container

Der unnötige Container ist verschwunden, aber ich habe eine Fehlermeldung erhalten, als ich versucht habe, "Docker rm" mit "CONTAINER" in der Kopfzeile auszuführen. .. (Nun, Ikka)

Offizielle Docker-Dokumentmethode (-_-) * Wir empfehlen dies!

Nach dem Erstellen des obigen Befehls zeigt das Docker Official Manual, wie ein nicht laufender Container gelöscht wird. .. Möglicherweise wird Ihnen gesagt, dass Sie es vor die awk-Methode stellen sollen, die die oben genannten nicht enthält ...

Zustand vor der Ausführung (ich habe die Produktion unnötiger Container wieder erhöht)

docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                    NAMES
109839ada027        centos              "/bin/bash"              35 seconds ago      Exited (0) 34 seconds ago                            vibrant_bohr
cf2e8c41b2ee        centos              "/bin/bash"              36 seconds ago      Exited (0) 36 seconds ago                            brave_mestorf
fcfdaf35235d        centos              "/bin/bash"              37 seconds ago      Exited (0) 37 seconds ago                            gallant_faraday
bf7b9fa96291        centos              "/bin/bash"              38 seconds ago      Exited (0) 38 seconds ago                            zealous_morse
9ec50bb2ac79        mysql               "docker-entrypoint.s…"   4 days ago          Up 2 days                   3306/tcp, 33060/tcp      MYSQL
20cabc9db638        centos              "/bin/bash"              4 days ago          Up 2 days                   0.0.0.0:9989->8080/tcp   centos_container

Befehl löschen

Befehlserklärung (aus dem offiziellen Handbuch)

Dieser Befehl löscht alle gestoppten Container. Der Befehl docker ps -a -q übergibt alle fertigen Container-IDs an den Befehl rm und löscht sie alle. Der laufende Container wird nicht gelöscht.

docker rm $(docker ps -a -q)

Ausführungsergebnis

109839ada027
cf2e8c41b2ee
fcfdaf35235d
bf7b9fa96291
Error response from daemon: You cannot remove a running container 9ec50bb2ac797f3cfdbe827aa2793ba135f6f29e9fd2c1b179afa09d6be4b5ba. Stop the container before attempting removal or force remove
Error response from daemon: You cannot remove a running container 20cabc9db6380304c3c0c3b8a14f04e0bd60fd58c810ee4c02d6539fd5b4f3f3. Stop the container before attempting removal or force remove

Beim Versuch, einen laufenden Container zu löschen, tritt ein Fehler auf. Ich habe es nicht versucht, aber wenn Sie "Docker rm -f $ (Docker ps -a -q)" tun, werden Sie verurteilt, alle Container zu töten! Es sollte so sein, und wie die meisten von Ihnen, die bisher gelesen haben, bemerkt haben, wurde es mit der oben genannten awk-Methode durchgeführt. Der Inhalt kann auch mit dem folgenden Befehl realisiert werden ...

docker rm $(docker ps -f status=exited -q)

Na dann scheint es dir gut zu gehen. .. .. Zehn

Recommended Posts

Löschen Sie unnötige Docker-Container sofort
Verlassen Sie mehrere Schleifen gleichzeitig
Holen Sie sich viele Twitter-Tweets auf einmal
Python bei Docker