Çoğu bilgisayar işletim sistemi, kesinlikle bir Windows terimi olan “DLL cehennemi”nin bazı sürümlerinden muzdariptir, ancak konsept, pano genelinde geçerlidir. Genellikle birkaç özel araç gerektiren gömülü geliştirme yapmayı düşünün. Gömülü sistem kodunuzu yazarsınız, gönderirsiniz ve birkaç yıl boyunca unutursunuz. Ardından, son kullanıcı bir değişiklik istiyor. Kullandığınız derleyicinin artık çalışmaması için değişen bir kitaplık gerektirmesi çok kötü. Oh, ve cihaz programcısının USB kitaplığının daha eski bir sürümüne ihtiyacı var. Python oluşturma araçları Python 2’yi kullanır, ancak sisteminiz devam etti. İhtiyacınız olan araçlar artık bilgisayarda değilse, yükleme medyasını bulmakta ve onu çalıştırmakta sorun yaşayabilirsiniz. Daha da kötüsü, artık bunun için doğru türde bir bilgisayara bile sahip değilseniz.
Bunu ele almanın bir yolu, tüm geliştirme projelerinizi sanal bir makinede kapsüllemektir. Ardından sanal makineyi kaydedebilirsiniz ve bir işletim sistemi, tüm doğru kitaplıkları içerir ve temel olarak, herhangi bir zamanda ve hemen hemen her bilgisayarda yeniden oluşturabileceğiniz projenin nasıl olduğunun bir anlık görüntüsüdür.
Teoride, bu harika, ama çok iş ve çok depolama alanı. Bir işletim sistemi ve tüm araçları yüklemeniz gerekir. Elbette, bir cihaz görüntüsü elde edebilirsiniz, ancak birçok projede çalışıyorsanız, aynı şeyin bir sürü kopyasına sahip olacaksınız ve işleri karıştıracaksınız. Ayrıca, muhtemelen kaçınmaya çalıştığınız, ancak bazen yapmanız gereken bir tür – izin verilen – şeyleri güncellemeniz gerekiyorsa, tüm bu kopyaları güncel tutmanız gerekir.
Docker, sanal bir makineden biraz daha hafiftir. Hala sisteminizin normal çekirdeğini çalıştırıyorsunuz, ancak esasen o çekirdeğin üzerinde anında çalışan bir sanal ortama sahip olabilirsiniz. Dahası, Docker yalnızca nesneler arasındaki farkları depolar. Bu nedenle, bir işletim sisteminin on kopyasına sahipseniz, onu yalnızca bir kez ve her örnek için küçük farklılıklarla depolarsınız.
Dezavantajı, yapılandırmanın biraz zor olmasıdır. Diğer şeylerin yanı sıra depolamayı eşleştirmeniz ve ağ kurmanız gerekir. Geçenlerde Dock adlı bir projeyle karşılaştım bu, genel durumları kolaylaştırmaya çalışır, böylece herhangi bir gerçek yapılandırma olmadan bazı işler yapmak için bir liman işçisi örneğini hızlı bir şekilde döndürebilirsiniz. Üzerinde birkaç küçük değişiklik yaptım ve projeyi çatalladıancak şimdilik, Origin çatalımla senkronize edildi, böylece orijinal bağlantıya bağlı kalabilirsiniz.
belgeler
GitHub sayfalarındaki belgeler biraz seyrek, ancak yazarın iyi bir talimat ve video sayfası. Öte yandan, başlamak çok kolaydır. Bir dizin oluşturun ve ona gidin (veya mevcut bir dizine gidin). “Dock”u çalıştırın ve dizinden sonra adlandırılan bir döndürülmüş Docker konteyneri alacaksınız. Dizinin kendisi kapsayıcının içine monte edilecek ve kapsayıcıyla bir ssh bağlantınız olacak.
Varsayılan olarak, bu kapsayıcıda bazı güzel araçlar olacak, ancak ben farklı araçlar istedim. Sorun değil; istediğinizi yükleyebilirsiniz. Ayrıca bir görüntüyü istediğiniz gibi ayarlayabilir ve varsayılan olarak yapılandırma dosyalarında adlandırabilirsiniz. İsterseniz komut satırında belirli bir görüntü dosyasını da adlandırabilirsiniz. Bu, yeni makineler için birden fazla kuruluma sahip olmanın mümkün olduğu anlamına gelir. Örneğin, bu dizinin Linux geliştirme için yapılandırılmış bir görüntüye ve ARM geliştirme için bir başka görüntüye sahip olmasını istediğinizi söyleyebilirsiniz. Son olarak, geçerli dizine bağlanmasını istemiyorsanız, kabı da adlandırabilirsiniz.
Görüntüler
Bu, sistemin otomatik olarak nasıl yükleneceğini bildiği bazı özel Docker görüntüleri gerektirir. Ubuntu, Python, Perl, Ruby, Rust ve bazı ağ ve veritabanı geliştirme ortamları için kurulumlar vardır. Elbette, bunlardan herhangi birini özelleştirebilir ve bunları, aracın bağlı olduğu şeyleri (örneğin bir SSH sunucusu) karıştırmadığınız sürece kullanabileceğiniz yeni bir görüntüye bağlayabilirsiniz.
Varsayılan görüntüyü değiştirmek istiyorsanız, bunu ~/.dockrc içinde yapabilirsiniz. Bu dosya ayrıca sistemin kapsayıcı adlarından kaldırdığı bir önek içerir. Bu şekilde, Hackaday adlı bir dizin Hackaday.alw.home adında bir kapsayıcı ile sonuçlanmaz, sadece Hackaday olur. Örneğin, tüm çalışmalarım /home/alw/projects içinde olduğundan, bunu bir önek olarak kullanmalıyım, böylece her bir kap adında proje kelimesi yok, ancak – ekteki ekran görüntüsünde görebileceğiniz gibi – bu yüzden konteyner Hackaday.projects olarak ortaya çıkıyor.
Seçenekler ve Takma Adlar
Yardım sayfasında mevcut seçenekleri görebilirsiniz. Bir kullanıcı seçebilir, ek depolama birimleri bağlayabilir, birkaç kapsayıcı seçeneği ayarlayabilir ve daha fazlasını yapabilirsiniz. denemedim ama var gibi
$DEFAULT_MOUNT_OPTIONS tüm kapsayıcılara başka dizinler eklemek için değişken.
Çatalım, kesinlikle gerekli olmayan birkaç ekstra seçenek ekliyor. Birincisi, -h size kısa bir yardım ekranı verirken, -U size daha uzun bir yardım ekranı verecektir. Ayrıca bilinmeyen seçenekler bir yardım mesajını tetikler. İsteğe bağlı takma adları almak için kabuk profilinize eklemeye uygun bir kaynak satırı yazmak için bir -I seçeneği de ekledim.
Bu isteğe bağlı takma adlar sizin için yararlıdır, ancak Dock bunları kullanmadığından yüklemeniz gerekmez. Bunlar, tam Docker sözdizimini hatırlamak zorunda kalmadan liman işçisi görüntülerini listelemek veya bir taahhütte bulunmak gibi şeyler yapar. Tabii ki, isterseniz yine de normal Docker komutlarını kullanabilirsiniz.
Dene!
Başlamak için Docker’ı yüklemeniz gerekir. Genellikle, varsayılan olarak yalnızca kök Docker’ı kullanabilir. Bazı kurulumlarda, kendi kullanıcı kimliğinizden kullanmak istiyorsanız katılabileceğiniz belirli bir grup vardır. İsterseniz kurulumu kolaydır. Örneğin:
sudo usermod -aG docker $(whoami) newgrp docker sudo systemctl unmask docker.service sudo systemctl unmask docker.socket sudo systemctl start docker.service
Oradan proje sayfasındaki kurulumu takip edin ve ~/.dockrc dosyanızı düzenlediğinizden emin olun. emin olmanız gerekir
DOCK_PATH,
IGNORED_PREFIX_PATHve
DEFAULT_IMAGE_NAME değişkenler, diğer şeylerin yanı sıra doğru şekilde ayarlanmıştır.
Kurulduktan sonra bir test dizini oluşturun, yazın
dock ve yeni sanal makinenizin keyfini çıkarın. Takma adları ayarladıysanız, şunu kullanın:
dc sahip olduğunuz kapları göstermek için. Kullanabilirsiniz
dcs veya
dcr bir “sanal makineyi” kapatmak veya kaldırmak için. Mevcut kapsayıcıyı bir görüntü olarak kaydetmek istiyorsanız, deneyin.
dcom kapsayıcıyı taahhüt etmek için.
Bazen sahte makineye root olarak girmek istersiniz. Kullanabilirsiniz
dock-r kısaltması olarak
dock -u root takma adları yüklediğinizi varsayarsak.
Bunun nasıl daha kolay olabileceğini hayal etmek zor. Her şey bir Bash betiği olarak yazıldığından, seçenekler eklemek kolaydır (benim yaptığım gibi). Mevcut Docker görüntülerini de Dock ile uyumlu olacak şekilde ayarlamak oldukça kolay olacak gibi görünüyor. Gelecekteki kapsayıcılar için şablon olarak kullanmak üzere bir kapsayıcıyı taahhüt edebileceğinizi unutmayın.
Docker hakkında daha fazla arka plan istiyorsanız, Ben James’in iyi bir yazısı var. Geriye dönük hesaplamayı basitleştirmek için Docker’ı bile kullanabilirsiniz.
Kaynak : https://hackaday.com/2022/06/21/linux-fu-docking-made-easy/