Konteynerizasyon temel olarak işletmelerin nasıl inşa edildiği, gemi ve işletme uygulamaları yaptığını yeniden şekillendirmiştir. Docker, ambalaj yazılımı için hafif, taşınabilir konteynerler için standart kurdu, OpenShift, Red Hat'un işletme Kubernetes platformu, orkestrasyonunu, güvenlik ve geliştirici aracılıklarını ölçeklendirmek için gerekli olan bir araç sunar.

Docker ve Konteynerizasyonunu Anlamak

Docker sadece bir araçtan daha fazlasıdır - geliştirme, nakliye ve üretim ortamları için bir platformdur. Konteynerler, bağımlılıkları (libraries, konfigürasyon dosyaları, binerler) tek standart bir birim haline getirir. Bu, uygulamanın sürekli olarak gelişim, stilleme ve üretim ortamları üzerinde hareket etmesini sağlar, klasik “benim makinemde çalışır” problemini ortadan kaldırır.

Docker'in özü Docker Motor, Dockers tarafından tanımlanan bir runtime, verimlilik için tabakalanmış bir taşıyıcı sistemi kullanıyor.Docker istemcisi Docker daemon ile iletişim kurduğu bir istemci-server mimarisini kullanıyor, Docker daemon'un kurulumuna, çalıştırmaya ve konteynerleri yönetmesine olanak sağlıyor.

Şirketler için Docker birkaç kritik yetenek sunuyor:

  • [FONT:0)Isolation:[Dönetici: Her konteyner kendi izole kullanıcı alanında çalışır, güvenlik ve kaynak kontrolü geliştirir.
  • [FONT:0)Portability:[Dönetici:[Dönetici: [Dönetici: [Dönetici: [Dönetici: [Dönetici: [Döneticiler, bulut, hibrit)
  • [FONT:0]Efficiency:[Dönetici:[Dönetici:0) Konteynerler ev sahibi işletim sistemini paylaşıyor ve sanal makinelerle kıyasla önemli ölçüde daha düşük bir üst düzeye çıkıyor.
  • [FONT:0)Rapid iteration:[Döneticiler inşa edebilir, test edebilir ve konteynerli uygulamaları hızlı bir şekilde dağıtabilir, sürekli entegrasyon ve sürekli teslimat (CI/CD) iş akışlarını destekler.

Ancak, Docker, bir makine kümesine yüzlerce veya binlerce konteyner yönetmek için yeterli değildir. orkestrasyon içeri girdiğinde ve OpenShift Kubernetes'te inşa edilen bir işletme seviyesi çözümü sunuyor.

OpenShift: Enterprise Kubernetes Platform

OpenShift, Kızıl Hat'un Kubernet'lerin dağıtımını, geliştirici dostu araçlarla, bir web konsolu ve güvenlik ekiplerine hitap eden ek özelliklerle geliştirilmiştir.

OpenShift'un anahtar bileşenleri şunlardır:

  • [FONT:0) Kaynak-Image (S2I):[[Dönetici: 1) Bir Dockerfile gerektiren kaynak kodlarından otomatik olarak inşa edilen bir araç, tamamen özel Dockerfileleri desteklerse de.
  • [FONT:0)Integrated kayıt:[Dönetici:[Dönetici:0)[Dönetici:0)[Dönetici:[Dönetici:0)) OpenShift, görüntüleri depolamak ve yönetmek için iç bir konteyner resmi kayıt defteri içeriyor ve dış kayıtlara güvenmek.
  • [FONT:0]Routing ve ağ:[Dönetici:[Dönetici] OpenShift, yerleşik HAProxy yönlendiricisi ile ingre trafiği yönetiyor ve dahili DNS ve hizmet keşiflerini sağlıyor.
  • [FONT=0) Güvenlik bağlamı kısıtlamaları (SCC): ) Bu, Kubernetes Pod Güvenlik Politikaları yerine, konteynerlerin ne yapabileceğinin üzerinde (örneğin, bağlantı noktaları olarak çalıştırın).
  • [[Dönetici:0)Developer konsol:[Dönetici:[Dönetici:0)[tr|gelişme, izleme ve uygulama yönetimi.
  • [FONT:0)OperatorHub:[Dönetici:0) Karmaşık uygulama yaşam döngüsü yönetimi için operatörlerin katalogu.

OpenShift, çok fazla kişilik, uyumluluk ve yüksek kullanılabilirlik gerektiren işletmeler için tasarlanmıştır. LDAP, Active Directory ve diğer kimlik sağlayıcıları ile bütünleştirir. Ayrıca Prometheus, Grafana ve Elasticsearch/Fluent/Kibana yığınları aracılığıyla inşa edilmiş ve giriş sağlar.

Docker ile OpenShift

OpenShift ile Docker kullanımı basittir çünkü OpenShift Kubernetes'te inşa edilmiştir ve yerli olarak konteyner görüntülerini anlar. Çeşitli düzeylerde entegrasyon: görüntüler inşa etmek, görüntüler depolamak ve iş yüklerini dağıtmak.

Yapı Resimleri

Geliştiriciler OpenShift için konteyner görüntüleri oluşturmak için iki birincil yol vardır:

  • [FONT:0]Dockerfile inşa ediyor:[Dönetici:[Dönetici:0)Dockerfileler, bir Dockerfile yaz, sonra OpenShift inşa sistemi veya Docker CLI'yı bir görüntü oluşturmak için kullanabilir. OpenShift, Docker'u kümede çalıştırabilir.
  • [FONT=0) Kaynak-to-İmage (S2I):[[FONTT:1) S2I, uygulama kaynağı kodu alır ve otomatik olarak bir konteyner imajını içeren bir çerçevedir. Örneğin, Node.js uygulaması bir Git repository tarafından inşa edilebilir; OpenShift uygun S2I inşaatçı imajını çekecek ve otomatik olarak bir konteyner imajı yaratacaktır.

Her iki yaklaşım da iç veya dış bir konteyner kayıtlarında depolanan görüntüler üretiyor. OpenShift'in yerleşik kayıt defteri Docker Kayıt v2 protokolüne dayanıyor, bu yüzden Docker müşterileri ile tamamen uyumludur.

Storing Images

Binadan sonra, görüntüler OpenShift kümesi tarafından erişilebilir bir kayıt için itilir. İç kayıt, katı entegre dağıtımlar için en basit seçenektir. Alternatif olarak, takımlar Docker Hub, Quay.io, Amazon ECR veya Google Container Kayıtları gibi dış kayıtları kullanabilir.

İş Yükleri

Bir görüntü mevcut olduğunda, OpenShift web konsolu veya ([Dönetici:0) bu süreci basitleştirmek için bir Kubernetes kaynağı oluşturmak önemlidir.

Adım-Adım: AçıkShift üzerinde bir Docker Konteyneri çalıştırın

Uygulamayı dışsal olarak açığa çıkarmak için bir Dockerfile yazmaktan tam bir dağıtım döngüsünden geçelim.

Adım 1: Bir Docker Image Oluştur

Uygulamanız için bir Dockerfile yazın. Basit bir Python web uygulaması için Örnek:

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY app.py .
EXPOSE 8080
CMD ["python", "app.py"]

Görüntü yerel olarak kullanımını oluşturun:2).

Adım 2: Bir Kayıta Zor

Tag ve görüntüyü OpenShift'in iç kaydına itin. İlk olarak, Docker müşterinizden kayıt olun:

docker login -u $(oc whoami) -p $(oc whoami -t) default-route-openshift-image-registry.<cluster-domain>

Sonra etiket ve itin:

docker tag my-python-app:1.0 default-route-openshift-image-registry.<cluster-domain>/<project-name>/my-python-app:1.0
docker push default-route-openshift-image-registry.<cluster-domain>/<project-name>/my-python-app:1.0

Adım 3: AçıkShift üzerinde iş

Klanını kullanarak:

oc new-app my-python-app:1.0 --name=my-app --as-deployment-config

Ya da YAML ile bir iş işi oluşturmak:

apiVersion: apps/v1
kind: Deployment
metadata:
 name: my-app
spec:
 replicas: 3
 selector:
 matchLabels:
 app: my-app
 template:
 metadata:
 labels:
 app: my-app
 spec:
 containers:
 - image: default-route-openshift-image-registry.<cluster-domain>/<project>/my-python-app:1.0
 name: my-app
 ports:
 - containerPort: 8080

Cebrâil'e (S.S.) başvurun.

Adım 4: Uygulamayı Görüntüle

Uygulamayı dışsal olarak erişilebilir hale getirmek için bir hizmet ve yol oluşturun:

oc expose deployment my-app --port=8080
oc expose service my-app

Yol, halka açık URL sağlar. OpenShift'in yönlendiricisi TLS'nin sona ermesi ve dengelemesi ile çalışır.

Adım 5: Yönetin

Rezislerin sayısı dinamik olarak:

oc scale deployment my-app --replicas=5

Ya da yatayPodAutoscaler kullanarak otomatik olarak yapılandırın.

Docker'i OpenShift ile Kullanımının Faydaları

Portability and Consistency

Docker görüntüleri, iş zamanı ortamına karışan eşsiz eserlerdir. OpenShift'ta konuşulduğunda, bu görüntüler bir geliştiricinin dizüstü bilgisayar, bir test kümesi veya bir üretim veri merkezi üzerinde aynı şekilde çalışır.Bu tutarlılık ortamı sürükler ve sorun gidermeyi basitleştirir.

Otomatik Yaşam döngüsü Yönetimi

OpenShift, ham Docker. Demiryolu güncelleştirmeleri ile yüklenen birçok operasyonel görevi otomatikleştirir, kanary dağıtımları, sağlık kontrolleri ve kendi kendine özgü bir konteyner çökmüş durumda. Örneğin, bir konteyner kazaları varsa, OpenShift otomatik olarak yeniden başlarsa, tarifeleri sağlıklı düğümlere dağıtır.

Enterprise Security

Güvenlik kurumsal ortamlarda çok önemlidir. OpenShift, dağıtımdan önce bilinen CVE'leri kontrol etmek için görüntüleri kontrol etmek için hassas ev sahibi yönetmenleri kullanmak anlamına gelir.Bu, konteynerlerin kök olarak çalıştırılabilmesi, host namespaces veya doğrudan izin verilmez. OpenShift ayrıca dağıtım öncesi kullanım için güvenlik tarama araçlarıyla entegre eder. Rol tabanlı erişim kontrolü (RBAC) geliştiricilerin, operatörlerin ve denetçilerin yalnızca gerekli izinlere sahip olmasını sağlar.

Scalability

OpenShift Kubernetes'in yatay pod oto-scaling ve küme oto-scaling'i kullanabilirsiniz. CPU'yu veya ölçeklendirmeyi tetikleyen hafıza eşlerini tanımlayabilirsiniz.Docker'in hafif konteynerleriyle birlikte, ölçeklendirme VM'leri ile birkaç dakikadan daha fazla olur.

Geliştirici Verimlilik Geliştirici

OpenShift'in Kaynağı-to-İmage özelliği, geliştiricilerin Dockerfiles yazmadan doğrudan kod almalarına izin vererek gelişimlerini hızlandırıyor. Entegre yapı sistemi, Git işlerinden otomatik görüntü inşalarını ve dağıtımlarını tetikleyebilir, sıkı bir geri bildirim döngüsü sağlar.

Enterprise Deployment için en iyi uygulamalar

Görüntü Versiyonu ve Tagging

Her zaman, Docker görüntüleriniz için özel, sürümlenmiş etiketler kullanın.Ücretsiz ekranlardan kaçının, çünkü üretimde etiket kırılabilir, çünkü semantik sürüm kullanın veya iş yükleri vardır. OpenShift'un görüntü akış kaynakları etiketi değişiklikleri takip edebilir ve otomatik dağıtımları tetikleyebilir.

Güvenlik Politikaları

Güvenlik Tartışmaları (SCC) güvenlik duruşunuzu eşleştiren ve gerekli olduğunda sadece konteyner görüntü tarayıcıları ile entegre edilen sürümler ile birlikte, Clair veya Red Hat Advanced Cluster Security gibi tümleşikler, ağ politikalarını mikro-segment trafiği arasındaki yönlendirmeye olanak sağlar.

CI/CD Entegrasyonu

Automate, testler ve OpenShift Boruları kullanarak dağıtımlar (Tekton'da inşa edildi) veya Jenkins. Tipik bir boru hattı: (1) Geliştirici, yeni sürüm başarısız sağlık kontrollerini otomatik olarak tetikler. (3) yeni görüntü otomatik olarak iç kayıt için itilir, (4) bir dağıtım otomatik olarak güncellenir ve (5) sağlık kontrolleri otomatik olarak ruloyu geri döndürür.

Bir Dockerfile'den inşa eden Tekton boru kaynağı örneği:

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
 name: build-docker-image
spec:
 workspaces:
 - name: source
 steps:
 - name: build
 image: gcr.io/kaniko-project/executor:latest
 args:
 - --context=$(workspaces.source.path)
 - --destination=image-registry.openshift-image-registry.svc:5000/<project>/my-app:$(params.tag)

İzleme ve Logging

Enable OpenShift'in yerleşik izleme cihazı (Prometheus ve Grafana) CPU, hafıza, disk I/O ve ağ kullanımı üzerinde ölçümler toplamak için uyarılar oluşturun.For logs, OpenShiftsearch Elastic operator veya forward logları dış bir SIEM'e dağıtır.

Kaynak Yönetimi

Her konteyner için kaynak talepleri ve sınırları belirlemek. OpenShift, buları akıllı olarak planlamak ve kaynak açlığı önlemek için kullanır. Limitsiz, tek bir konteyner diğer iş yüklerini etkileyebilir. Örnek YAML parçaları:

resources:
 requests:
 memory: "256Mi"
 cpu: "250m"
 limits:
 memory: "512Mi"
 cpu: "500m"

Ağlama ve Persist Depolama

Devletli depolama gerektiren uygulamalar için, OpenShift'in PersistentVolumeClaims (VPNs) bir depolama sınıfı (örneğin, NFS, Ceph, AWS EBS) Configure StorageClasses uygun şekilde.In network, OpenShift's for external HTTP/S trafiği ve Hizmetleri iç yük dengeleme için.

Backup and Disaster Recovery

Düzenli olarak OpenShift konfigürasyonları (ekiz anlık), PVC veriler ve görüntü kayıt defteri içeriği.WinCD gibi bir altyapıyı GitOps araçlarını kullanarak periyodik olarak kurtarma prosedürleri gibi bir yaklaşım olarak uygulama.Test disaster recovery processes Regular.

Gerçek Dünya Vakaları Kullanıyor

Mikroservices Decomposition

Enterprises, monolithic uygulamaları genellikle mikro hizmetlere ayırmaktadır. Docker konteynerleri her hizmeti bağımsız olarak barındırmaktadır ve OpenShift tüm sistemi, hizmet keşiflerini yönetmek, dengelemeyi yönetmek ve hizmet iletişimi kurmak.

Hybrid Cloud Deployments

OpenShift büyük bulut sağlayıcıları (AWS, Azure, GCP) ve on-premises. Docker görüntüleri, hibrit ortamlarda tutarlı bir deneyim sağlamak için her yerde açıkShift çalıştırılabilir. Bu, veri egemenliği gereksinimleri veya çoklu bulut stratejileri ile kuruluşlar için kritiktir.

CI/CD for Machine Learning

Data science takımları, Docker kullanarak ML modellerini konteynerleştirebilir ve onları sunucusuz işlevleri olarak OpenShift Serverless / Knative ile dağıtabilir. Bu, kullanım sırasında sıfıra kadar ölçeklendirmeye olanak sağlar.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Docker ve OpenShift birlikte, bu makalede belirtilen entegrasyon adımlarını ve en iyi uygulamaları kullanarak, kaynak kullanımını hızlandırabilir ve mevcut iş yüklerini veya binayı yeşil alan bulut-natif uygulamaları eklerken, Docker, şirket orkestrası için belirlenen en iyi uygulamaları takip eder.

Daha ayrıntılı bilgi için resmi belgeye bakınız: [FONT:0]Docker Docs), [[Dönemli Docs) ve [[Dönetici|D|D|D|Dönetici|Dönetici|Dönetici|s|Dönetici|s|s|s )