2016-08-28 74 views
5

Mam kontener dokera, który ma dużo operacji odczytu/zapisu na dysku. Chciałbym przetestować, co się dzieje, gdy cały system plików docker jest w pamięci. Widziałem tu kilka odpowiedzi, które mówią, że nie będzie to prawdziwy wzrost wydajności, ale jest to testowanie.Docker: w systemie plików pamięci

Idealnym rozwiązaniem, które chciałbym przetestować, jest udostępnianie części wspólnych każdego obrazu i kopiowanie do pamięci w razie potrzeby.

Każdy plik kontenera, który zostanie utworzony podczas wykonywania, powinien również znajdować się w pamięci i być oddzielony. nie powinno być więcej niż 5 GB fs w czasie bezczynności i do 7 GB w czasie przetwarzania.

Proste rozwiązania powieliłyby wszystkie udostępnione pliki (nawet te części systemu operacyjnego, których nigdy nie używasz) dla każdego kontenera.

Odpowiedz

5

Nie ma różnicy między przechowywaniem obrazu a podstawowym systemem plików kontenera, warstwowy FS uzyskuje dostęp do warstw obrazów bezpośrednio jako warstwa RO, przy czym kontener używa warstwy RW powyżej, aby wychwycić wszelkie zmiany. Dlatego też cel, jakim jest posiadanie kontenera w pamięci podczas instalacji Dockera na dysku, nie ma łatwej implementacji.

Jeśli wiesz, gdzie działa twoja aktywność RW (dość łatwo jest sprawdzić docker diff uruchomionego kontenera), najlepszą opcją byłoby tmpfs zamontowany w tej lokalizacji w twoim kontenerze, który jest obsługiwany natywnie przez docker (od docker run reference):

$ docker run -d --tmpfs /run:rw,noexec,nosuid,size=65536k my_image 
+0

Idealny! Dzięki za wzmianka o 'docker diff' ✨ –

1

Docker domyślnie przechowuje dane obrazu, kontenera i objętości w katalogu. HD kontenera składa się z oryginalnego obrazu i "warstwy kontenerowej".

Możesz to ustawić, używając RAM disk. Trudno byłoby przydzielić trochę pamięci RAM, zamontować ją i sformatować w wybranym systemie plików. Następnie move your docker installation na zamontowany dysk RAM i dowiązanie symboliczne z powrotem do pierwotnej lokalizacji.

Setting up a Ram Disk

Best way to move the Docker directory

Oczywiście jest to przydatne tylko do testowania jako Döcker i to obrazy, tomy, pojemników itp byłyby utracone przy restarcie.

+0

Chcę, aby kontener HD był w pamięci, a nie w instalacji dockera na hoście. – qballer

+0

Docker domyślnie przechowuje dane obrazu, kontenera i objętości w jego katalogu. HD kontenera składa się z oryginalnego obrazu i "warstwy kontenerowej". https://docs.docker.com/engine/userguide/storagedriver/imagesandcontainers/ –

+0

Prawdopodobnie lepiej z tego korzystać, ale nie próbowałem: https://docs.docker.com/registry/storage-drivers/inmemory/Ponadto, Linux i inne systemy operacyjne mają wbudowane buforowanie dysku, więc dostęp do dysku twojego kontenera może i tak nie trafić na właściwy dysk. – sudo