Spisu treści:
- Krok 1: Dlaczego Docker?
- Krok 2: Narzut Dockera
- Krok 3: Zainstaluj Docker
- Krok 4: Tworzenie obrazu Docker
- Krok 5: Szybkość tworzenia aplikacji a rozmiar obrazu
- Krok 6: Obrazy wielołukowe
- Krok 7: Szczęśliwego RPi
Wideo: Zbuduj obraz dockera dla Raspberry Pi: 7 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
Ta instrukcja pokazuje, jak zbudować obraz Docker dla Raspberry Pi.
Krok 1: Dlaczego Docker?
Możesz używać Raspberry Pi (RPi) do wielu rzeczy, małego serwera internetowego, asystenta AI, robotyki… itd.
Wiele projektów, które chcesz wypróbować, ale problemy to:
Czas budować
RPi nie lubi mocy obliczeniowej, a napęd SD/USB ograniczał prędkość IO. Użycie pakietu apt install all zależności zajmuje godzinę, a zbudowanie źródła wymaga więcej godzin. Zwłaszcza w przypadku projektów związanych ze sztuczną inteligencją więcej czasu trzeba czekać niż spróbować.
Konflikt wersji
Każdy próbuje wielu projektów w jednym RPi. Gdy wypróbowałeś projekt i chciałbyś przełączyć się na inny, możesz znaleźć pewne niepowodzenie kompilacji spowodowane konfliktem wersji bibliotek zależności z poprzednim projektem. Niektóre biblioteki przestają się rozwijać kilka lat temu i są zależne od bardzo starych bibliotek. Natomiast aktywny projekt zależał od najnowszych bibliotek. Oba projekty nie mogą współistnieć na tym samym dysku SD/USB?.
Kopia zapasowa obrazu
Ponieważ niektóre projekty nie mogą współistnieć, po prostu kup więcej pamięci SD/USB, aby każdy obraz projektu był zależny. Jeśli pieniądze nie są ograniczone?. Zwiększa to jednak trudności związane z zarządzaniem plikami/obrazami, czasami wymaga wymiany SD/USB i wielokrotnego uruchamiania, aby dowiedzieć się, czego chcesz.
Trudno się podzielić
Kiedy zbudowałeś swój projekt i chciałbyś udostępnić źródło znajomym, Twoi znajomi mogą otrzymać informację zwrotną o nieudanej kompilacji. Wersja dystrybucji/bibliotek za stara lub za nowa, parametry budowy i kilka sztuczek. Musisz wykorzystać czas, aby rozwiązać inne problemy związane z budowaniem, ale nie wspierać samego projektu.
Powyższe bolączki są moim doświadczeniem w ciągu tych kilku lat. Docker może w większości pomóc.
Docker rozpoczyna kompilację od wybrania gotowego obrazu nadrzędnego. Np. debian:jessie-slim startuje ze starej, stabilnej, lekkiej dystrybucji Debiana; node:10-buster-slim start z lekkiej dystrybucji Debiana z zainstalowanym Node.js 10. Gotowy obraz może zaoszczędzić dużo czasu na flashowanie obrazu, pobieranie aktualizacji i instalowanie zależnych bibliotek. Każdy projekt może zaczynać się od innej wersji systemu operacyjnego, wersji runtime i wersji bibliotek. Po zakończeniu opracowywania własnego projektu możesz przekazać obraz platformy Docker do centrum docker i udostępnić go wszystkim. Możesz przechowywać wszystkie dane projektu na tym samym SD/USB (dane powinny rutynowo tworzyć kopie zapasowe na innych nośnikach). Aby zaoszczędzić pamięć lokalną, możesz nawet wyczyścić obraz Docker, gdy nie jest używany, za każdym razem, gdy możesz ponownie pobrać z centrum Docker.
Krok 2: Narzut Dockera
Docker dodał jedną warstwę wirtualizacji, problemem jest narzut. Nie testowałem zbyt wiele na temat narzutu Dockera. Większość wyników wyszukiwania w Google zapewnia bardzo niskie koszty ogólne i znalazłem ten dokument dotyczący niektórych powiązanych badań:
domino.research.ibm.com/library/cyberdig.n…
Krok 3: Zainstaluj Docker
Po prostu uruchom:
curl -sSL https://get.docker.com | CII
Nr ref.:
www.raspberrypi.org/blog/docker-comes-to-…
docs.docker.com/get-started/
Krok 4: Tworzenie obrazu Docker
Zapoznaj się z oficjalnym przewodnikiem dotyczącym tworzenia obrazu dokowanego:
docs.docker.com/get-started/part2/
Mam 2 projekty korzystające z Dockera, możesz znaleźć plik Dockerfile jako odniesienie:
BanateCAD wymaga środowiska uruchomieniowego Lua i kilku dodatkowych bibliotek Lua. Tylko Lua 5.1 może być kompatybilne ze wszystkimi wymaganymi bibliotekami Lua, ale jest produktem roku 2006. Najnowszą dystrybucją Debiana, która może zbudować sukces Lua 5.1 jest Jessie (wersja przed obecną starą stabilną wersją Debiana). Zbudowałem więc obraz Docker w środowisku Lua 5.1, aby go uruchomić
github.com/mononournation/BnateCAD/tree/…
OpenCV jest aktywnie rozwijającym się projektem, kod źródłowy zależy od najnowszych bibliotek i kompilatora. Więc jest to bardzo duża szansa, że kompilacja nie powiodła się, sygnatura metody bibliotek, wersja kompilatora, konflikt zależności… Chciałbym użyć opencv4nodejs do stworzenia prostej aplikacji, która nie wymaga najnowszych funkcji. Więc kiedy znalazłem sposób na zbudowanie sukcesu opencv4nodejs, chciałbym zamrozić go do obrazu Docker i zrobić moje rzeczywiste kodowanie aplikacji
github.com/mononournation/face-aware-photo…
Krok 5: Szybkość tworzenia aplikacji a rozmiar obrazu
Może się okazać, że mój projekt Face-aware-Photo-OSD ma 2 wersje Dockfile:
github.com/mononournation/face-aware-photo…
Podczas programowania lubię podzielić polecenie RUN na jak najmniejsze i zorganizować najprawdopodobniej zmianę polecenia RUN na ostatni krok. Tak więc dla każdej kompilacji do zmiany rozwojowej mogę wykorzystać poprzednio zbudowaną warstwę tak bardzo, jak to możliwe i zaoszczędzić dużo szybkości kompilacji.
W przeciwieństwie do tego, połączę wszystkie polecenia RUN w jednym przed wydaniem. mniejsza warstwa może znacznie zmniejszyć rozmiar obrazu Docker. Jako przykład mój projekt typu face-aware-photo-osd może zmniejszyć rozmiar o ponad 100 MB.
Krok 6: Obrazy wielołukowe
Jak wspomniano wcześniej, RPi nie przepada za mocą obliczeniową. Użyj obrazu Docker kompilacji RPi może nie być dobrym wyborem, zwłaszcza gdy jedyne RPi uruchamia inne projekty.
Użycie komputera x86 może również pomóc w stworzeniu obrazu Docker, więcej szczegółów znajdziesz tutaj:
www.docker.com/blog/multi-arch-images/
proste 2 polecenia mogą równolegle budować x86 i ARM Docker Image:
docker buildx create --use
docker buildx build --platform linux/amd64, linux/arm -t moononournation/debian-imagemagick-lua-meshlab:1.0.1 --push.
Multi Arch może budować obraz wieloplatformowy z tym samym znacznikiem obrazu Docker, dzięki czemu Twój projekt może bezproblemowo działać na innej maszynie. np.
docker run -it moononournation/debian-imagemagick-lua-meshlab:1.0.1
Bez względu na to, czy uruchomisz powyższe polecenie na RPi lub komputerze x86, możesz uzyskać środowisko uruchomieniowe Lua.
Krok 7: Szczęśliwego RPi
Teraz możesz łatwiej rozwijać i udostępniać swój projekt RPi!
Zalecana:
Zbuduj automatyczny zbiornik nawadniający z alertami Wi-Fi dla konfiguracji upraw: 11 kroków
Zbuduj automatyczny zbiornik nawadniający z alertami Wi-Fi dla konfiguracji upraw: W tym samouczku DIY pokażemy, jak zbudować automatyczny zbiornik na wodę z alertami Wi-Fi dla konfiguracji uprawy lub automatycznego systemu nawadniania dla zwierząt, takich jak psy, koty, kurczaki itp
Zbuduj odbiornik podczerwieni Kodi / OSMC i resetuj czapkę dla Raspberry Pi: 5 kroków (ze zdjęciami)
Zbuduj odbiornik podczerwieni Kodi / OSMC i czapkę resetującą dla Raspberry Pi: Zbuduj odbiornik podczerwieni Kodi / OSMC i czapkę resetującą dla Raspberry Pi 3Z drugiego końca pokoju chciałbym: Kontrolować Kodi / OSMC działający na Raspberry Pi za pomocą pilota Sprawdź, czy Raspberry Pi jest włączonePonadto chciałbym, aby moja rodzina
CityCoaster - Zbuduj własną podstawkę do rzeczywistości rozszerzonej dla swojej firmy (TfCD): 6 kroków (ze zdjęciami)
CityCoaster - zbuduj własną podstawkę z rozszerzoną rzeczywistością dla swojej firmy (TfCD): Miasto pod twoim kubkiem! CityCoaster to projekt zrodzony z myślą o produkcie dla lotniska Rotterdam Haga, który mógłby wyrażać tożsamość miasta, zabawiając klientów strefy wypoczynkowej rozszerzoną rzeczywistością. W środowisku takim
Zbuduj niestandardowy wyświetlacz w Studio LCD (dla klawiatury G15 i ekranów LCD).: 7 kroków
Zbuduj niestandardowy wyświetlacz w programie LCD Studio (dla klawiatury G15 i ekranów LCD).: Ok, jeśli właśnie masz klawiaturę G15 i nie jesteś pod wrażeniem podstawowych wyświetlaczy, które były z nią dostarczane, przeprowadzę Cię przez podstawy korzystania z LCD Studio zrobić własny.Ten przykład będzie tworzeniem wyświetlacza, który pokazuje tylko bas
Twórz wzory kafelków dla strony internetowej Obraz tła: 8 kroków
Twórz wzory kafelkowe dla obrazu tła witryny: Oto prosta i prosta (jak sądzę) metoda tworzenia obrazów, które można układać kafelkami, nie wyglądając na zbyt „siatkowe”. Ten samouczek wykorzystuje Inkscape (www.inkscape.org), edytor grafiki wektorowej typu open source. Wyobrażam sobie, że ta metoda może