Docker

Docker, bir programı ve ihtiyaç duyduğu her şeyi tek bir kapalı pakete koyar; böylece program dizüstünde de canlı sunucuda da aynı çalışır.

  • Bulut ve DevOps

Şu adla da bilinir konteyner konteynerleştirme konteyner platformu

Tanım

Docker, bir programı çalışması için gereken her şeyle birlikte paketler; kod, ayarlar ve altta çalışan küçük araçlar tek bir kapalı pakete konur ve bu pakete konteyner denir. Paketi bir kez kurarsınız, sonrasında geliştiricinin dizüstünde, test sunucusunda ve canlı sunucuda aynı şekilde davranır.

Konteynerlerden önce “benim makinemde çalışıyor” yazılımın en pahalı cümlesiydi, çünkü program onu yazan kişide düzgün çalışır, alttaki küçük bir parça farklı sürümde olduğu anda sunucuda bozulurdu. Konteyner bu tartışmayı bitirir, zira kendi kopyalarını yanında taşır ve sunucuda ona itiraz edecek bir şey kalmaz.

Konteyner küçük bir bilgisayar değildir, çünkü üzerinde durduğu makinenin işletim sistemini ödünç alır. Bu yüzden yaklaşık bir saniyede açılır, oysa tam bir sanal makine bir dakika sürer. Sıradan bir sunucu böylece yan yana pek çok konteyner taşıyabilir ve her biri diğerinden ayrılmıştır; bu duvar parasını hak eder, çünkü sistemin bir parçası ele geçirilirse saldırgan diğerlerini hediye olarak almaz.

İnsanları şaşırtan iki şey var ve birincisi konteynerin unutmasıdır. Yeniden başladığında tam kurulduğu haliyle döner, içine yazılan her şey, yüklenen faturalar ya da müşteri fotoğrafları, kaybolur; bu yüzden dosyalar ve veritabanları bilerek konteynerin dışında tutulur. İkincisi yaştır, çünkü her konteyner başkasının yazdığı bir temel imajın üstüne kurulur ve bir yıl önce indirdiğiniz imaj o günden beri bulunan bütün açıkları taşır. Taze bir temel üzerine yeniden kurmak sistem güvenliğinin olağan bir parçasıdır, ek bir iş değil. Bu yüzden Linkysoft baktığı sistemlerde temel imajları sabit bir takvimle yeniler, çünkü kimse bunu elle yapmayı hatırlamaz.

Asıl kazanç hareket özgürlüğüdür, çünkü konteyner kendi dünyasını yanında taşır ve barındırma şirketini değiştirmek bir proje değil bir karar hâline gelir. Linkysoft her web uygulamasını böyle kurar, böylece test ettiğimiz sürüm yeniden derlenmiş bir kopya değil, canlıya çıkan sürümün tam kendisi olur. Müşteri bu sayede Hostrena üzerinde küçük bir sunucuyla başlayıp koda dokunmadan daha büyüğüne geçebilir. İmzadan önce her tedarikçiye tek bir soru sorun: konteyner atılıp yerine yenisi konduğunda verilerimiz nerede duruyor? Cevap belirsizse, cevap zaten budur.

Docker hakkında sorular

Docker sanal makineyle aynı şey mi?
Hayır. Sanal makine kendine ait tam bir işletim sistemi taşır ve açılması yaklaşık bir dakika sürer. Konteyner alttaki sistemi ödünç alır ve bir saniyede açılır; bu yüzden tek sunucuya pek çoğu sığar.
Konteyner yeniden başladığında verilerim kaybolur mu?
İçine kaydedilen her şeyi kaybedersiniz, çünkü konteyner tam kurulduğu haliyle geri gelir. Dosyalar, yüklemeler ve veritabanları konteynerin dışında tutulmalıdır ve bunu birinin bilerek ayarlaması gerekir.
Docker sistemimi daha güvenli yapar mı?
Kısmen. Her konteyner ayrı bir duvarın arkasındadır, bu yüzden bir ihlal genelde tek yerde kalır. Ama eski bir temel imaj üzerine kurulan konteyner eski açıkları taşır; düzenli olarak taze temel üzerine yeniden kurulmalıdır.
Küçük bir işletmenin Docker'a ihtiyacı var mı?
Docker'ı siz satın almazsınız; sisteminizi kuran ekip kullanır. Sizi iki nedenle ilgilendirir. Yayınlar tekrarlanabilir hâle gelir ve ileride hiçbir şeyi yeniden yazdırmadan barındırma şirketinizi değiştirebilirsiniz.

Bunun projenize nasıl uyduğundan hâlâ emin değil misiniz?

Ne inşa ettiğinizi bize anlatın, size sade bir dille yanıt verelim.