Opis Atomic Docker storage backends opisuje techniczne różnice między AUFS i innymi opcjami zaplecza pamięci masowej, takimi jak devicemapper. AUFS nie znajduje się w źródłowym jądrze systemu Linux. Dlaczego wybrano AUFS jako domyślny backend pamięci (na przykład w Dockerze Ubuntu)? Czy są jakieś techniczne właściwości AUFS, które czynią go lepszym wyborem niż backend pamięci masowej, taki jak devicemapper, który wydaje się być obsługiwany przez niezałatowane jądro Linux?Dlaczego warto używać AUFS jako domyślnego zaplecza magazynu Docker zamiast devicemapper?
Odpowiedz
AUFS jest tylko domyślnym zapleczem zaplecza w systemach/dystrybucjach, które go udostępniają. W przeciwnym razie domyślnie jest to devicemapper. Ubuntu 14.04, na przykład, domyślnie devicemapper:
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"
$ docker info | grep Storage
Storage Driver: devicemapper
Zmieniło w Docker 0.7.0. Przed wersją 0.7.0 Docker opierał się na systemie AUFS jako jedynym sterowniku pamięci, dlatego był on domyślny we wcześniejszych wersjach Ubuntu.
Nie jestem ekspertem od systemów plików, ale ludzie z Dyskursu, którzy są, strongly recommend using AUFS, and not DeviceMapper. Korzystanie z DeviceMapper może spowodować "świat bólu".
Ostatnio mam problem z kodem wyjścia do modułu dokowania 159, co oznacza, że przekracza pewne ograniczenia rozmiaru pliku. W końcu dowiaduję się, że jest to spowodowane przez urządzenie odwzorowujące urządzenia, więc należy ponownie zainstalować dokowanie i zmienić, aby użyć sterownika nakładki. – Jianyu
The Docker documentation mówi:
Kierowca aufs jest najstarszym, ale jest oparty na Linux kernel patch-zestaw, który jest mało prawdopodobne, aby być włączone do głównego jądra. Są one również znane z powodu poważnych awarii jądra.
Miałem awarie kernela z Dockerem 17.06.2 ~ ce-0 ~ ubuntu na Ubuntu 16.04 z domyślnym jądrem.
Używam overlay2
w systemie plików ext4; Docker teraz działa dobrze.
- 1. Dlaczego warto używać AsQueryable() zamiast List()?
- 2. Dlaczego warto używać ROLAP zamiast zwykłego MySQL?
- 3. Dlaczego warto używać Celery zamiast RabbitMQ?
- 4. Dlaczego warto używać argparse zamiast optparse?
- 5. Dlaczego warto używać spyOn zamiast jaśminu.createSpy?
- 6. Dlaczego warto używać var zamiast nazwy klasy?
- 7. Dlaczego warto używać metody classmethod zamiast staticmethod?
- 8. Dlaczego warto używać Long.valueOf (...) zamiast długiego literału?
- 9. Dlaczego warto używać Function.prototype.bind zamiast Function.prototype.call?
- 10. Dlaczego warto używać Dart jako programisty?
- 11. Dlaczego warto używać shm_open?
- 12. Dlaczego warto używać NSAutoreleasePool?
- 13. Dlaczego warto używać Gradle?
- 14. Docker changing/var/lib/docker/aufs/diff location
- 15. Dlaczego warto używać niestandardowych zdarzeń zamiast bezpośrednich wywołań metod?
- 16. Dlaczego warto używać funkcji rbegin() zamiast końcówki() - 1?
- 17. Dlaczego warto używać TimeSpan.CompareTo() zamiast < > lub =
- 18. Dlaczego warto używać angularfire $ destroy()?
- 19. Dlaczego warto używać JIT UNITVERSIONING?
- 20. Dlaczego warto używać QObject :: setObjectName()?
- 21. Dlaczego warto używać AsynchronousFileChannel Java?
- 22. Dlaczego warto używać wzorca konstruktora?
- 23. Dlaczego warto używać aliasingów klas?
- 24. ReactJS: Dlaczego warto używać this.props.children?
- 25. Czy warto używać list asocjacyjnych zamiast rekordów?
- 26. Dlaczego warto używać wielu kontekstów OpenGL
- 27. Dlaczego warto użyć char [] zamiast ciągu?
- 28. Dlaczego warto używać "succeed do" w Haml?
- 29. Dlaczego warto używać Ext.apply w initComponent
- 30. Dlaczego warto używać opcji Opcjonalnie.Opcji na Opcjonalne.Niewłączalne?
Ciekawe, że Ubuntu 14.04 również domyślnie jest devicemapper. Jednak link mówi: "Jeśli twój system obsługuje AUFS, będzie nadal używać sterownika AUFS". A co z AUFS sprawia, że Docker woli go od devicemapper, jeśli jest dostępny? –
Po prostu, jeśli system ma obsługę aufs z dockerem przed 0.7, nadal będzie chciał, aby ich obrazy działały. Jeśli zmieni się sterownik pamięci, obrazy będą niekompatybilne, co zepsułoby te systemy. Nie ma żadnej technicznej korzyści dla nas informacji aufs na urządzeniu mapującym. –
Mamy problemy z wydajnością w AWS z devicemapper (instancja m3.medium, dysk EBS podłączony do/var/lib/docker dir). Z systemami plików btrfs/etx4 i devicemapper mamy czasy kompilacji około 20 minut. Z systemem plików btrfs i btrfs devicemapper skracamy czas kompilacji do 12 minut. Z systemem plików ext4 i aufs devicemapper zajmuje to około 6 minut. Istnieją więc różnice w poziomach wydajności przynajmniej w infrastrukturze AWS. – msgre