Spisu treści:

Zbuduj obraz dockera dla Raspberry Pi: 7 kroków
Zbuduj obraz dockera dla Raspberry Pi: 7 kroków

Wideo: Zbuduj obraz dockera dla Raspberry Pi: 7 kroków

Wideo: Zbuduj obraz dockera dla Raspberry Pi: 7 kroków
Wideo: Co potrafi KOMPUTER ZA 200 PLN? | Raspberry PI 4B 2024, Listopad
Anonim
Zbuduj obraz dockera dla Raspberry Pi
Zbuduj obraz dockera dla Raspberry Pi

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

Szybkość tworzenia a rozmiar obrazu
Szybkość tworzenia a rozmiar obrazu
Szybkość tworzenia a rozmiar obrazu
Szybkość tworzenia 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

Obrazy wielołukowe
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: