Raspberry Pi için Docker Görüntüsü Oluşturun: 7 Adım
Raspberry Pi için Docker Görüntüsü Oluşturun: 7 Adım
Anonim
Raspberry Pi için Docker Görüntüsü Oluşturun
Raspberry Pi için Docker Görüntüsü Oluşturun

Bu talimat, Raspberry Pi için bir Docker Görüntüsünün nasıl oluşturulacağını gösterir.

Adım 1: Neden Docker?

Raspberry Pi (RPi) pek çok şey için kullanabilirsiniz, minik web sunucusu, AI asistanı, Robotik… vb.

Denemek istediğiniz birçok proje var, ancak acı noktaları:

İnşa Zamanı

RPi, işlem gücüne meraklı değildir ve SD/USB sürücüsü IO hızını sınırlamıştır. apt install all bağımlılık paketini kullanın, bir saat gerektirir ve kaynağı oluşturmak daha fazla saat gerektirir. Özellikle AI ile ilgili projeler için, denemek için zamandan daha fazla bekleme zamanı.

Sürüm Çakışması

Herkes bir RPI'da birçok proje dener. Bir projeyi denediğinizde ve başka bir projeye geçmek istediğinizde, önceki proje ile bağımlılık kitaplıkları sürüm çakışmasından kaynaklanan bazı derleme hataları görebilirsiniz. Bazı kütüphaneler birkaç yıl önce gelişmeyi durdurur ve bazı çok eski kütüphanelere bağımlıdır. Buna karşılık, aktif proje en son kütüphanelere bağlıydı. Her iki proje de aynı SD/USB sürücüsünde birlikte var olamaz mı?

Görüntü Yedekleme

Bazı projeler bir arada bulunamayacağından, her proje görüntüsünü bağımlı tutmak için daha fazla SD/USB sürücü satın almanız bir yoldur. Para sınırlı değilse? Ancak dosya/görüntü yönetiminin zorluklarını artırır, bazen ne istediğinizi bulmak için SD/USB takasına ve birçok kez önyüklemeye ihtiyaç duyarsınız.

Paylaşmak Zor

Projenizi oluşturduğunuzda ve kaynağı arkadaşlarınızla paylaşmak istediğinizde, arkadaşlarınız derleme başarısız geri bildirimini alabilir. Dağıtım/kütüphaneler sürümü çok eski veya çok yeni, yapı parametreleri ve bazı püf noktaları. Başkalarının sorunlarını çözmek için zaman harcamanız gerekir, ancak projenin kendisini desteklemezsiniz.

Yukarıdaki ağrı noktaları, bu birkaç yıldaki deneyimimdir. Docker çoğuna yardımcı olabilir.

Docker, önceden oluşturulmuş bir üst görüntü seçerek derlemeye başlar. Örneğin. debian:jessie-slim eski bir kararlı Debian hafif ağırlık dağılımından başlar; Node.js 10'un kurulu olduğu Debian hafif dağıtımından node:10-buster-ince başlangıç. Önceden oluşturulmuş görüntü, görüntüyü flash etmek, güncelleme almak ve bağlı kitaplıkları kurmak için çok zaman kazandırabilir. Her proje farklı işletim sistemi sürümünden, çalışma zamanı sürümünden ve kitaplık sürümünden başlayabilir. Kendi projenizi geliştirmeyi tamamladığınızda, Docker görüntüsünü docker hub'ına gönderebilir ve herkesle paylaşabilirsiniz. Tüm proje verilerini aynı SD/USB'de tutabilirsiniz (veriler rutin olarak başka bir ortama yedeklenmelidir). Yerel depolamadan tasarruf etmek için, Docker hub'ından tekrar çekebileceğiniz herhangi bir zamanda, kullanmadığınız zamanlarda Docker görüntüsünü temizleyebilirsiniz.

2. Adım: Docker Yükü

Docker bir sanallaştırma katmanı ekledi, ek yük bir endişe kaynağıdır. Docker yükü hakkında çok fazla test yapmadım. Çoğu Googled sonucu, ek yükün çok düşük olduğunu iddia ediyor ve bu belgeyi ilgili bazı araştırmalar hakkında buldum:

domino.research.ibm.com/library/cyberdig.n…

3. Adım: Docker'ı yükleyin

Basitçe çalıştırın:

curl -sSL https://get.docker.com | NS

Referans:

www.raspberrypi.org/blog/docker-comes-to-…

docs.docker.com/get-started/

Adım 4: Docker Görüntüsü Oluşturma

Lütfen liman işçisi görüntüsü oluşturmaya ilişkin resmi kılavuzu bulun:

docs.docker.com/get-started/part2/

Docker kullanan 2 projem var, Dockerfile'ı referans olarak bulabilirsiniz:

BanateCAD, Lua çalışma zamanı ve bazı ek Lua kitaplıkları gerektirir. Sadece Lua 5.1 gerekli tüm Lua kitaplıklarıyla uyumlu olabilir, ancak bu 2006'nın ürünüdür. Lua 5.1 başarısını oluşturabilen en son Debian dağıtımı Jessie'dir (Mevcut Debian eski kararlı sürümünden önceki sürüm). Bu yüzden onu çalıştırmak için bir Lua 5.1 ortamı Docker Image oluşturdum

github.com/moononournation/BanateCAD/tree/…

OpenCV aktif olarak gelişen bir projedir, kaynak kodu en son kütüphanelere ve derleyiciye bağlıdır. Bu nedenle, başarısız derleme, kütüphane yöntem imzası, derleyici sürümü, bağımlılık çakışması oluşturma şansı çok yüksek… Opencv4nodejs'i basit bir uygulama yapmak için kullanmak istiyorum ve en son özelliklere gerek duymuyorum. Bu yüzden opencv4nodejs başarısını oluşturmanın bir yolunu bulduğumda, onu bir Docker Görüntüsüne dondurmak ve gerçek uygulama kodlamamı yapmak istiyorum

github.com/moononournation/face-aware-phot…

Adım 5: Geliştirme Oluşturma Hızı ve Görüntü Boyutu Karşılaştırması

Geliştirme Oluşturma Hızı ve Görüntü Boyutu Karşılaştırması
Geliştirme Oluşturma Hızı ve Görüntü Boyutu Karşılaştırması
Geliştirme Oluşturma Hızı ve Görüntü Boyutu Karşılaştırması
Geliştirme Oluşturma Hızı ve Görüntü Boyutu Karşılaştırması

Face-farkında-foto-osd projemin 2 Dockfile sürümüne sahip olduğunu görebilirsiniz:

github.com/moononournation/face-aware-phot…

Geliştirme sırasında, split RUN komutunu olabildiğince küçük seviyorum ve RUN komutunu en son adıma değiştirmek için büyük olasılıkla düzenlemeyi seviyorum. Bu nedenle, geliştirme değişikliği için her derleme için, önceki yerleşik katmanı mümkün olduğunca kullanabilir ve daha fazla oluşturma hızından tasarruf edebilirim.

Buna karşılık, yayınlamadan önce tüm RUN komutlarını tek bir komutta birleştireceğim. daha az katman, Docker Image boyutunu çok azaltabilir. Yüz tanımalı-foto-osd projem örnek olarak 100 MB'tan fazla boyut küçültebilir.

Adım 6: Çoklu Arch Görüntüleri

Çoklu Kemer Görüntüleri
Çoklu Kemer Görüntüleri

Daha önce de belirtildiği gibi, RPI işlem gücüne meraklı değildir. RPi derlemesini kullanın Docker görüntüsü, özellikle tek RPi'niz başka projeler yürütüyorsa, iyi bir seçim olmayabilir.

Bir x86 bilgisayar kullanmak ayrıca Docker Görüntüsü oluşturmanıza yardımcı olabilir, lütfen burada daha fazla ayrıntı bulun:

www.docker.com/blog/multi-arch-images/

basit 2 komut, paralel olarak x86 ve ARM Docker Image oluşturabilir:

docker buildx oluştur --use

docker buildx build --platform linux/amd64, linux/arm -t moononournation/debian-imagemagick-lua-meshlab:1.0.1 --push.

Multi Arch, aynı Docker görüntü etiketiyle çoklu platform görüntüsü oluşturabilir, böylece projeniz farklı makinelerde sorunsuz bir şekilde çalışabilir. Örneğin.

docker run -it moononournation/debian-imagemagick-lua-meshlab:1.0.1

Yukarıdaki komutu RPi'de veya x86 bilgisayarınızda çalıştırırsanız çalıştırın, bir Lua çalışma zamanı ortamı elde edebilirsiniz.

Adım 7: Mutlu RPI

Artık RPI projenizi daha kolay geliştirebilir ve paylaşabilirsiniz!