Bloğa geri dön

Ubuntu 20.04 üzerinde Docker Compose Nasıl Kurulur ve Yapılandırılır

Ubuntu 20.04 üzerinde Docker Compose Nasıl Kurulur ve Yapılandırılır

Giriş

Konteynerleştirme son yıllarda yazılım teknolojisi alanında büyük bir ivme kazandı. Bu durum Docker adlı, konteynerler içindeki süreçlerin yönetimini basitleştiren bir konteyner platformuna bağlanabilir.

Konteynerler; yazılımın, fiziksel ana makinede çalışan diğer yazılımlardan yalıtılmış olarak çalışmasını sağlayan hafif, sanallaştırılmış, taşınabilir, yazılımla tanımlanmış standartlaştırılmış ortamlardır. Bu taşınabilirlik özelliği, geliştiricilerin uygulamalarını yalıtılmış hizmetler halinde modüler hale getirmelerine olanak tanır. Dahası, bağımsız olarak sunulabilir ve ölçeklendirmeye olanak tanır.

Bir uygulamayı birden fazla hizmete bölmek kesinlikle harika olsa da, beraberinde birkaç konteyneri yönetme yükünü de getirir. Bunların iletişim kurmasını, aynı anda başlamasını ve kapanmasını sağlamalısınız. Docker Compose adlı araç sayesinde bu kolay bir görev haline gelir. Docker Compose, geliştiricilerin bir YAML dosyasında tanımlanan kuralları kullanarak çoklu konteyner içeren Docker uygulamalarını çalıştırmalarına olanak tanır. YAML dosyası, uygulama hizmetlerinin tanımlarını ve bunların veri birimlerini ve ağları nasıl paylaşabileceklerini içerir. Hizmetleri tanımladıktan sonra, tek bir komutla hepsini başlatabilirsiniz. Bu eğitimde, Ubuntu 20.04 üzerinde Docker Compose'u nasıl kuracağınızı, yapılandıracağınızı ve kullanmaya başlayacağınızı göstereceğiz.

Gereksinimler

Adım 1: Docker Compose Kurulumu

Docker Compose'un en son kararlı sürümünü resmi GitHub deposundan indireceğiz. En son sürümü sürümler (releases) sayfasından öğrenebilirsiniz; bu eğitimin yazıldığı sırada en son sürüm 1.28.5.

İlk olarak, root olmayan sudo kullanıcısı ile Ubuntu sunucunuza giriş yapın ve aşağıdaki komutu girin. Bu komut en son sürümü (1.28.5) indirir ve yürütülebilir dosyayı /usr/local/bin/docker-compose dizinine kaydeder. Bu, docker-compose olarak küresel düzeyde erişilebilir olmasını sağlar:

İndirme işlemi tamamlandıktan sonra, docker-compose komutunun yürütülebilir olması için uygun izinleri ayarlamak üzere aşağıdaki komutu girin:

Şimdi, kurulumun başarılı olduğunu ve aşağıdaki komutu çalıştırarak komutun çağrılabildiğini doğrulayın:

Şöyle bir çıktı almalısınız:

docker compose version

Bu, Docker Compose'un sisteminize başarıyla kurulduğunu onaylar.

Adım 2: docker-compose.yml Dosyasını Oluşturma

Şununla nasıl çalışılacağını anlamanıza yardımcı olmak için: docker-compose.yml, resmi Nginx imajını kullanarak Docker Hub üzerinden bir web sunucusu ortamı yapılandıracağız. Dağıtıldıktan sonra, konteynerden temel bir HTML sayfası sunabilmeliyiz.

Çalışacağımız çalışma dizinimizi ev (home) klasöründe oluşturacağız. Dizini oluşturmak için aşağıdaki komutu girin:

Ardından, dizine gidin:

Dizinin içine girdikten sonra, Nginx ortamı için belge kökü (document root) olacak bir uygulama klasörü oluşturun. Bu klasöre app:

  • Bir HTML sayfası oluşturma

Uygulama klasörü içinde nano metin düzenleyicisini kullanarak index.html dosyasını oluşturalım:

Ardından, dosyaya aşağıdaki HTML kodunu ekleyin:

Dosyayı kaydetmek için CTRL +O, ENTER tuşlarına basın. Ardından CTRL +X ile kapatın. Sırada, proje kök dizinimizde docker-compose.yml dosyasını oluşturacağız.

  • HTML sayfasını docker-compose kullanarak barındırma

Ardından, dosyayı nano editörüyle açmak için aşağıdaki komutu girin:

Bundan sonra, dosyanın içine aşağıdaki kod parçacığını ekleyin:

The docker-compose.yml dosyası, Docker Compose'a hangi yapılandırma sürümünü kullandığımızı bildiren sürüm numarasıyla başlar. Hakkında daha fazla bilgi edinmek için lütfen bu bağlantıyı takip edin: Docker Compose sürüm oluşturma.

Sürüm numarasından sonra, ortamı oluşturan servisleri içeren services bloğumuz var. Bu öğreticide, yalnızca adında tek bir servis belirttik: webserver. webserver servisi nginx:alpine imajını kullanacaktır. Ayrıca port yönlendirmesini de tanımladık: 8000:80. Bunun anlamı, ana makinedeki 8000 portundan gelen tüm isteklerin, Nginx'in çalıştığı 80 portundaki webserver konteynerine yönlendirileceğidir.

Volumes yönergesi, verileri kalıcı hale getirmek için kullanabileceğimiz, ana makine ile konteyner arasında bir paylaşılan birim oluşturmanıza olanak tanır. Bizim yml kod parçacığımızda, yerel app klasörünü konteyner ile paylaşıyoruz. Konteyner içinde bu klasör /usr/share/nginx/html konumuna yerleştirilecektir. Dolayısıyla, Nginx için varsayılan belge kök dizininin üzerine yazmaktadır. Şimdi dosyayı kaydedip kapatabilirsiniz.

Bu noktaya kadar, örnek HTML web sayfanızı ve konteynerleştirilmiş bir web sunucusu ortamı oluşturma talimatlarını içeren docker-compose.yml dosyasını oluşturdunuz. Bir sonraki adımda bu kurulumu nasıl ayağa kaldırabileceğimizi görelim.

Adım 3: Docker Compose Komutunu Çalıştırma

Bu adımda, konteynerleştirilmiş ortamımızı başlatmak için komutu çalıştıracağız. Aşağıda, Docker imajlarının indirme işlemini başlatacak, webserver servisi için bir konteyner oluşturacak ve konteynerleştirilmiş ortamı arka planda başlatacak tek bir komut yer almaktadır:

Docker hızlı ve verimli olacak şekilde tasarlanmıştır, bu nedenle yukarıdaki komutu çalıştırdığınızda, öncelikle yerel sisteminizde tanımlanan imajı kontrol eder. Eğer eksikse, Docker Hub deposundan alacaktır. Şuna benzer bir çıktı göstermelidir:

 compose up

Komutun çalışması bittiğinde, arka planda çalışan konteyner ortamını başlatacaktır. Çalıştığını şu komutu kullanarak doğrulayabilirsiniz:

Benzer bir çıktı almalısınız:

 compose ps

Sunucunuzun IP adresine veya alan adına gidip 8000 portunu eklerseniz, yani sunucu_alan_adi_veya_IP:8000 oluşturduğumuz örnek HTML sayfasını görebilmeniz gerekir:

docker compose webpage

Hatırlarsanız, konteyner ile ana sistem arasında paylaşılan bir birim kurmuştuk. Bu, konteynerdeki dosyaların ana sistemdeki dosyalarla senkronize kalmasını sağlar. Dolayısıyla, index.html dosyasında bir değişiklik yaparsanız, bu değişiklik konteyner ile otomatik olarak senkronize edilir ve tarayıcıda sayfayı yenilediğinizde yansıtılır. Bunu nano editörü ile deneyebilirsiniz. Bir sonraki adımda birkaç komut daha öğrenelim.

Adım 4: Konteyner Ortamlarını Yönetmek İçin Ek Docker Compose Komutları

Tek bir docker-compose-up komutunu kullanarak bir web sayfasını başarıyla dağıttığınıza göre, konteynerleştirilmiş ortamları yönetmede yararlı olabilecek bazı ek komutları görelim.

Logs komutuyla başlayacağız. Uygulama hatalarınızı giderirken günlükler (logs) çok önemli olabilir. İlk olarak, Nginx konteyneri tarafından üretilen günlükleri görüntülemek için aşağıdaki komutu çalıştırın:

İşte günlüklerin örnek bir çıktısı:

 logs

Konteynerlerin durumunu değiştirmeden ortamın yürütülmesini şu komutla duraklatabilirsiniz:

 compose pause

Ardından, yürütmeleri devam ettirmek veya duraklatmayı kaldırmak için şu komutu kullanın:

docker compose unpause

Verilerini yok etmeden konteynerleri durdurmak isteyebilirsiniz. Bunu yapmak için aşağıdaki komutu kullanın:

stop

Konteynerleştirilmiş ortamla ilişkili konteynerleri, ağları ve birimleri yok etmek için şu komutu kullanın:

docker compose down

Yukarıdaki komutun, Docker Compose tarafından ortamı başlatmak için kullanılan temel imajları kaldırmadığını unutmayın. Bu, eşleşen imajlar için yerel makineyi kontrol ettiğinden, ortamınızı başlattığınızda daha hızlı derlemeler yapılmasını sağlar. Temel imajı tamamen kaldırmak istiyorsanız, bunu komutta belirtmeniz gerekir. Örneğimiz için, nginx:alpine imajını şu komutu kullanarak kaldırabiliriz:

 image remove

Son olarak, resmi Docker Compose Komut Satırı Referansı belgelerinde daha fazla komut bulabilirsiniz.

Sonuç

Bu öğreticide, Ubuntu 20.04 üzerine Docker Compose kurdunuz, bir Nginx web sunucusu imajına dayalı konteynerleştirilmiş bir ortam oluşturdunuz ve Docker Compose Komutlarını kullanarak çeşitli hizmetleri nasıl yöneteceğinizi öğrendiniz.

Birden fazla konteynere bağlı gerçek dünyadan dinamik bir uygulamanın nasıl dağıtılacağını öğrenmek istiyorsanız, lütfen Docker Compose ile Laravel, Nginx ve MySQL Dağıtımı başlıklı öğreticimizi okuyun. Ayrıca docker-compose komutlarının tam listesini resmi Docker Compose Belgeleri.

Keyifli Çalışmalar!

author

Pranay Kapgate

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.