Play with Docker: Tarayıcınızda Ücretsiz Olarak Konteyner Çalıştırın
Play with Docker ile tarayıcınızda Docker kullanmayı öğrenin. Bu çevrimiçi Docker oyun alanında konteyner çalıştırın, Dockerfile’lar oluşturun ve Docker Compose kullanın.
Dizüstü bilgisayarınıza tek bir bayt bile kurmadan saniyeler içinde çok düğümlü bir Docker Swarm kümesi oluşturduğunuzu hayal edin. Yıllarca, geliştiricilerin Docker kurulumlarıyla boğuştuklarına, sistem bağımlılıklarıyla uğraştıklarına, izin hatalarını giderdiklerine ve yaşlanan donanımlarının kaynak gereksinimlerini karşılayıp karşılamayacağını dert ettiklerine tanık oldum.
Sonra Play with Docker’ı keşfettim ve bu, konteynerleştirmeyi öğretme ve öğrenme biçimimi tamamen dönüştürdü.
Play with Docker, Docker konteynerlerini oluşturup çalıştırabileceğiniz Alpine Linux sanal makinelerine anında erişim sağlayan, tarayıcı tabanlı ücretsiz bir kum havuzudur. Konteynerleştirme yolculuğuna yeni başlayan bir veri uzmanı olun ya da yeni bir Docker özelliğini hızla denemek isteyen deneyimli bir profesyonel, PWD erişilebilir ve risksiz bir ortam sunar.
Bu kapsamlı öğreticide, ilk konteynerinizden Docker Compose ile çok konteynerli orkestrasyona kadar her şeyi adım adım göstereceğim. Sonunda, tarayıcınızdan çıkmadan çalışan konteynerleştirilmiş bir web sunucunuz olacak.
Play with Docker (PWD), doğrudan web tarayıcınızda çalışan, ücretsiz ve geçici bir Docker oyun alanıdır. Docker Captain’ları Marcos Liljedhal ve Jonathan Leibiusky tarafından oluşturulan PWD, bir hackathon projesinden doğmuş ve kısa sürede Docker topluluğu için vazgeçilmez bir araç haline gelmiştir.
PWD’nin temelinde Docker-in-Docker (dind) teknolojisi vardır; burada Docker konteynerleri başka Docker konteynerlerinin içinde çalışır. Bu iç içe mimari kulağa karmaşık gelebilir, ancak yerel makinenizi etkilemeden, çok düğümlü Swarm kümeleri gibi gelişmiş özellikler de dahil olmak üzere tam Docker işlevselliğini denemenizi sağlar.
Platform tüm karmaşıklığı perde arkasında yönetir ve size temiz bir terminal arayüzü sunar. Konteyner iş yükleri için mükemmel, hafif Linux dağıtımları olan Alpine Linux örnekleri sağlar. Alpine bilerek minimaldir; temel imaj boyutu Ubuntu’nun 100+ MB’ına kıyasla yalnızca yaklaşık 5 MB’tır.
Bu verimlilik, daha hızlı indirmeler ve daha çabuk başlatma süreleri anlamına gelir. Her örnek, bir kabuk, Docker CLI ve Docker Compose dahil olmak üzere yerel bir kurulumda sahip olacağınızla aynı komut satırı gücünü sunan eksiksiz bir terminal deneyimiyle gelir.
PWD, yeni başlayanlar için kurulum engellerini ortadan kaldırırken, gelişmiş kullanıcılar için Docker Swarm gibi orkestrasyon özelliklerini test edebilecekleri bir alan sağlar. Sanal makineleri veya bulut örneklerini yönetme yükü olmadan çok düğümlü kümeler oluşturabilir, ağ yapılandırmalarını deneyebilir ve konteyner zamanlamasını test edebilirsiniz.
Play With Docker ve Docker Desktop Karşılaştırması
PWD’nin sunduklarını netleştirdiğimize göre, muhtemelen ne zaman onu kullanmanız gerektiğini ve ne zaman Docker Desktop’ı yerel olarak kurmanızın daha iyi olacağını merak ediyorsunuz. Play with Docker ile Docker Desktop’ı ne zaman kullanmanız gerektiğini anlamak size zaman ve hayal kırıklığından tasarruf sağlar.
Play with Docker, kurulum gerektirmeyen anında tarayıcı erişimi, sıfır yerel kaynak tüketimi ve tamamen ücretsiz olarak tam Docker Swarm desteği sunar. Ancak oturumlar yalnızca iki saat sürer ve ardından her şey silinir; performans sınırlıdır ve oturum süresi dolduktan sonra kalıcı depolama yoktur.
Not: PWD dokümantasyonu oturum süresini dört saat olarak gösteriyor, ancak ben test ettiğimde aslında yalnızca iki saatti. Görünüşe göre dokümantasyon güncel değil.
Docker Desktop, makinenizde yerel olarak çalışır; kalıcı depolama, daha iyi performans ve Visual Studio Code gibi geliştirme araçlarıyla sorunsuz entegrasyon sağlar. Oturum süresi aşımı olmadan uzun vadeli projeler üzerinde çalışabilirsiniz.
Özellik
Play with Docker
Docker Desktop
Kurulum
Sıfır kurulum, tarayıcı tabanlı
Kurulum gerekir
Oturum süresi
2 saat sınırı
Süre sınırı yok
Performans
Paylaşılan kaynaklar, sınırlı
Tam sistem kaynakları
Depolama
Geçici, oturumdan sonra silinir
Yerel diskte kalıcı
Maliyet
Ücretsiz
Kişisel kullanım için ücretsiz; kurumsal için ücretli
Sistem etkisi
Yok (bulut tabanlı)
Yerel CPU ve belleği kullanır
Swarm desteği
Yerleşik destek
Ek kurulum gerekir
IDE entegrasyonu
Yok
Mükemmel (VS Code, vb.)
Play With Docker ne zaman kullanılmalı
Play with Docker şu senaryolarda parlıyor:
Tek seferlik testler
Eğitici içerikleri takip etmek
Düşük özellikli dizüstü bilgisayarlar veya Chromebook’larla çalışmak
Hata ayıklama veya demolar için canlı oturum URL’lerini ekip arkadaşlarıyla paylaşmak
Docker Desktop ne zaman kullanılmalı
Docker Desktop şu durumlarda vazgeçilmezdir:
Günlük geliştirme çalışmaları
IDE entegrasyonu
Haftalar veya aylar süren kalıcı projeler
Özel ağlar ve birimler gerektiren kaynak yoğun iş yükleri
Play With Docker ile Başlarken
Artık PWD’nin ihtiyaçlarınız için doğru araç olduğu durumları bildiğinize göre, ilk oturumunuzu başlatmanız için sizi hazırlayalım.
Play with Docker’ı ayarlama
Başlamadan önce bir Docker Hub hesabına ihtiyacınız olacak. Docker Hub’ı ziyaret ederek bir hesap oluşturun. Henüz yoksa, yalnızca bir e-posta ve parola yeterli.
Play with Docker Girişi
Play with Docker web sitesine gidin ve Docker Hub kimlik bilgilerinizle oturum açın. Kimlik doğrulamasından sonra yeşil "Start" düğmesine tıklayarak oturumunuzu başlatın. Saniyeler içinde, PWD tarayıcınızda kalan iki saatlik oturum sürenizi gösteren bir geri sayım sayacıyla birlikte taze bir Alpine Linux ortamı sağlar.
Play with Docker panosunda gezinme
PWD arayüzü basit ama güçlüdür. Yeni Alpine Linux örnekleri oluşturmak için "Add New Instance"a tıklayın. Çok düğümlü kümeleri test etmek için aynı anda en fazla 5 örnek çalıştırabilirsiniz. Ana terminal penceresi, önceden yüklü Docker ile tam bir bash kabuğu sağlar.
Geri sayım sayacını gözünüzden kaçırmayın. Sıfıra ulaştığında, oturumu uzatmanın bir yolu olmadan her şey silinir.
Play with Docker’da Pano
İpucu: Standart Ctrl+V yapıştırma işlemleri PWD’de çoğu zaman çalışmaz. Kopyalamak için Ctrl+Insert, yapıştırmak için Shift+Insert kullanın. Sinir bozukluğunu önlemek için yapıştırma kısayolunuzu hemen test edin.
Play With Docker’da Temel İşlemler
PWD ortamınız hazır ve arayüze aşina olduğunuza göre, ilk konteynerinizi çalıştırmanın ve temel Docker komutlarını öğrenmenin zamanı geldi.
İlk konteynerinizi çalıştırma
Görüntüleri ve konteynerleri anlamak için bir Nginx web sunucusu dağıtalım. Bu komutu çalıştırın:
Şu olur: docker run yeni bir konteyner oluşturur ve başlatır. -d bayrağı, konteyneri arka planda (detached) çalıştırır. -p 80:80, ana makinedeki 80 numaralı portu konteynerdeki 80 numaralı porta eşler. nginx Docker imajının adıdır.
Docker imajını bir tarif olarak düşünün. Bu durumda Nginx tarifi. Çalışan konteyner, o tariften pişirdiğiniz kektir. Tek bir tariften (imaj) birden çok kek (konteyner) yapabilirsiniz.
Konteynerinizi yönetmek için:
dockerps# Çalışan konteynerleri gösterirdocker stop <id># Bir konteyneri durdururdockerrm<id># Durdurulmuş bir konteyneri kaldırırAltyapı:
Konteyner kimliğinin yalnızca ilk birkaç karakterine ihtiyacınız var. Docker hangisini kastettiğinizi anlar.
Play with Docker’da port yönlendirme
PWD’de port yönlendirme, yerel port yönlendirmeden farklı çalışır. Bir portu açtığınızda, PWD erişim için otomatik olarak dinamik bir URL oluşturur.
Nginx konteynerini çalıştırdıktan sonra, PWD ekranınızın üst kısmındaki IP alanına bakın. "Open Port"a tıklayın ve “80” ekleyin. http://ip<numbers>-<session-id>.direct.labs.play-with-docker.com gibi benzersiz bir URL ile yeni bir tarayıcı sekmesi açılacaktır.
Play with Docker’da Port Yönlendirme
Burada localhost’a erişmiyorsunuz. PWD, internet trafiğini belirli konteynerinize yönlendiren özel URL’ler oluşturur. Bu, çalışmanızı gerçek zamanlı olarak göstermek için bu URL’leri meslektaşlarınızla paylaşabileceğiniz anlamına gelir.
Hata ayıklama ve inceleme
İşler beklediğiniz gibi gitmezse, konteynerlerinizin içinde neler olup bittiğini araştırmak için araçlara ihtiyacınız olacak.
Hata ayıklarken, şu komutlar konteynerlerin içine göz atmanıza yardımcı olur:
80 numaralı port bağlantısına tıkladıktan sonra docker logs komutunu çalıştırın; tarayıcı isteğinizi Nginx erişim günlüklerinde göreceksiniz. Bu gerçek zamanlı geri bildirim, istek akışını anlamanıza yardımcı olur.
Play with Docker’da Docker Günlükleri
Bu temel işlemleri öğrendiğinize göre, hazır imajları çalıştırmanın ötesine geçip kendi özel konteynerlerinizi oluşturmaya hazırsınız.
Play With Docker’da İmaj Oluşturma ve Verileri Yönetme
Artık temel konteyner işlemlerini ele aldığığımıza göre, kendi özel imajlarınızı oluşturmaya dalalım. Docker’ın gerçek gücü burada ortaya çıkar: Uygulamalarınızı tüm bağımlılıklarıyla birlikte taşınabilir ve tekrarlanabilir imajlara paketleme becerisi.
Basit bir Dockerfile yazma
Dockerfile’lar, metin tabanlı talimatlarla imaj oluşturmayı otomatikleştirir. Her seferinde bir konteyneri elle yapılandırmak yerine, bir kez Dockerfile yazarsınız, gerisini Docker halleder.
Son olarak Dockerfile’ı derleyip çalıştırın. -t bayrağı imajınızı adlandırır (veya “tag”ler), böylece başvurması kolay olur. ., Docker’a mevcut dizini derleme bağlamı olarak kullanmasını söyler; Dockerfile’ı ve ihtiyaç duyduğu dosyaları burada bulur. Docker’ın her talimatı nasıl yürüttüğünü ve katman kimliklerini çıktıladığını göreceksiniz.
docker build -t my-first-image .docker run my-first-imageAltyapı:
Play with Docker’da Docker imajı oluşturma
“Hello DataCamp” çıktısını göreceksiniz. Tebrikler! İlk özel imajınızı oluşturdunuz. Bu basit örnek temel iş akışını gösterir: talimatları yazın, imajı oluşturun, bir konteyner çalıştırın.
Ancak ele almamız gereken kritik bir konu var: Konteynerler durduğunda veya silindiğinde verilerinize ne olur?
Play with Docker’da veri kalıcılığı
Veri kalıcılığını anlamak, konteynerlerle etkin biçimde çalışmanın temelidir. Varsayılan olarak konteynerler doğası gereği geçicidir: Bir konteyneri sildiğinizde, yapılan her dosya değişikliği, her veritabanı kaydı, her günlük girdisi anında yok olur.
Bu sorunlu görünebilir, ancak aslında Docker’ın kilit özelliklerinden biridir. Geçici konteynerler, atılabilir oldukları için değiştirmesi, ölçeklemesi ve hata ayıklaması kolaydır.
Peki saklamanız gereken veriler ne olacak? İşte burada Docker volume’ları devreye girer. Volume, konteyner dosya sisteminin dışında var olan ve Docker tarafından yönetilen bir depolama alanıdır. Bunu farklı konteynerlere takıp çıkarabileceğiniz bir USB sürücü gibi düşünün. Bir konteynerden çıkarıp başka birine taksanız bile veriler sürücüde kalır.
Docker Konteyner vs. Docker Volume
Bunun pratikte nasıl çalıştığını göstereyim. Bir volume oluşturup kullanın:
docker volume create mydata
docker run -it-v mydata:/data alpine shAltyapı:
-v mydata:/data bayrağı, mydata volume’unu konteyner içinde /data yoluna bağlar. /dataya yazılan her şey aslında volume’da depolanır. Bir test dosyası oluşturun:
echo"This data persists!"> /data/important.txt
echo"Container ID: $(hostname)">> /data/important.txt
exitAltyapı:
Konteyner durdu ve yok oldu. Şimdi aynı volume ile tamamen yeni bir konteyner başlatın:
docker run -it-v mydata:/data alpine shcat /data/important.txtAltyapı:
Docker Volume’lar ile Veri Kalıcılığı
Dosya hâlâ orada ve eski konteynerin kimliği de içinde! Veri, konteynerin geçici dosya sisteminde değil volume’da depolandığı için hayatta kaldı. Aynı volume’u ihtiyaç duyduğunuz kadar çok konteynere bağlayabilir ve hepsi aynı verileri görebilir.
Ancak PWD kullanıcıları için kritik bir nokta: iki saatlik oturumunuz sona erdiğinde volume’lar bile silinir. Volume’lar bir oturum içinde kalıcıdır, ancak oturumlar arasında kalıcı değildir.
Veri kalıcılığını anlamak çok önemlidir, ancak çoğu gerçek uygulama birden çok birbiriyle bağlantılı hizmet içerir. İşte burada Docker Compose vazgeçilmez hale gelir.
Docker Compose ile Konteyner Orkestrasyonu
Tek tek konteynerleri öğrendiğinize göre, gerçek dünya uygulamalarının nadiren tek bir hizmetten oluştuğunu ele almanın zamanı geldi. Modern uygulamalar genellikle çok sayıda bileşen içerir: bir web ön ucu, bir API arka ucu, bir veritabanı, bir önbellek ve belki bir mesaj kuyruğu. Tüm bu parçaları ayrı ayrı docker run komutlarıyla yönetmek koordinasyon kabusuna dönüşür.
Neden Docker Compose kullanılır?
Şu senaryoyu hayal edin: Bir web sunucusuna, bir PostgreSQL veritabanına ve bir Redis önbelleğine ihtiyaç duyan bir uygulamayı dağıtıyorsunuz.
Compose olmadan, ağ, port yönlendirme, volume bağlama ve ortam değişkenleri için sayısız bayrağı olan üç ayrı docker run komutuna ihtiyacınız olurdu. Başlatma sırasını (önce veritabanı, sonra önbellek, ardından web sunucusu) tam olarak hatırlamanız gerekir ve bir şeyler ters giderse, hata ayıklama birden çok terminal penceresinde ipucu avına döner.
Docker Compose bu orkestrasyon zorluğunu zarifçe çözer. Birden çok komutla jonglörlük yapmak yerine, tüm çok konteynerli uygulamanızı docker-compose.yml adlı tek bir YAML dosyasında tanımlarsınız. Bu dosya, uygulamanızın mimarisi için tek doğru kaynak haline gelir; tüm servisleri, yapılandırmalarını, birbirlerine nasıl bağlandıklarını ve hangi volume’ları kullandıklarını açıklar.
Compose ile tüm yığınınızı dağıtmak tek bir komut haline gelir: docker-compose up. Kapatmak da aynı derecede basittir: docker-compose down. Bu deklaratif yaklaşım, altyapıyı tekrarlanabilir kılar. Herkes deponuzu klonlayabilir ve işletim sistemi veya yerel yapılandırmasından bağımsız olarak tek komutla tüm uygulama yığınınızı çalıştırabilir.
Docker Compose dosya yapısı
Basit bir Docker Compose dosyası oluşturalım.
Önce terminalde touch docker-compose.yml ile dosyayı oluşturun, ardından PWD’de "Editor"a tıklayın ve dosyaya şunları ekleyin:
Services bölümü her konteyneri tanımlar. Servis adları (ör. web ve redis), Docker ağında ana makine adlarına dönüşür. image anahtarı hangi Docker Hub imajının kullanılacağını belirtir. Dağıtın:
Her iki konteyner de şimdi çalıştığına göre, aklınıza şu gelebilir: birbirlerini nasıl bulup iletişim kuruyorlar?
Ağ oluşturma ve servis keşfi
Compose, tüm servisleri birbirine bağlayan bir ağ oluşturur ve servis keşfini etkinleştirir. Konteynerler, ana makine adı olarak servis adlarını kullanarak iletişim kurar.
Bunu web konteynerine girip Redis’i ping’leyerek test edin:
docker-composeexec web shapt-get update &&apt-getinstall-y iputils-ping
ping redisAltyapı:
Başarılı ping’ler konteynerlerin iletişim kurabildiğini kanıtlar! web konteyneri, IP adresini bilmeden redis’e ulaşır. Docker’ın dahili DNS’i servis adlarını otomatik olarak doğru konteyner adreslerine çözümler.
Play With Docker’da Sorun Giderme ve En İyi Uygulamalar
PWD ile daha fazla çalıştıkça yaygın zorluklarla karşılaşacaksınız. İşte bunları etkin şekilde nasıl ele alacağınız.
“Session expired”
İki saatlik sınır PWD’nin en büyük kısıtıdır. Sayaç sıfıra ulaştığında, örnekler ve veriler dahil her şey kaybolur. PWD’ye yapıştırmadan önce kodunuzu yerelde hazırlayarak verimli çalışın ve yedekler alın. Özel imajları, oturumunuz bitmeden Docker Hub’a gönderin:
docker tag my-first-image yourusername/my-first-image
docker push yourusername/my-first-imageAltyapı:
Tek bir oturumda karmaşık sistemler kurmak yerine oturum başına tek bir kavrama odaklanın. Öğrenme için iki saat cömerttir, bu yüzden işi ayrı parçalara bölün.
80/443 port hataları
Konteynerlere localhost üzerinden eriştiğiniz yerel Docker’ın aksine, PWD dinamik URL’ler kullanır. localhost:80 denemeyin. Bunun yerine PWD arayüzünün üst kısmındaki port rozetine tıklayın. Rozetler hemen görünmezse birkaç saniye bekleyin veya tarayıcınızı yenileyin.
En iyi uygulamalar
Bunların yanı sıra, şu en iyi uygulamaları aklınızda tutun:
Bant genişliğinden tasarruf için Alpine gibi küçük temel imajlar kullanın (5 MB, Ubuntu’nun 100+ MB’ına karşı)
Gerekli olmadıkça konteynerleri root olarak çalıştırmayın
PWD herkese açık bir platform olduğundan gerçek kimlik bilgilerini asla kullanmayın
Seçimlerinizi açıklayan yorumlarla net Dockerfile’lar yazın
İmajları tek bir sorumluluğa odaklı tutun.
Sonuç
Bu öğreticide kayda değer bir yol kat ettiniz. Play with Docker’ın ne olduğunu, onu Docker Desktop’a karşı ne zaman kullanmanız gerektiğini öğrendiniz; ilk konteynerinizi çalıştırdınız, port yönlendirmeyi anladınız ve hata ayıklama komutlarını kullandınız. Dockerfile’larla özel imajlar oluşturduk, volume’larla veri kalıcılığını keşfettik ve Docker Compose ile çok konteynerli uygulamaları yönettik.
Play with Docker, yerel kurulum taahhüdü olmadan Docker’ın temellerini öğrenmek için risksiz bir ortam sağlar. Uyguladığınız beceriler: Dockerfile yazma, konteyner yönetimi ve ağ yapılandırma, gerçek dünya Docker kullanımına doğrudan aktarılır.
Artık bu temelleri anladığınıza göre Docker Desktop’ı yerelde kurun. PWD öğrenme ve hızlı testler için mükemmel olsa da, ciddi geliştirme yalnızca yerel kurulumun sağladığı kalıcılık, performans ve araç entegrasyonunu gerektirir. PWD’de öğrendiğiniz her şey doğrudan Docker Desktop’a uygulanır: komutlar aynıdır ve kavramlar da aynıdır.
Bu temel üzerine inşa etmeye devam edin. Farklı temel imajlarla deney yapın, Docker’ın ağ yeteneklerini keşfedin ve üretime hazır Dockerfile’lar yazma pratiği yapın. Öğrenmeye, denemeye ve inşa etmeye devam edin.
Play with Docker’ı kullanmak için Docker’ı kurmam gerekir mi?⌄
Kurulum gerekmez! Play with Docker tamamen web tarayıcınızda çalışır. Oturum açmak için yalnızca ücretsiz bir Docker Hub hesabına ihtiyacınız var. PWD, internet erişimi olan herhangi bir cihazdan erişilebilen, Docker’ın önceden kurulu olduğu eksiksiz bir Alpine Linux ortamı sağlar.
Play with Docker oturumları ne kadar sürer?⌄
Her Play with Docker oturumu tam olarak 2 saat sürer ve ardından her şey otomatik olarak silinir. Oturum başına en fazla 5 örnek oluşturabilirsiniz. Özel imajları oturum sonrasına taşımak için sayaç dolmadan önce Docker Hub’a gönderin.
Play with Docker dışından konteynerleştirilmiş uygulamalarıma erişebilir miyim?⌄
Evet! Bir portu açığa çıkardığınızda Play with Docker bunun için otomatik olarak benzersiz bir URL üretir. Uygulamalarınıza erişmek için "OPEN PORT" düğmesine tıklayın. Bu URL’leri, gerçek zamanlı iş birliği için meslektaşlarınızla paylaşabilirsiniz.
Play with Docker ile Docker Desktop arasındaki fark nedir?⌄
Play with Docker tarayıcı tabanlıdır, ücretsizdir ve kurulum gerektirmez; öğrenme veya hızlı testler için idealdir, ancak oturumlar yalnızca 2 saat sürer. Docker Desktop makinenizde yerel olarak çalışır ve kalıcı depolama, daha iyi performans ve IDE entegrasyonu sağlar; günlük geliştirme çalışmaları ve uzun vadeli projeler için idealdir.
Play with Docker’da Docker Compose kullanabilir miyim?⌄
Kesinlikle! Docker Compose PWD’de önceden kurulu gelir. Yerleşik düzenleyiciyi kullanarak docker-compose.yml dosyaları oluşturabilir ve docker-compose up ile çok konteynerli uygulamalar çalıştırabilirsiniz. PWD, servisler arasındaki ağ iletişimini otomatik olarak yönetir; bu da mikro servis mimarilerini test etmek veya konteyner orkestrasyonunu öğrenmek için idealdir.
Martin Data Solutions’ın Kurucusu ve Serbest Çalışan Veri Bilimci, ML ve AI Mühendisi olarak Regresyon, Sınıflandırma, NLP, LLM, RAG, Sinir Ağları, Topluluk Yöntemleri ve Bilgisayarlı Görü alanlarında geniş bir portföy sunuyorum.
Veri temizleme, analitik, modelleme ve AWS ile GCP’de dağıtımı kapsayan uçtan uca birçok ML projesini başarıyla geliştirerek etkili ve ölçeklenebilir çözümler sundum.
Çeşitli sektör kullanım senaryoları için Streamlit ve Gradio ile etkileşimli ve ölçeklenebilir web uygulamaları geliştirdim.
Veri bilimi ve analitik alanlarında öğrencilere eğitim verdim ve mentorluk yaparak kişiselleştirilmiş öğrenme yaklaşımlarıyla mesleki gelişimlerini destekledim.
Kurumsal gereksinimlere uyarlanmış geri getirme destekli üretim (RAG) uygulamaları için kurs içerikleri tasarladım.
MLOps, vektör veritabanları ve LLM’ler gibi konuları ele alan, yüksek etki yaratan yapay zeka ve ML teknik blogları yazdım ve önemli etkileşim sağladım.
Üstlendiğim her projede CI/CD, kod linting’i, biçimlendirme, model izleme, deney takibi ve sağlam hata yönetimi gibi yazılım mühendisliği ve DevOps’taki güncel uygulamaları hayata geçiririm. Tam kapsamlı çözümler sunmaya; veri içgörülerini, işletmelerin büyümesine yardımcı olan ve veri bilimi, makine öğrenimi ile yapay zekâdan en iyi şekilde yararlanan pratik stratejilere dönüştürmeye kararlıyım.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Docker'a giriş yapın ve veri uzmanlarının araç setinde Docker'ın önemini keşfedin. Docker konteynerleri, görüntüler ve daha fazlası hakkında bilgi edinin.
Dizüstü bilgisayarınıza tek bir bayt bile kurmadan saniyeler içinde çok düğümlü bir Docker Swarm kümesi oluşturduğunuzu hayal edin. Yıllarca, geliştiricilerin Docker kurulumlarıyla boğuştuklarına, sistem bağımlılıklarıyla uğraştıklarına, izin hatalarını giderdiklerine ve yaşlanan donanımlarının kaynak gereksinimlerini karşılayıp karşılamayacağını dert ettiklerine tanık oldum.
Sonra Play with Docker’ı keşfettim ve bu, konteynerleştirmeyi öğretme ve öğrenme biçimimi tamamen dönüştürdü.
Play with Docker, Docker konteynerlerini oluşturup çalıştırabileceğiniz Alpine Linux sanal makinelerine anında erişim sağlayan, tarayıcı tabanlı ücretsiz bir kum havuzudur. Konteynerleştirme yolculuğuna yeni başlayan bir veri uzmanı olun ya da yeni bir Docker özelliğini hızla denemek isteyen deneyimli bir profesyonel, PWD erişilebilir ve risksiz bir ortam sunar.
Bu kapsamlı öğreticide, ilk konteynerinizden Docker Compose ile çok konteynerli orkestrasyona kadar her şeyi adım adım göstereceğim. Sonunda, tarayıcınızdan çıkmadan çalışan konteynerleştirilmiş bir web sunucunuz olacak.
Docker ve kavramlarına yeniyseniz, Introduction to Docker kursumuzu almanızı veya Containerization and Virtualization Concepts içeriğini incelemenizi öneririm.
Play With Docker Nedir?
Play with Docker (PWD), doğrudan web tarayıcınızda çalışan, ücretsiz ve geçici bir Docker oyun alanıdır. Docker Captain’ları Marcos Liljedhal ve Jonathan Leibiusky tarafından oluşturulan PWD, bir hackathon projesinden doğmuş ve kısa sürede Docker topluluğu için vazgeçilmez bir araç haline gelmiştir.
PWD’nin temelinde Docker-in-Docker (dind) teknolojisi vardır; burada Docker konteynerleri başka Docker konteynerlerinin içinde çalışır. Bu iç içe mimari kulağa karmaşık gelebilir, ancak yerel makinenizi etkilemeden, çok düğümlü Swarm kümeleri gibi gelişmiş özellikler de dahil olmak üzere tam Docker işlevselliğini denemenizi sağlar.
Platform tüm karmaşıklığı perde arkasında yönetir ve size temiz bir terminal arayüzü sunar. Konteyner iş yükleri için mükemmel, hafif Linux dağıtımları olan Alpine Linux örnekleri sağlar. Alpine bilerek minimaldir; temel imaj boyutu Ubuntu’nun 100+ MB’ına kıyasla yalnızca yaklaşık 5 MB’tır.
Bu verimlilik, daha hızlı indirmeler ve daha çabuk başlatma süreleri anlamına gelir. Her örnek, bir kabuk, Docker CLI ve Docker Compose dahil olmak üzere yerel bir kurulumda sahip olacağınızla aynı komut satırı gücünü sunan eksiksiz bir terminal deneyimiyle gelir.
PWD, yeni başlayanlar için kurulum engellerini ortadan kaldırırken, gelişmiş kullanıcılar için Docker Swarm gibi orkestrasyon özelliklerini test edebilecekleri bir alan sağlar. Sanal makineleri veya bulut örneklerini yönetme yükü olmadan çok düğümlü kümeler oluşturabilir, ağ yapılandırmalarını deneyebilir ve konteyner zamanlamasını test edebilirsiniz.
Play With Docker ve Docker Desktop Karşılaştırması
PWD’nin sunduklarını netleştirdiğimize göre, muhtemelen ne zaman onu kullanmanız gerektiğini ve ne zaman Docker Desktop’ı yerel olarak kurmanızın daha iyi olacağını merak ediyorsunuz. Play with Docker ile Docker Desktop’ı ne zaman kullanmanız gerektiğini anlamak size zaman ve hayal kırıklığından tasarruf sağlar.
Play with Docker, kurulum gerektirmeyen anında tarayıcı erişimi, sıfır yerel kaynak tüketimi ve tamamen ücretsiz olarak tam Docker Swarm desteği sunar. Ancak oturumlar yalnızca iki saat sürer ve ardından her şey silinir; performans sınırlıdır ve oturum süresi dolduktan sonra kalıcı depolama yoktur.
Not: PWD dokümantasyonu oturum süresini dört saat olarak gösteriyor, ancak ben test ettiğimde aslında yalnızca iki saatti. Görünüşe göre dokümantasyon güncel değil.
Docker Desktop, makinenizde yerel olarak çalışır; kalıcı depolama, daha iyi performans ve Visual Studio Code gibi geliştirme araçlarıyla sorunsuz entegrasyon sağlar. Oturum süresi aşımı olmadan uzun vadeli projeler üzerinde çalışabilirsiniz.
Özellik
Play with Docker
Docker Desktop
Kurulum
Sıfır kurulum, tarayıcı tabanlı
Kurulum gerekir
Oturum süresi
2 saat sınırı
Süre sınırı yok
Performans
Paylaşılan kaynaklar, sınırlı
Tam sistem kaynakları
Depolama
Geçici, oturumdan sonra silinir
Yerel diskte kalıcı
Maliyet
Ücretsiz
Kişisel kullanım için ücretsiz; kurumsal için ücretli
Sistem etkisi
Yok (bulut tabanlı)
Yerel CPU ve belleği kullanır
Swarm desteği
Yerleşik destek
Ek kurulum gerekir
IDE entegrasyonu
Yok
Mükemmel (VS Code, vb.)
Play With Docker ne zaman kullanılmalı
Play with Docker şu senaryolarda parlıyor:
Docker Desktop ne zaman kullanılmalı
Docker Desktop şu durumlarda vazgeçilmezdir:
Play With Docker ile Başlarken
Artık PWD’nin ihtiyaçlarınız için doğru araç olduğu durumları bildiğinize göre, ilk oturumunuzu başlatmanız için sizi hazırlayalım.
Play with Docker’ı ayarlama
Başlamadan önce bir Docker Hub hesabına ihtiyacınız olacak. Docker Hub’ı ziyaret ederek bir hesap oluşturun. Henüz yoksa, yalnızca bir e-posta ve parola yeterli.
Play with Docker Girişi
Play with Docker web sitesine gidin ve Docker Hub kimlik bilgilerinizle oturum açın. Kimlik doğrulamasından sonra yeşil "Start" düğmesine tıklayarak oturumunuzu başlatın. Saniyeler içinde, PWD tarayıcınızda kalan iki saatlik oturum sürenizi gösteren bir geri sayım sayacıyla birlikte taze bir Alpine Linux ortamı sağlar.
Play with Docker panosunda gezinme
PWD arayüzü basit ama güçlüdür. Yeni Alpine Linux örnekleri oluşturmak için "Add New Instance"a tıklayın. Çok düğümlü kümeleri test etmek için aynı anda en fazla 5 örnek çalıştırabilirsiniz. Ana terminal penceresi, önceden yüklü Docker ile tam bir bash kabuğu sağlar.
Geri sayım sayacını gözünüzden kaçırmayın. Sıfıra ulaştığında, oturumu uzatmanın bir yolu olmadan her şey silinir.
Play with Docker’da Pano
İpucu: Standart
Ctrl+Vyapıştırma işlemleri PWD’de çoğu zaman çalışmaz. Kopyalamak içinCtrl+Insert, yapıştırmak içinShift+Insertkullanın. Sinir bozukluğunu önlemek için yapıştırma kısayolunuzu hemen test edin.Play With Docker’da Temel İşlemler
PWD ortamınız hazır ve arayüze aşina olduğunuza göre, ilk konteynerinizi çalıştırmanın ve temel Docker komutlarını öğrenmenin zamanı geldi.
İlk konteynerinizi çalıştırma
Görüntüleri ve konteynerleri anlamak için bir Nginx web sunucusu dağıtalım. Bu komutu çalıştırın:
Şu olur:
docker runyeni bir konteyner oluşturur ve başlatır.-dbayrağı, konteyneri arka planda (detached) çalıştırır.-p 80:80, ana makinedeki 80 numaralı portu konteynerdeki 80 numaralı porta eşler.nginxDocker imajının adıdır.Docker imajını bir tarif olarak düşünün. Bu durumda Nginx tarifi. Çalışan konteyner, o tariften pişirdiğiniz kektir. Tek bir tariften (imaj) birden çok kek (konteyner) yapabilirsiniz.
Konteynerinizi yönetmek için:
Konteyner kimliğinin yalnızca ilk birkaç karakterine ihtiyacınız var. Docker hangisini kastettiğinizi anlar.
Play with Docker’da port yönlendirme
PWD’de port yönlendirme, yerel port yönlendirmeden farklı çalışır. Bir portu açtığınızda, PWD erişim için otomatik olarak dinamik bir URL oluşturur.
Nginx konteynerini çalıştırdıktan sonra, PWD ekranınızın üst kısmındaki IP alanına bakın. "Open Port"a tıklayın ve “80” ekleyin.
http://ip<numbers>-<session-id>.direct.labs.play-with-docker.comgibi benzersiz bir URL ile yeni bir tarayıcı sekmesi açılacaktır.Play with Docker’da Port Yönlendirme
Burada localhost’a erişmiyorsunuz. PWD, internet trafiğini belirli konteynerinize yönlendiren özel URL’ler oluşturur. Bu, çalışmanızı gerçek zamanlı olarak göstermek için bu URL’leri meslektaşlarınızla paylaşabileceğiniz anlamına gelir.
Hata ayıklama ve inceleme
İşler beklediğiniz gibi gitmezse, konteynerlerinizin içinde neler olup bittiğini araştırmak için araçlara ihtiyacınız olacak.
Hata ayıklarken, şu komutlar konteynerlerin içine göz atmanıza yardımcı olur:
80 numaralı port bağlantısına tıkladıktan sonra
docker logskomutunu çalıştırın; tarayıcı isteğinizi Nginx erişim günlüklerinde göreceksiniz. Bu gerçek zamanlı geri bildirim, istek akışını anlamanıza yardımcı olur.Play with Docker’da Docker Günlükleri
Bu temel işlemleri öğrendiğinize göre, hazır imajları çalıştırmanın ötesine geçip kendi özel konteynerlerinizi oluşturmaya hazırsınız.
Play With Docker’da İmaj Oluşturma ve Verileri Yönetme
Artık temel konteyner işlemlerini ele aldığığımıza göre, kendi özel imajlarınızı oluşturmaya dalalım. Docker’ın gerçek gücü burada ortaya çıkar: Uygulamalarınızı tüm bağımlılıklarıyla birlikte taşınabilir ve tekrarlanabilir imajlara paketleme becerisi.
Basit bir Dockerfile yazma
Dockerfile’lar, metin tabanlı talimatlarla imaj oluşturmayı otomatikleştirir. Her seferinde bir konteyneri elle yapılandırmak yerine, bir kez Dockerfile yazarsınız, gerisini Docker halleder.
Play with Docker’da Dockerfile Oluşturma
Önce terminalde Dockerfile’ı oluşturun:
Ardından PWD’de "Editor" düğmesine tıklayın ve basit bir imaj ekleyin:
Son olarak Dockerfile’ı derleyip çalıştırın.
-tbayrağı imajınızı adlandırır (veya “tag”ler), böylece başvurması kolay olur.., Docker’a mevcut dizini derleme bağlamı olarak kullanmasını söyler; Dockerfile’ı ve ihtiyaç duyduğu dosyaları burada bulur. Docker’ın her talimatı nasıl yürüttüğünü ve katman kimliklerini çıktıladığını göreceksiniz.Play with Docker’da Docker imajı oluşturma
“Hello DataCamp” çıktısını göreceksiniz. Tebrikler! İlk özel imajınızı oluşturdunuz. Bu basit örnek temel iş akışını gösterir: talimatları yazın, imajı oluşturun, bir konteyner çalıştırın.
Ancak ele almamız gereken kritik bir konu var: Konteynerler durduğunda veya silindiğinde verilerinize ne olur?
Play with Docker’da veri kalıcılığı
Veri kalıcılığını anlamak, konteynerlerle etkin biçimde çalışmanın temelidir. Varsayılan olarak konteynerler doğası gereği geçicidir: Bir konteyneri sildiğinizde, yapılan her dosya değişikliği, her veritabanı kaydı, her günlük girdisi anında yok olur.
Bu sorunlu görünebilir, ancak aslında Docker’ın kilit özelliklerinden biridir. Geçici konteynerler, atılabilir oldukları için değiştirmesi, ölçeklemesi ve hata ayıklaması kolaydır.
Peki saklamanız gereken veriler ne olacak? İşte burada Docker volume’ları devreye girer. Volume, konteyner dosya sisteminin dışında var olan ve Docker tarafından yönetilen bir depolama alanıdır. Bunu farklı konteynerlere takıp çıkarabileceğiniz bir USB sürücü gibi düşünün. Bir konteynerden çıkarıp başka birine taksanız bile veriler sürücüde kalır.
Docker Konteyner vs. Docker Volume
Bunun pratikte nasıl çalıştığını göstereyim. Bir volume oluşturup kullanın:
-v mydata:/databayrağı,mydatavolume’unu konteyner içinde/datayoluna bağlar./dataya yazılan her şey aslında volume’da depolanır. Bir test dosyası oluşturun:Konteyner durdu ve yok oldu. Şimdi aynı volume ile tamamen yeni bir konteyner başlatın:
Docker Volume’lar ile Veri Kalıcılığı
Dosya hâlâ orada ve eski konteynerin kimliği de içinde! Veri, konteynerin geçici dosya sisteminde değil volume’da depolandığı için hayatta kaldı. Aynı volume’u ihtiyaç duyduğunuz kadar çok konteynere bağlayabilir ve hepsi aynı verileri görebilir.
Ancak PWD kullanıcıları için kritik bir nokta: iki saatlik oturumunuz sona erdiğinde volume’lar bile silinir. Volume’lar bir oturum içinde kalıcıdır, ancak oturumlar arasında kalıcı değildir.
Veri kalıcılığını anlamak çok önemlidir, ancak çoğu gerçek uygulama birden çok birbiriyle bağlantılı hizmet içerir. İşte burada Docker Compose vazgeçilmez hale gelir.
Docker Compose ile Konteyner Orkestrasyonu
Tek tek konteynerleri öğrendiğinize göre, gerçek dünya uygulamalarının nadiren tek bir hizmetten oluştuğunu ele almanın zamanı geldi. Modern uygulamalar genellikle çok sayıda bileşen içerir: bir web ön ucu, bir API arka ucu, bir veritabanı, bir önbellek ve belki bir mesaj kuyruğu. Tüm bu parçaları ayrı ayrı
docker runkomutlarıyla yönetmek koordinasyon kabusuna dönüşür.Neden Docker Compose kullanılır?
Şu senaryoyu hayal edin: Bir web sunucusuna, bir PostgreSQL veritabanına ve bir Redis önbelleğine ihtiyaç duyan bir uygulamayı dağıtıyorsunuz.
Compose olmadan, ağ, port yönlendirme, volume bağlama ve ortam değişkenleri için sayısız bayrağı olan üç ayrı
docker runkomutuna ihtiyacınız olurdu. Başlatma sırasını (önce veritabanı, sonra önbellek, ardından web sunucusu) tam olarak hatırlamanız gerekir ve bir şeyler ters giderse, hata ayıklama birden çok terminal penceresinde ipucu avına döner.Docker Compose bu orkestrasyon zorluğunu zarifçe çözer. Birden çok komutla jonglörlük yapmak yerine, tüm çok konteynerli uygulamanızı
docker-compose.ymladlı tek bir YAML dosyasında tanımlarsınız. Bu dosya, uygulamanızın mimarisi için tek doğru kaynak haline gelir; tüm servisleri, yapılandırmalarını, birbirlerine nasıl bağlandıklarını ve hangi volume’ları kullandıklarını açıklar.Compose ile tüm yığınınızı dağıtmak tek bir komut haline gelir:
docker-compose up. Kapatmak da aynı derecede basittir:docker-compose down. Bu deklaratif yaklaşım, altyapıyı tekrarlanabilir kılar. Herkes deponuzu klonlayabilir ve işletim sistemi veya yerel yapılandırmasından bağımsız olarak tek komutla tüm uygulama yığınınızı çalıştırabilir.Docker Compose dosya yapısı
Basit bir Docker Compose dosyası oluşturalım.
Önce terminalde
touch docker-compose.ymlile dosyayı oluşturun, ardından PWD’de "Editor"a tıklayın ve dosyaya şunları ekleyin:Services bölümü her konteyneri tanımlar. Servis adları (ör. web ve redis), Docker ağında ana makine adlarına dönüşür. image anahtarı hangi Docker Hub imajının kullanılacağını belirtir. Dağıtın:
Her iki konteyner de şimdi çalıştığına göre, aklınıza şu gelebilir: birbirlerini nasıl bulup iletişim kuruyorlar?
Ağ oluşturma ve servis keşfi
Compose, tüm servisleri birbirine bağlayan bir ağ oluşturur ve servis keşfini etkinleştirir. Konteynerler, ana makine adı olarak servis adlarını kullanarak iletişim kurar.
Bunu web konteynerine girip Redis’i ping’leyerek test edin:
Başarılı ping’ler konteynerlerin iletişim kurabildiğini kanıtlar!
webkonteyneri, IP adresini bilmedenredis’e ulaşır. Docker’ın dahili DNS’i servis adlarını otomatik olarak doğru konteyner adreslerine çözümler.Play With Docker’da Sorun Giderme ve En İyi Uygulamalar
PWD ile daha fazla çalıştıkça yaygın zorluklarla karşılaşacaksınız. İşte bunları etkin şekilde nasıl ele alacağınız.
“Session expired”
İki saatlik sınır PWD’nin en büyük kısıtıdır. Sayaç sıfıra ulaştığında, örnekler ve veriler dahil her şey kaybolur. PWD’ye yapıştırmadan önce kodunuzu yerelde hazırlayarak verimli çalışın ve yedekler alın. Özel imajları, oturumunuz bitmeden Docker Hub’a gönderin:
Tek bir oturumda karmaşık sistemler kurmak yerine oturum başına tek bir kavrama odaklanın. Öğrenme için iki saat cömerttir, bu yüzden işi ayrı parçalara bölün.
80/443 port hataları
Konteynerlere localhost üzerinden eriştiğiniz yerel Docker’ın aksine, PWD dinamik URL’ler kullanır.
localhost:80denemeyin. Bunun yerine PWD arayüzünün üst kısmındaki port rozetine tıklayın. Rozetler hemen görünmezse birkaç saniye bekleyin veya tarayıcınızı yenileyin.En iyi uygulamalar
Bunların yanı sıra, şu en iyi uygulamaları aklınızda tutun:
Sonuç
Bu öğreticide kayda değer bir yol kat ettiniz. Play with Docker’ın ne olduğunu, onu Docker Desktop’a karşı ne zaman kullanmanız gerektiğini öğrendiniz; ilk konteynerinizi çalıştırdınız, port yönlendirmeyi anladınız ve hata ayıklama komutlarını kullandınız. Dockerfile’larla özel imajlar oluşturduk, volume’larla veri kalıcılığını keşfettik ve Docker Compose ile çok konteynerli uygulamaları yönettik.
Play with Docker, yerel kurulum taahhüdü olmadan Docker’ın temellerini öğrenmek için risksiz bir ortam sağlar. Uyguladığınız beceriler: Dockerfile yazma, konteyner yönetimi ve ağ yapılandırma, gerçek dünya Docker kullanımına doğrudan aktarılır.
Artık bu temelleri anladığınıza göre Docker Desktop’ı yerelde kurun. PWD öğrenme ve hızlı testler için mükemmel olsa da, ciddi geliştirme yalnızca yerel kurulumun sağladığı kalıcılık, performans ve araç entegrasyonunu gerektirir. PWD’de öğrendiğiniz her şey doğrudan Docker Desktop’a uygulanır: komutlar aynıdır ve kavramlar da aynıdır.
Bu temel üzerine inşa etmeye devam edin. Farklı temel imajlarla deney yapın, Docker’ın ağ yeteneklerini keşfedin ve üretime hazır Dockerfile’lar yazma pratiği yapın. Öğrenmeye, denemeye ve inşa etmeye devam edin.
Docker ve Kubernetes ile Konteynerleştirme ve Sanallaştırma parçamız, konteynerlerle çalışmak için mükemmel bir temel sunar. Öğrenmeye devam etmek için ayrıca şu kaynaklara göz atmanızı öneririm: