Docker
- Okunuşu
- dokır
Kısaca
Docker, bir uygulamayı ve ihtiyaç duyduğu her şeyi, her makinede aynı şekilde çalışan bir konteyner içinde paketlemeye yarayan açık kaynaklı bir platformdur.
Docker nedir?
Docker, konteynerleri oluşturmak, paylaşmak ve çalıştırmak için kullanılan bir araçtır. Bir uygulamayı çalışma zamanı, kütüphaneler ve yapılandırmasıyla birlikte tek bir birim halinde paketler; böylece uygulama bir geliştiricinin dizüstü bilgisayarında, test sunucusunda ve canlı ortamda aynı şekilde davranır. Bu, klasik "bende çalışıyordu" sorununu çözer.
Uygulamanızın nasıl derleneceğini Dockerfile adlı bir metin dosyasında tarif edersiniz. docker build çalıştırmak bunu katmanlar halinde saklanan, salt okunur bir şablon olan imaja dönüştürür; docker run ise o imajın canlı ve yalıtılmış bir örneği olan konteyneri başlatır. İmajlar Docker Hub gibi registry'ler üzerinden paylaşılır; Docker Compose ise bir uygulama ile veritabanı gibi çok konteynerli yapıları tek komutla tanımlayıp başlatmanızı sağlar.
Fikir, nakliye konteynerlerinden esinlenmiştir: standart konteynerlerden önce her yük türü özel elleçleme gerektirirdi, oysa standart bir kutu her gemiye, trene ya da kamyona sığar. Docker imajları da aynı şekilde, uyumlu bir konteyner çalışma zamanına sahip her makinede çalışır.
Docker sıklıkla konteynerlerin kendisiyle ya da Kubernetes ile karıştırılır. Konteynerler temeldeki teknolojidir; Docker onları popüler ve kolay kullanılır hale getirmiştir. Docker ile oluşturulan imajlar açık OCI standardına uyar, bu yüzden containerd ve Podman gibi diğer çalışma zamanlarında da çalışır. Kubernetes ise birçok konteyneri bir makine kümesi üzerinde çalıştıran ve yöneten ayrı bir sistemdir.
Bir bakışta
Önemli noktalar
- Docker, bir uygulamayı ve bağımlılıklarını bir konteyner imajında paketler.
- İmajın nasıl oluşturulacağını bir
Dockerfiletanımlar. - İmaj şablondur; konteyner ise onun çalışan bir örneğidir.
- Docker Compose, çok konteynerli uygulamaları tek makinede çalıştırır.
- Docker imajları OCI standardına uyar ve diğer konteyner çalışma zamanlarıyla da çalışır.
Örnek
# Start from an official Node.js base image
FROM node:24-alpine
# Set the working directory inside the container
WORKDIR /app
# Install dependencies first to take advantage of layer caching
COPY package*.json ./
RUN npm ci --omit=dev
# Copy the rest of the source code and define the start command
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]Sık sorulan sorular
Docker ile sanal makine arasındaki fark nedir?
Sanal makine, kendi işletim sistemiyle tam bir bilgisayarı taklit eder; Docker konteyneri ise ana makinenin çekirdeğini paylaşır ve yalnızca uygulamayı ile bağımlılıklarını yalıtır. Sonuç olarak konteynerler çok daha küçüktür ve saniyeler içinde ya da daha kısa sürede başlar; sanal makineler ise daha güçlü yalıtım sağlar.
Docker imajı ile konteyner arasındaki fark nedir?
İmaj, uygulamayı ve bağımlılıklarını içeren salt okunur bir şablondur. Konteyner ise bu imajdan oluşturulan çalışan bir örnektir ve aynı imajdan birçok konteyner başlatabilirsiniz.
Docker ile Kubernetes arasındaki fark nedir?
Docker konteynerleri oluşturur ve genellikle tek bir makinede çalıştırır. Kubernetes ise bir makine kümesindeki birçok konteyneri düzenler; zamanlama, ölçekleme ve arızalardan kurtarmayı üstlenir.
Sık karşılaştırılanlar
İlgili sayfalar
- KonteynerDevOps ve Bulut, s. 28Konteyner, bir uygulamayı bağımlılıklarıyla paketleyip ana makinenin paylaşılan işletim sistemi çekirdeği üzerinde çalıştıran hafif, yalıtılmış bir pakettir.
- KubernetesDevOps ve Bulut, s. 30Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
- Sanal MakineDevOps ve Bulut, s. 45Sanal makine, paylaşılan fiziksel donanımda kendi işletim sistemini çalıştıran, aynı ana makinedeki diğerlerinden yalıtılmış yazılım tabanlı bilgisayardır.
- DevOpsDevOps ve Bulut, s. 13DevOps, yazılım geliştirme ile BT operasyonlarını birleştirerek yazılımın daha hızlı ve güvenilir sunulmasını sağlayan bir kültür ve pratikler bütünüdür.
- CI/CDDevOps ve Bulut, s. 9CI/CD, kod değişikliklerini sık sık derleyen, test eden ve yayınlayan otomatik pratikler bütünüdür; yazılım kullanıcılara hızlı ve güvenli biçimde ulaşır.
- MikroservislerYazılım Mimarisi, s. 24Mikroservisler, bir uygulamanın ağ üzerinden iletişim kuran, küçük ve bağımsız olarak dağıtılabilen servislere bölündüğü bir mimari tarzdır.
- Docker ComposeDevOps ve Bulut, s. 16Docker Compose, web sunucusu ve veritabanı gibi birkaç container'dan oluşan uygulamaları tek bir YAML dosyası ve tek komutla tanımlayıp çalıştıran araçtır.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin