Docker Görüntüleri ve Container'lar Arasındaki Fark Nedir?
Docker görüntüleri ve container'lar, uygulama dağıtım teknolojileridir. Geleneksel olarak, uygulamaları çalıştırmak için makinenizin işletim sistemiyle eşleşen sürümü yüklemeniz gerekiyordu. Ancak, artık her tür cihazda ve işletim sisteminde çalışan tek bir yazılım paketi veya container oluşturabilirsiniz. Docker, yazılımı container'lara paketleyen bir yazılım platformudur. Docker görüntüleri, container oluşturma yönergelerini içeren salt okunur şablonlardır. Docker görüntüsü, bir uygulamanın çalışması için bir container içinde gerekli olan kitaplıkların ve bağımlılıkların anlık yedeği veya şemasıdır.
Docker görüntüleri ve container'ları neden kullanılır?
Container'lar, geliştiricilerin yazılımları herhangi bir hedef sistemde çalışacak şekilde paketlemesine olanak tanır. Önceden, yazılımı farklı hedef sistemler için özel olarak paketlemeniz gerekiyordu. Örneğin, bir uygulamanın macOS ve Windows'da çalışmasını istiyorsanız uygulama tasarımını değiştirmek ve farklı sistemler için paketlemek zorundaydınız.
Container'lı hale getirme, bir yazılım uygulamasının dağıtılmış, platformlar arası donanım mimarilerinde mikro hizmetler olarak çalışmasına olanak tanır. Container'lar son derece taşınabilir olduğundan, bu yazılım uygulamaları hızlı dağıtım ile hemen hemen her makinede çalışır. Örneğin, bir kurumsal uygulama yüzlerce mikro hizmete sahip olabilir. Özel bir veri merkezinde ve bulutta birden fazla makine ve sanal makinede (VM) container olarak çalışabilirler.
Çalışma yöntemleri: Docker görüntüleri ve Docker container'ları
Docker, yazılımı container'larda paketlemek ve hedef makinelerde çalıştırmak için kullanabileceğiniz bir container'lı hale getirme platformudur. Docker container'ları, Docker altyapısının kurulu olduğu herhangi bir makinede veya sanal makinede çalışır. Üstelik bu çalışmayı temeldeki sistem mimarisi hakkında bilgi sahibi olmadan gerçekleştirir. Docker altyapısı yalnızca Linux işletim sisteminde çalışır. Docker container'ı, Docker container'lı hale getirme platformu kullanılarak oluşturulan bir container'dır. Bundan daha az popüler olan başka container'lı hale getirme platformları da vardır.
Containler'lı hale getirme hakkında bilgi edinin »
Docker container'ları nasıl çalışır?
Docker container'ı, uygulama kodunu ana sunucu makine bağımlılıklarını kullanmadan çalıştırmak için gereken kod, bağımlılıklar ve kitaplıklar gibi tüm zorunlu bileşenleri içeren bir çalışma zamanı ortamıdır. Bu container çalışma zamanı; bir sunucu, makine veya bulut sunucusundaki altyapıda çalışır. Altyapı, mevcut temel kaynaklara bağlı olarak birden fazla container çalıştırır.
Farklı makineler veya sanal makineler arasında etkili bir şekilde iletişim kurmak üzere bir container kümesini dağıtmak ve ölçeklendirmek için Kubernetes gibi bir container düzenleme platformuna ihtiyacınız vardır. Bu, makinelerinizin şirket içinde veya bulutta olması fark etmeksizin faydalı olacaktır. Kubernetes, container işlemleri bağlamında küme olarak bilinen birden fazla makineyi yönetir.
Kubernetes hakkında bilgi edinin »
Docker görüntüleri nasıl çalışır?
Bir Docker görüntüsü veya container görüntüsü, bir container oluşturmak için kullanılan, bağımsız, yürütülebilir bir dosyadır. Bu container görüntüsü, container'ın çalışması için gereken tüm kitaplıkları, bağımlılıkları ve dosyaları içerir. Bir Docker görüntüsü paylaşılabilir ve taşınabilirdir. Böylece aynı görüntüyü tıpkı bir yazılım ikili dosyası gibi aynı anda birden fazla konuma dağıtabilirsiniz.
Karmaşık yazılım mimarilerini, projeleri, iş segmentlerini ve kullanıcı grubu erişimini takip etmek için görüntüleri kayıtlarda saklayabilirsiniz. Örneğin, genel Docker Hub kayıt defteri; işletim sistemleri, programlama dili çerçeveleri, veritabanları ve kod düzenleyicileri gibi görüntüler içerir.
Temel komutlar: Docker görüntüleri ve Docker container'ları
Docker container'larını işlemek için parametreli komutlar kullanırsınız. Standart komut biçimi şudur: docker [options] [command] [arguments]
Container komutları
Aşağıdaki tabloda sık kullanılan container komutları yer almaktadır. Docker belgelerinde listelenen birkaç komut daha vardır.
Komut |
Açıklama |
docker ps -a |
Tüm container'ları listeler. -a bayrağı hem çalışan hem de çalışmayan container'ları gösterir. Yalnızca çalışan container'ları görüntülemek için bu bayrak çıkarılabilir. |
docker rename [container] [new_name] |
Verilen container'ı new_name olarak yeniden adlandırır. |
docker start [container] |
Verilen container'ı çalıştırır. |
docker stop [container] |
Verilen container'ı durdurur. |
docker wait [container] |
Verilen container'ı, çalışan diğer container'lar durana kadar bekletir. |
Görüntü komutları
Container komutlarına kıyasla daha az görüntü komutu vardır.
Docker build -t image_name |
Geçerli dizindeki dosyalardan image_name etiketli bir Docker görüntüsü oluşturur. |
docker create [image] |
Verilen görüntüden çalışmayan bir container oluşturur. |
docker run [image] |
Verilen görüntüye göre bir container oluşturur ve çalıştırır. |
Docker görüntülerinden Docker container'ları oluşturma
Belirli bir Docker görüntüsünden bir container oluşturmak için altyapıyı bir makinede çalıştırın. Ardından, temel Docker çalıştır komutunu kullanın.
Örnek bir komutu burada görebilirsiniz:
docker run -it MyImage bash
Bu komut, MyImage adlı bir görüntü dosyasından bir container oluşturur. -it, çalışan container içinde bir sözde terminal oluşturur. Ve bash'i komut olarak belirterek, container içinde bir bash terminali açılır.
Temel farklar: Docker görüntüleri ve Docker container'ları
Bir Docker container'ı; bağımsız, çalıştırılabilir bir yazılım uygulaması veya hizmetidir. Öte yandan, bir Docker görüntüsü, bir dizi talimat gibi onu çalıştırmak için container'a yüklenen şablondur.
Görüntüleri paylaşmak ve yeniden kullanmak üzere depolarsınız ancak bir uygulamanın yaşam döngüsü boyunca container'lar oluşturur ve imha edersiniz. Aşağıda diğer farklılıklara bakacağız.
Kaynak
Bir yapılandırma dosyasına benzer, insan tarafından okunabilir bir metin dosyası olan bir Dockerfile'dan Docker görüntüsü oluşturursunuz. Dockerfile, görüntüyü oluşturmak için tüm talimatları içerir. Görüntüyü oluşturmak için Dockerfile dosyasını tüm ilişkili kitaplıklar ve bağımlılıklarla birlikte bir klasöre yerleştirmeniz gerekir.
Buna karşılık, Docker container'larını doğrudan Docker görüntü dosyasından oluşturursunuz.
Birleşim
Docker görüntü dosyası, dosya boyutunu küçük tutmak için görüntü katmanlarından oluşur. Her katman, görüntüde yapılan bir değişikliği temsil eder. Katmanlar salt okunurdur ve birden çok container arasında paylaşılabilir.
Bir görüntü bulut sunucusu olması nedeniyle Docker container'ı da katmanlar içerir. Bununla birlikte, üstte container katmanı denilen ek bir yazılabilir katmana sahiptir. Container katmanı okuma-yazma erişimine izin verir. Ayrıca, container içinde yapılan değişikliklerin aynı görüntüye dayalı olarak diğer container'lardan yalıtılmasını sağlar.
Değişebilirlik
Docker görüntüleri değişmez. Bu da oluşturulduktan sonra değiştirilemeyekleri anlamına gelir. Bir görüntüde değişiklik yapılması gerekiyorsa istediğiniz değişikliklerle yeni bir görüntü oluşturmanız gerekir.
Buna karşılık, container'lar değiştirilebilir ve çalışma zamanı sırasında değişikliklere izin verir. Bir container içinde yapılan değişiklikler söz konusu container'la sınırlı kalır ve ilişkili görüntüsünü etkilemez. Yeni dosyalar yazmanız, yazılım yüklemeniz veya yapılandırmaları değiştirmeniz, değişikliklere örnektir.
Kullanım zamanı: Docker görüntüleri ve Docker container'ları
Yazılım oluştururken ve dağıtırken Docker görüntülerini ve container'larını birlikte kullanabilirsiniz.
Uygulamaları bir kez oluşturmak ve istediğiniz yerde çalıştırmak için container'ları kullanırsınız. Container'ları gerektiği gibi hızlı bir şekilde başlatabilir, durdurabilir ve yeniden başlatabilirsiniz. Bu nedenle, uygulamanın talebine göre ölçek kolayca artırılabilir veya azaltılabilir.
Bununla birlikte, hem görüntüleri hem de container'ları kullandığınızda yönetim kolaylaşır. Örneğin, bunları birlikte nasıl kullanabileceğiniz aşağıda açıklanmıştır:
- Aynı görüntüye dayalı olarak container'ların birden çok bulut sunucusunu çalıştırarak uygulamanızı yatay olarak ölçeklendirin.
- Geliştirme, test ve üretim ortamları için farklı görüntüler kullanarak sürekli entegrasyon ve dağıtım (CI/CD) işlem hatlarını otomatikleştirin.
- Görüntülerinizin farklı sürümlerini etiketleyin ve yönetin. Bu, belirli sürümleri gerektiği gibi geri almanıza veya dağıtmanıza yardımcı olur.
Farklılıkların özeti: Docker görüntüleri ve Docker container'ları
Docker görüntüsü |
Docker container'ı |
|
Bu nedir? |
Container'lar oluşturmak için kullanılan, yeniden kullanılabilir, paylaşılabilir bir dosya. |
Bir çalışma zamanı bulut sunucusu; bağımsız bir yazılım. |
Oluşturulduğu kaynak |
Yazılım kodu, bağımlılıklar, kitaplıklar ve bir Dockerfile. |
Bir görüntü. |
Birleşim |
Salt okunur katmanlar. |
Üstte bir ek okuma-yazma katmanı bulunan salt okunur katmanlar. |
Değişebilirlik |
Değişmez. Değişiklikler varsa yeni bir dosya oluşturmanız gerekir. |
Değişebilir. Çalışma zamanında gerektiği gibi değiştirebilirsiniz. |
Kullanım zamanı |
Uygulama yapılandırma ayrıntılarını şablon olarak depolamak için. |
Uygulamayı çalıştırmak için. |
AWS, container ve görüntü gereksinimleriniz konusunda size nasıl yardımcı olabilir?
Amazon Web Services (AWS), container görüntülerinizi depolamak ve yönetmek için size güvenli bir yer sağlayan birçok teklif sunar.
Container'larınızın ne zaman ve nerede çalışacağını yöneten düzenleme ve container'larınıza güç sağlayan esnek işlem altyapıları sunuyoruz. AWS, container'larınızın ve bunların dağıtımlarının yönetilmesine yardımcı olabilir. Böylece temel altyapı hakkında endişelenmenize gerek kalmaz. Daha fazla bilgi için AWS'de Container'lar sayfasına gidin.
Amazon Esnek Container Kayıt Defteri (Amazon ECR), yüksek performanslı barındırma sunan, tam olarak yönetilen bir container kayıt defteridir. Böylece, uygulama görüntülerini ve yapıtlarını istediğiniz yere güvenilir bir şekilde dağıtabilirsiniz. Container tabanlı uygulamalar oluşturan geliştiriciler artık Docker Resmi Görüntülerini doğrudan Amazon ECR Public üzerinden keşfedebilir ve indirebilir.
Amazon Esnek Container Hizmeti (Amazon ECS), tam olarak yönetilen bir container düzenleme hizmetidir. Container'lı uygulamaları dağıtmanızı, yönetmenizi ve ölçeklendirmenizi kolaylaştırır. Amazon ECS, container'ları başlatmak için görev tanımlarında Docker görüntülerini kullanır.
Hemen bir hesap oluşturarak AWS'de Docker'ı kullanmaya başlayın.