Po raz pierwszy próbuję dokera i nie mam jeszcze „modelu mentalnego”. Całkowicie początkujący.
Wszystkie przykłady, na które patrzę, zawierały --rm
flagę do uruchomienia, taką jak
docker run -it --rm ...
docker container run -it --rm ...
Pytanie:
Dlaczego te polecenia zawierają --rm
flagę? Pomyślałbym, że gdybym miał kłopoty z konfiguracją lub ściągnięciem kontenera z dobrymi rzeczami, po co go usuwać? Chcę go zachować do ponownego użycia.
Więc wiem, że mam zły pomysł na docker.
docker
docker-container
pasujące chwile
źródło
źródło
--rm
usuwa zatrzymany kontener (ten utworzonydocker run
), a nie obraz, na którym został oparty (co pobrałeś).docker run --help
powinno być przydatne. Jeśli nie chcesz usuwać kontenera , możesz go przekazać--rm
i ma to na celu automatyczne czyszczenie kontenera i usuwanie systemu plików, gdy kontener się kończy, co nie oznacza usunięcia rzeczy z kontenera.Odpowiedzi:
Kontenery to tylko przykład obrazu, którego używasz do ich uruchamiania. Stan umysłu podczas tworzenia aplikacji kontenerowej nie polega na przykład na pobraniu świeżego, czystego kontenera Ubuntu i pobraniu aplikacji i konfiguracji, które chcesz w nim mieć, a następnie uruchomieniu.
Kontener należy traktować jako wystąpienie aplikacji, ale aplikacja jest osadzona w obrazie. Właściwym użyciem byłoby utworzenie niestandardowego obrazu, w którym osadzasz wszystkie swoje pliki, konfiguracje, zmienne środowiskowe itp. W obrazie. Przeczytaj więcej o Dockerfile i jak to się robi tutaj
Gdy to zrobisz, masz obraz, który zawiera wszystko, a aby użyć aplikacji, po prostu uruchom obraz z odpowiednimi ustawieniami portu lub innymi zmiennymi dynamicznymi, używając
docker run <your-image>
Uruchamianie kontenerów z
--rm
flagą jest dobre dla tych kontenerów, których używasz przez bardzo krótki czas, aby coś zrobić, np. Skompilować aplikację w kontenerze lub po prostu przetestować coś, co działa, a wtedy wiesz, że jest to kontener krótkotrwały i ty powiedz swojemu demonowi Docker, że po zakończeniu działania usuń wszystko z nim związane i zaoszczędź miejsce na dysku.źródło
--rm
gdy użytkownik zamyka okno terminala. tj. nie jest celowo uruchamianyexit
w powłoce kontenera, ale po prostu zamyka okno terminala GUI. Zauważyłem, że w tym przypadku kontenery nie są usuwane.Flaga
--rm
jest używana, gdy zachodzi potrzeba usunięcia kontenera po zakończeniu zadania.Jest to odpowiednie do małych testów lub celów POC i oszczędza ból głowy podczas prowadzenia domu.
źródło
z https://docs.docker.com/engine/reference/run/#clean-up---rm
Krótko mówiąc: warto utrzymywać hosta w czystości przed zatrzymanymi i nieużywanymi kontenerami.
źródło
Używam
--rm
podczas łączenia się z uruchomionymi kontenerami w celu wykonania niektórych czynności, takich jak tworzenie kopii zapasowych bazy danych lub kopiowanie plików. Oto przykład:docker run -v $(pwd):/mnt --link app_postgres_1:pg --rm postgres:9.5 pg_dump -U postgres -h pg -f /mnt/docker_pg.dump1 app_db
Powyższe spowoduje połączenie działającego kontenera o nazwie „app_postgres_1” i utworzenie kopii zapasowej. Po wykonaniu polecenia tworzenia kopii zapasowej kontener jest całkowicie usuwany.
źródło