DevOps dünyasına Docker'la atılmak istiyorum ama nereden başlayacağımı kestiremiyorum. Birileri Docker'ı basitçe açıklayabilir mi? Öğrenme yolunda nelere dikkat etmek gerek? Konteynerleşme nasıl işliyor, genel mantık ne? Bir de DevOps'ta Docker dışında neler önemli? Acemi seviyesinde anlaşılır bir şekilde anlatabilir misiniz?
DevOps & Docker'a nasıl başlamalı?
👁️ 7 görüntüleme💬 3 cevap❤️ 0 beğeni
3 Cevap
Docker'ı bir şeye benzetecek olsam, "taşınabilir bir program kutusu" gibi düşünebilirsin. Mesela Python projende gereken tüm ayarlar, kütüphaneler ve hatta Python bile Docker içinde paketleniyor, böylece başka hiçbir şey kurmana gerek kalmadan her yerde çalıştırıyorsun. Temel olarak, ilk yaptığım şey Dockerfile yazmak ve ardından `docker build`, `docker run` komutlarını öğrenmek oldu. DevOps için de Docker dışında Linux komutlarına, CI/CD araçlarına (GitHub Actions, Jenkins) ve belki de Kubernetes'e bir bakmak faydalı olabilir. Nereden başladıysan hep bir adım ötesini hedefle.
Docker'a başlamanın en iyi yolu önce kafandaki "konteyner" denen şeyi temelden anlamak. Basitçe, Docker bir uygulamanı sadece gerekli dosyaları, kütüphaneleri ve bağımlılıklarıyla birlikte tıpkı bir sandık gibi paketliyor. Bu sandık başka bir Linux sisteminde çalıştırıldığında her şey aynı şekilde çalışıyor, ortam sorunları kalmıyor. Ben de ilk başta "acaba nasıl oluyor da herkes aynı sistemi kurmadan kod çalıştırıyor" diye düşünmüştüm. Dockerfile denen bir dosya yazarak uygulamanı "build" ediyorsun, sonra bu imaj (image) Docker Hub'a yada kendi sunucuna gönderebiliyorsun. Benzer mantıkla birden fazla konteyner çalıştırıp aralarında ağ kurarak microservice mimarisine başlamış oldum ki bu DevOps'un da temeli zaten.
DevOps'taki yolunda Docker'dan sonra Kubernetes'e geçiş yapmak en doğal adım, ama önce Docker'ı iyice kafana yerleştir. Ben ilk projelerimde Docker Compose kullanarak birkaç servisi bir arada çalıştırdım, bu bana çok şey kattı. Öğrenirken hatalardan korkma, ben de ilk Dockerfile'ımda "COPY . /app" yazarak tüm dizini kopyaladım ve saçma hatalar aldım. Docker dışında önemli olan şeyler; CI/CD pipeline'ları (Jenkins, GitHub Actions), monitoring (Prometheus, Grafana), log yönetimi (ELK stack) ve tabii ki Linux komutlarına hakim olmak. Aynen benim gibi sen de başta kafan karışabilir ama bir kaç basit projede Docker kullandıktan sonra her şey oturuyor.
Docker'a başlamak gerçekten heyecan verici ama ilk başta kafa karıştırıcı olabiliyor, onda da sen yalnız değilsin kanka. Docker'ı en basit şekilde anlatacak olursam, aslında birer "hafif sanal makine" gibi düşünebilirsin. Mesela Fedora'yı kullanıyorsun, içine başka bir Linux dağıtımı kurmak istiyorsun ama tam bir VM kurmak istemiyorsun. İşte Docker burada devreye giriyor: hızlıca, kaynakları OS seviyesinden izole ederek çalışan bir şeye ihtiyacın olduğunda, Docker imdadına yetişiyor.
Öğrenme sürecinde dikkat etmen gereken ilk şey, konteyner mantığını iyice oturtmak. Nasıl çalıştığını anlamak için `docker run`, `docker ps`, `docker images` komutlarını ezbere bilene kadar uğraşmalısın. Ben de başta şöyle düşünüyordum: "Acaba bu ne işe yarıyor?" diye, ama elimdeki basit komutlar sayesinde uygulamaları çalıştırıp durdurunca ne kadar kullanışlı olduğunu gördüm. Docker dışında DevOps yolunda önem verdiklerim arasında CI/CD araçları (GitHub Actions, GitLab CI), IaC (Terraform, Ansible), monitoring (Prometheus, Grafana) geliyor. Bu alanda ilerledikçe bu teknolojiler de senin için sıradanlaşacak.
Mesela geçen gün bir Python uygulamamı Dockerize ederken, `Dockerfile` yazarken ne kadar pratik olduğunu gördüm. Birkaç satırla uygulamamı her yerde aynı şekilde çalıştırabilmek çok rahatlatıcı. Sen de küçük projelerle başlayıp GitHub'a atarsan, hem pratik yapmış olursun hem de portföyüne ekleyebilirsin. Başlarda basit şeylerle başlamak önemli, mesela bir Nginx container'ı ayağa kaldırmak gibi. Sonrası hep kolaylaşıyor valla.
Tartışmaya katılmak için giriş yap
Giriş Yap