Docker

   Bugün sizinle Docker hakkında kısa bir kaç bilgiyi paylaşmak istiyorum. Öncelikle docker alt yapısını oluşturan bileşenlerin kısaca tanımlarına sonrasında da örnek bazı komutlara değineceğim.

Docker : Sistem yöneticisi ve geliştiricilerinin uygulamalarını Linux containerları aracılığıyla geliştirme , dağıtma ve çalıştırmasına olanak veren platforma verilen ad.

Docker Engine : Bilgisayarınızda yüklü docker imajlarının arkaplanda linux vm tarafından çalıştırılabilmesi için gerekli olan bileşen.

Docker Container : Herhangi bir docker imajının çalıştırılması ile o imaja ait bellekte oluşan runtime instance’ına verilen ad. Çalışırken kaynakları arkaplanda aynı linux kernel’ı kullanarak paylaşır. Çalışan uygulamalar açısından her container kendi dosya sistemi, kullanıcıları ve ortam değişkenleri vs. olan izole bir sanal makine gibi davranır. Containerlar bir kere çalıştırıldıktan sonra parametreleri değiştirilemez. Değiştirmenin tek yolu yeni bir container başlatmaktır. Container isimleri tekil ve anlamlı olmalıdır.  Her container içindeki veri kendine özeldir ve konteyner çalıştığı sürece o konteynerda komutlarla yapılan değişiklikler durdurulana kadar korunur. Container tekrar başlatıldığında yapılan tüm değişiklikler kaybolur. Containerlara ait verileri kalıcı hale getirmek için yerel diskinizi container’a map etmenizi sağlayan volume adı verilen yapı kullanılır.

Docker Image : Bir uygulamanın  çalıştırılabilmesi için gerekli olan herşeyi içeren (code, runtime, libraries, environment variables, and configuration files. )  çalıştırılabilir paket.   Aynı docker imajının kullanarak birden çok container oluşturulabilir. Bu paketlerden ihtiyaç duyulanları indirmek için hub.docker.com sitesi ziyaret edilerek explore seçeneği kullanılabilir. Burada paketlerin official veya public versiyonları ile bu paketlere ait detaylı bilgiler ( dağıtım bilgisi , örnek kullanım komutları vb. ) de yer almaktadır. İmaj dosyası indirilirken geliştirme ve dağıtım ortamında problem yaşamamanız için spesifik bir versiyon belirtmenizde fayda var.  Belirtilmediğiniz takdirde o anki son sürümü otomatik olarak indirir.

   Docker imajları dağıtım açısından Alpine and mainline ( Debian Jessie tabanlı ) olarak ayrılıyor. Bu iki dağıtım türü arasında güvenlik, stabilite, dosya boyutu gibi açılardan farklılıklar  mevcut. Örneğin aynı işi yapan nginx docker imajı için jessie release’i  71 Mb dosya boyutundayken Alpine  17 Mb. Projenizin gereksinimlerine uygun olanın hangisi olduğunu sizin seçmenizde fayda var.

Örnek bazı komutlar : 

Docker imajlarını yerel reponuza indirmek için : docker pull image_name ( örnek : docker pull nginx:1.10.2-alpine )

Yerel reponuzdaki docker imajlarını listelemek için : docker images

Docker versiyonunuzu öğrenmek için : docker –version           

Çalışan containerları listelemek için : docker ps

Çalışan containerları kaldırmak için : docker rm 

Docker imajından bir container başlatmak için : docker run  ( örnek docker run –name my-nginx -d  -p 80:80 nginx:1.10.2-alpine )

Çalışan bir containerda komut çalıştırmak için  : docker exec ( örnek docker exec  -ti my-nginx /bin/bash veya docker-compose exec workspace bash )

Boşta kalan imaj dosyalarını listeler. : docker images -f “dangling=true” -q ( Bu imajlar “docker image rm”  ya da “docker system prune” ile de temizlenebilir.)

Lokal Repodaki imaj dosyalarını dosyaya kaydetme :  docker save <ImageName or ImageID > filename.tar ( Örnek : docker save selenium/standalone-firefox-debug images.tar ya da docker save –output images.tar selenium/standalone-firefox-debug )

Lokal Repoya imaj dosyalarını dosyadan yükleme :  docker load -i  filename.tar (Örnek : docker load -i images.tar)

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir