NGINX’i Docker içinde nasıl kuracağınızı, yapılandıracağınızı ve optimize edeceğinizi öğrenin. Bu rehber; konteyner çalıştırma, özel içerik sunma, imaj oluşturma, ters proxy kurulumu ve verimli dağıtım için Docker Compose kullanımını kapsar.
Bir Docker konteyneri içinde NGINX, birçok ortamda güvenilir bir web hizmeti sunabilir. Kişisel bir web sitesi, hafif bir web servisi veya ev laboratuvarı projesi üzerinde çalışıyor olabilirsiniz. Docker, farklı makineler ve kurulumlar arasında tutarlılığı korumanıza yardımcı olabilir. Bu yaklaşım, geliştirme ve üretim arasında geçiş yaparken daha az ek yükle NGINX çalıştırmanın bir yolunu sunar. Web sunucusunu basit şekilde paketlemek için Docker’a güvenmek yaygındır; bu da projelerinizi karmaşık manuel adımlar olmadan paylaşmayı kolaylaştırır.
Bu makale, hazır bir NGINX imajını nasıl çalıştıracağınızı, yerel makinenizden nasıl içerik sunacağınızı ve özel özelliklerle kendi imajınızı nasıl oluşturacağınızı açıklar. Ayrıca bir ters proxy için kurulum adımlarını ve çoklu hizmet dağıtımı için Docker Compose kullanımını da kapsar. Sonunda, birkaç basit komutla konteynerleri nasıl yöneteceğinizi ve pratik görevler için Docker ile NGINX’i nasıl entegre edeceğinize dair ayrıntılı bir bakış elde edeceksiniz.
Docker NGINX, NGINX web sunucusunun hafif bir konteyner içinde çalıştırılmasına karşılık gelir. Docker konteynerleri, bir uygulamayı ve ihtiyaç duyduğu tüm bağımlılıkları barındıran küçük paketlere benzer.
NGINX; güçlü performansı, kolay yapılandırması ve HTTP trafiğini esnek şekilde ele almasıyla bilinen popüler bir web sunucusudur. NGINX’i Docker ile eşleştirmek caziptir çünkü ortamı tutarlı tutar. macOS, Windows veya Linux’a dağıtım yapın; konteynerin içeriği aynı kalır. Bu da, ana işletim sisteminden bağımsız olarak aynı şekilde davranacağı anlamına gelir.
NGINX için tipik bir Docker imajı; sunucu yazılımını, varsayılan bir yapılandırmayı ve barındırılan dosyalar için bir dizin yapısını içerir. Bu konteyneri hemen çalıştırabilir veya belirli klasörleri eşleyerek, yapılandırma dosyalarını düzenleyerek ya da kendi Dockerfile’ınıza dayalı bir imaj oluşturarak uyarlayabilirsiniz. Böyle yaparak, uygulamanıza uygun şekilde NGINX’i özelleştirmek için özel modüller veya betikler ekleyebilirsiniz.
Uygulamaları nasıl konteynerleştireceğiniz hakkında daha fazla bilgi için Docker Kullanarak Bir Uygulama Nasıl Konteynerleştirilir başlıklı eğitimimize bakın. Docker ile makine öğrenmesi uygulamalarını başlangıç seviyesine uygun biçimde nasıl konteynerleştireceğinizi daha ayrıntılı anlatır.
Önkoşullar
NGINX konteynerlerini çalıştırmaya başlamadan önce Docker’ın kurulu olduğundan emin olun. Docker’ın macOS, Windows ve çeşitli Linux dağıtımları için resmi yükleyicileri vardır. Docker dokümantasyonu, her işletim sistemi için adım adım bir süreç sağlar.
Docker’a başlamak için kapsamlı bir rehber olarak Docker’a Giriş kursumuza göz atın.
Kurulumu, aşağıdakine benzer hızlı bir komutla test edin:
docker version
derrickmwiti@Derricks-MacBook-Pro% docker version
Client:
Version: 28.0.1
API version: 1.48
Go version: go1.23.6
Git commit: 068a01e
Built: Wed Feb 2610:38:16 2025
OS/Arch: darwin/arm64
Context: desktop-linux
Server: Docker Desktop 4.39.0 (184744)
Engine:
Version: 28.0.1
API version: 1.48(minimum version 1.24)
Go version: go1.23.6
Git commit: bbd0a17
Built: Wed Feb 2610:40:57 2025
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.7.25
GitCommit: bcc810d6b9066471b0b6fa75f557a15a1cbf31bb
runc:
Version: 1.2.4
GitCommit: v1.2.4-0-g6c52b3f
docker-init:
Version: 0.19.0
GitCommit: de40ad0Altyapı:
Sürüm ayrıntılarını görüyorsanız Docker hazır demektir. Docker’ın kendisine ek olarak, NGINX imajını Docker Hub’dan çekmek için internet erişimine ihtiyacınız var. Kendi imajınızı oluşturmayı planlıyorsanız bir Dockerfile yazmak için bir metin düzenleyiciye de ihtiyacınız olacak. Herhangi bir metin düzenleyici iş görür; ancak size rahat geleni seçin.
Bir Docker Konteynerinde NGINX Kurulumu
Hazır bir imajdan NGINX çalıştırmak genellikle en hızlı yöntemdir. Docker Hub’dan saniyeler içinde çekebilir ve ardından bir konteyner başlatabilirsiniz. Sonrasında, tarayıcınızda varsayılan sayfayı görürsünüz. Bu kısa süreç, Docker tabanlı sunucu kurulumlarının çoğunda ilk adımdır.
NGINX Docker imajını çekme
Resmi NGINX imajı, Docker Hub’da nginx adıyla herkese açıktır.
Bu komut kayda gider ve en son sürümü alır. Her şey tamamlandığında, makinenizde mevcut olduğunu kontrol edebilirsiniz:
docker images
derrickmwiti@Derricks-MacBook-Pro% docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 124b44bfc9cc 6 weeks ago 280MB
keras-custom-training-container latest <none> 7de0f04013e5 7Altyapı:
Bu komut yerel kitaplığınızdaki imajların bir listesini gösterir. Tablo içinde nginx imajını görmelisiniz. Bu da ondan bir konteyner oluşturmaya hazır olduğunuz anlamına gelir. Veri bilimi projeleriniz için ihtiyaç duyabileceğiniz imajların bir listesini Makine Öğrenimi ve Yapay Zeka için En İyi 12 Docker Konteyner İmajı başlıklı yazımızdan keşfedin.
NGINX konteynerini çalıştırma
NGINX imajı sisteminizde olduğunda, tek bir komutla konteyneri başlatabilirsiniz:
docker run --name mynginx -p8080:80 -d nginx
derrickmwiti@Derricks-MacBook-Pro % docker run --name mynginx -p8080:80 -d nginx
ec44d1a43016e9684b602437b967c0ed8e11c933a8a76b341b68c25168d2af70Altyapı:
Bu komut birkaç işi birden yapar. mynginx adlı bir konteyneri arka planda (-d seçeneği sayesinde) çalıştırır. Ana makinenizdeki 8080 portunu konteyner içindeki 80 portuna eşler. Bu bağlantı eşlemesi, tarayıcınızda http://localhost:8080 adresini ziyaret edebileceğiniz ve varsayılan NGINX sayfasını görebileceğiniz anlamına gelir. Konteyner, Docker Hub’dan çekilen nginx imajını kullanır.
Yeni konteyner, NGINX etkin olduğu için çalışmaya devam etmelidir. Günlükleri şu komutla kontrol ederseniz:
docker logs mynginx
derrickmwiti@Derricks-MacBook-Pro % docker logs mynginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2025/03/20 04:33:10 [notice]1#1: using the "epoll" event method2025/03/20 04:33:10 [notice]1#1: nginx/1.27.42025/03/20 04:33:10 [notice]1#1: built by gcc 12.2.0 (Debian 12.2.0-14) 2025/03/20 04:33:10 [notice]1#1: OS: Linux 6.10.14-linuxkit2025/03/20 04:33:10 [notice]1#1: getrlimit(RLIMIT_NOFILE): 1048576:10485762025/03/20 04:33:10 [notice]1#1: start worker processes2025/03/20 04:3Altyapı:
NGINX’in yazdığı iletileri görebilirsiniz.
NGINX ile Özel İçerik Sunma
Konteyner imajına dahil olan varsayılan sayfa yerine bir HTML sayfası sunmak isteyebilirsiniz. Yerel makinenizde basit bir dosya oluşturup bunu konteynere bağlayabilirsiniz. Bu, içeriğinizi konteynerden ayrı tutar. Sayfanızı her düzenlediğinizde, değişikliği görmek için tarayıcıyı yenileyebilirsiniz.
Özel bir HTML sayfası oluşturma
Yerel makinenizde uygun bir konum seçin. Örneğin, ana dizininizde html_content adlı bir klasör olabilir. Orada bir index.html dosyası oluşturun. Şuna benzer görünebilir:
<html><head><title>My NGINX Page</title></head><body><h1>Hello from my Docker NGINX setup!</h1><p>This is a custom page served from a local folder.</p></body></html>Altyapı:
Bu, temel bir HTML sayfasıdır. İstediğiniz metni veya stilleri ekleyebilirsiniz. İhtiyaçlarınıza uygun görseller veya JavaScript de ekleyin.
HTML sayfasını NGINX konteynerine bağlama
Resmi NGINX imajı, varsayılan olarak içeriği /usr/share/nginx/html konumundan sunar. Yerel klasörünüzü konteyner içindeki bu konuma eşleyebilirsiniz. Bu, Docker’da -v (volume) bayrağıyla yapılır. Bir bağlantı noktası çakışmasını önlemek için mynginx adlı mevcut bir konteyneri durdurun:
docker run --name mynginx -p8080:80 -d\-v /Users/derrickmwiti/Documents/html_content:/usr/share/nginx/html \
nginx
6f68085733eeac418c3302e5c580a4f7c5c0c36d3591d8e2a7f35f69f6308d18Altyapı:
/path/to/html_content yolunu, bilgisayarınızdaki gerçek yol ile değiştirin. Böylece, http://localhost:8080 adresine her gittiğinizde, konteyner html_content içine koyduğunuz HTML dosyasını sunar. Varsayılan olarak dosyayı index.html olarak adlandırırsanız, NGINX o dosyayı otomatik olarak yükler.
Bu yaklaşım, içeriği düzenli olarak değiştirmek istediğinizde faydalıdır. Her seferinde konteyneri yeniden oluşturmanız gerekmez. Sunucu, içeriği yerel klasörünüzden anlık olarak çeker.
İzinle ilgili bir uyarı görürseniz, yerel kullanıcınızın ve Docker’ın o klasörü okuyabildiğinden emin olmanız gerekebilir.
Linux’ta bu, sahipliği veya dosya izinlerini ayarlamak anlamına gelebilir. Windows veya macOS’ta ise sürücünüze erişmesi için Docker’a izin vermeniz gerekebilir.
Özel Bir NGINX Docker İmajı Oluşturma
Yerel bir klasörü bağlamak, basit testler için hızlı bir çözümdür. Ek modüller, özel bir yapılandırma veya başka bir ince ayar isteyebilirsiniz. İşte bu noktada bir imaj oluşturmak faydalı olur.
Docker, Dockerfile olarak bilinen küçük bir tarif dosyası oluşturmayı kolaylaştırır; böylece konteyneri tam istediğiniz gibi kurabilirsiniz. Ardından başkalarıyla paylaşabileceğiniz ya da bir kayda gönderebileceğiniz bir imaja sahip olursunuz. Bu, insanlara bir sürü yerel dosyayı bağlamalarını söylemekten daha pratik olabilir.
Bir Dockerfile oluşturma
Dockerfile yalnızca düz bir metin dosyasıdır. Adını Dockerfile koyabilirsiniz ya da isterseniz başka bir ad seçebilirsiniz. Yeni bir dizine yerleştirin. İşte basit bir örnek:
FROM nginx:latest
COPY index.html /usr/share/nginx/html/index.htmlAltyapı:
Bu, resmi nginx:latest imajını temel alır. Ardından yerel index.html dosyasını konteynerdeki varsayılan web içerik klasörüne kopyalar. Gerekirse daha fazla satır ekleyebilirsiniz. Örneğin, özel bir nginx.conf kopyalayabilir veya kurmak istediğiniz modülleri ekleyebilirsiniz. Bu, ihtiyaçlarınıza bağlıdır. Yalnızca statik bir sayfa yerleştirmek istiyorsanız, yukarıdaki parça yeterlidir.
Dockerfile’ı hazırladıktan sonra, aynı klasöre özel index.html dosyanızı ekleyin. Ardından derleyebilirsiniz. Tipik komut şudur:
Sondaki nokta, geçerli dizinin derleme bağlamı olduğunu belirtir. Docker, o dizindeki Dockerfile’ı okur. Sonunda yerel sisteminizde mynginximage adlı bir imaj elde edersiniz. Şununla kontrol edin:
docker images
mynginximage latest d35c2bbe10ab 36 seconds ago 281MBAltyapı:
Listede yeni adı görmelisiniz. Bu yaklaşım, Dockerfile ve HTML’inizi tek bir imajda birleştirdiğiniz anlamına gelir. Çalışma zamanında hiçbir şey bağlamanız gerekmez.
Özel imajı derleme ve çalıştırma
Artık mynginximage hazır olduğuna göre, çalıştırabilirsiniz:
docker run --name mycustomnginx -p8080:80 -d mynginximageAltyapı:
Bağlantı noktası çakışmalarını önlemek için önceki konteyneri durdurduğunuzdan emin olun.
Bu konteyner, Dockerfile’a yerleştirdiğiniz sayfayı otomatik olarak sunar. Tarayıcıda http://localhost:8080 adresini açarsanız, o HTML metnini görmelisiniz.
Dockerfile’ınızı başkalarıyla paylaşabilir veya derlenen imajı bir kayda gönderebilirsiniz. Böylece ekip arkadaşlarınız veya meslektaşlarınız yerel klasörleri kopyalamadan imajı kolayca çalıştırabilir.
Bu, minimal bir özel NGINX imajı oluşturma sürecini tamamlar. Resmi temelden başladınız, bir iki dosya kopyaladınız ve özel sitenizi içeren yeni bir konteyner ürettiniz. Dockerfile’ı daha da genişletebilirsiniz. Örneğin, çok aşamalı bir derlemede php-fpm ile PHP’yi ele alacak şekilde yapılandırmayı değiştirmek veya NGINX’in varsayılan olarak sunmadığı özel modüller eklemek isteyebilirsiniz.
Bu yaklaşım, Docker’ın esnekliğini öne çıkarır: Dockerfile’daki her katman belirli bir görevi üstlenebilir ve nihai imaj kolayca dağıtılabilir. Web içeriği üzerinde kontrolünüz olur; ayrıca konteynerinizin projenize uygun olması için ayarları değiştirme seçeneğiniz vardır.
Bu 10 Docker Proje Fikrini keşfederek veri bilimi uygulamaları oluşturma ve optimize etmeye odaklı uygulamalı projelerle Docker’ı öğrenin.
NGINX’i Ters Proxy Olarak Kurma
NGINX, gelen istekleri aynı sistemdeki diğer servislere veya ayrı makinelere yönlendirebilir. Bu genellikle ters proxy kurulumu olarak adlandırılır. İsteklerin tek bir giriş noktasından geçebilmesi için NGINX’i bir uygulama grubunun önüne yerleştirebilirsiniz.
Bu, farklı portlarda dinleyen birden fazla Docker konteyneriniz olduğunda ve hepsi için tek bir alan adı istediğinizde yaygındır. NGINX 80 veya 443 gibi standart bir portu dinler, ardından yolu, ana makine adını veya diğer etkenleri temel alarak trafiği doğru servise yönlendirir.
Ters proxy’yi anlamak
NGINX bu şekilde yapılandırıldığında, istemci arka plandaki iletişimin farkında değildir. NGINX, istekleri alıp ileten ve ardından yanıtları istemciye geri gönderen, kamusal yüz işlevini görür.
Bu tasarım ağ yapınızı basitleştirir. Ayrıca önbellekleme ayarlamak, TLS sertifikaları eklemek, yük dengeleme yapmak veya diğer gelişmiş görevleri yürütmek için bir fırsat sunar. Bu görevleri birden çok hizmet arasında dağıtmak yerine tek bir yerde yönetmek genellikle daha kolaydır.
Tipik bir senaryo, 80 portunda NGINX çalıştıran bir konteynerin, istekleri 3000 portunda çalışan bir uygulama konteynerine göndermesini içerebilir. İstemci http://yourdomain.com adresini ziyaret ederken, trafik arka planda ayrı bir konteynere yönlendirilir.
Bu, uygulama konteynerinizin varsayılan portunu korumasına, kullanıcı için minimum ek yükle olanak tanıyabilir. Bunu yapmanın bir başka nedeni de, servislerinizin dahili ayrıntılarını gizlemek veya tutarlı bir URL yapısı sunmak isteyebilirsiniz.
Ters proxy için NGINX yapılandırma
Bunu başarmak için, vekil (proxy) yönergeleri kullanan özel bir NGINX yapılandırma dosyasına ihtiyacınız var. Bunu, konteyneri çalıştırırken yeni bir yapılandırma dosyası bağlayarak veya bunu içeren özel bir imaj oluşturarak yapabilirsiniz. Genel fikri göstermek için basit bir örnek:
server {
listen 80;
location / {
proxy_pass http://myapp:3000/;}}Altyapı:
Yukarıdaki parçada, NGINX konteynerinizde 80 portuna gelen her istek myapp:3000 adresine gönderilir. myapp adı, Docker ağını kullandığınızda yaygın olan, bu adla erişilebilen başka bir konteyner olduğunu ima eder.
Bağımsız konteynerler kullanıyorsanız, konteynerin IP adresini eşleyebilir veya ana makinenin IP’sini kullanabilirsiniz. Ayrıca proxy_set_header Host $host gibi daha gelişmiş ayarlar ekleyebilir ya da uygulamanıza uygun şekilde zaman aşımı değerlerini ayarlayabilirsiniz.
Bu dosyayı çalışma zamanında bağlamayı tercih ederseniz, şuna benzer bir şey yapabilirsiniz:
Bu komut, yerel nginx.conf dosyanızı varsayılan yapılandırma olarak bağlayarak NGINX konteynerini çalıştırır. Ayrıca konteyneri, diğer konteynerinizin (myapp) bulunduğu mynetwork adlı bir Docker ağına bağlar. Yapılandırmanızı konteynerin dışında tutmak istiyorsanız bu genellikle en basit yaklaşımdır.
Statik bir düzen istiyorsanız bu dosyayı bir Dockerfile içine koymak da mümkündür. Her iki yaklaşım da, başvuru adlarının konteynerlerinize ve ağlarınıza nasıl isim verdiğinizle eşleştiği sürece çalışır.
Bu tasarım, tüm web servisleriniz için tek bir alan adı veya IP’ye ve ortak bir porta sahip olmanızı sağlar. Birden çok arka uç konteyneriyle uğraşıyorsanız, yapılandırmanızda her biri farklı bir konteyner portunu işaret eden birden çok konum tanımlayabilirsiniz. NGINX daha sonra URL yoluna göre her servise yönlendirme yapabilir. Bu, giriş noktalarını derli toplu bir şekilde birleştirdiği için mikro servisler için popüler bir yaklaşımdır.
NGINX Dağıtımı için Docker Compose Kullanma
Ters proxy, birlikte çalışan birden çok konteyneriniz olduğunda genellikle daha kullanışlı hale gelir. Docker Compose, birçok hizmeti tek bir dosyada tanımlamanıza olanak tanıyan bir araçtır. Ardından tek bir komutla hepsini ayağa kaldırabilir veya indirebilirsiniz. Tüm ayrıntılar standart bir dosyada bulunduğundan, konteyner oluşturma veya bağlantı noktası eşlemede hata yapma olasılığını azaltır.
Docker Compose’a giriş
Docker Compose, konteyner kümelerini yönetmenizi sağlar. Her hizmeti tanımlar, kullanılacak imajı, yayınlanacak portları, bağlanacak birimleri ve katılınacak ağları belirtirsiniz. Sonrasında basit bir komut (docker compose up -d) her şeyi bir anda başlatır.
Bu yaklaşım, yerel geliştirme veya birden çok Docker konteynerini koordine etmeniz gereken hazırlık ortamları için kullanışlıdır. Yaygın dosya formatı YAML’dir.
Docker Compose çeşitli işletim sistemlerinde çalışabilse de, kurulu ve tanınır olduğundan emin olmalısınız. Modern Docker Desktop kurulumları genellikle varsayılan olarak içerir. Sürümünüzü şu komutla kontrol edin:
docker compose version
Docker Compose version v2.33.1-desktop.1Altyapı:
Sürüm ayrıntılarını görüyorsanız, devam etmeye hazırsınız. Görmüyorsanız, Docker Compose’u etkinleştirme veya kurma hakkında Docker dokümantasyonuna bakın.
docker-compose.yml dosyası oluşturma
Dosya genellikle bir services bölümü içerir. Aşağıda, statik içerik sunmak için tek bir NGINX konteyneri kuran basit bir docker-compose.yml örneği yer alır:
services: Uygulamanızı oluşturan hizmetleri (konteynerleri) tanımlar.
web: Bu hizmet en son NGINX imajını kullanır.
ports: Konteyner içindeki 80 portunu ana makinenizdeki 8080 portuna eşler. Bu, web sunucusuna http://localhost:8080 üzerinden erişmenizi sağlar.
volumes: Yerel html dizinini, konteyner içindeki NGINX’in varsayılan içerik dizinine (/usr/share/nginx/html) bağlar. Bu kurulum, NGINX’in özel statik içeriğinizi sunmasını sağlar.
Docker Compose ile hizmetleri dağıtma
docker-compose.yml dosyanızın bulunduğu dizinde, html adlı bir alt dizin oluşturun.
Statik HTML dosyalarınızı (ör. index.html) bu html dizinine yerleştirin. Bu örnekte, gösterim amacıyla basit bir Bootstrap stilli sayfa oluşturdum.
Bir terminal açın ve docker-compose.yml dosyasını içeren proje dizininize gidin.
Hizmeti başlatmak için aşağıdaki komutu çalıştırın:
docker compose up -d[+] Running 1/1
✔ Container html_content-web-1 Started Altyapı:
-d bayrağı, konteyneri ayrık modda çalıştırır; yani arka planda çalışmasına izin verir.
Docker Compose, geçerli dizindeki docker-compose.yml dosyasına bakar. Henüz mevcut olmayan imajları çeker ve ardından her konteyneri başlatır.
Web tarayıcınızı açın ve http://localhost:8080 adresine gidin.
Bu, hepsini bir kerede durdurur ve kaldırır. Tüm ortamı çoğaltmak isterseniz, Docker Compose dosyasını ve ilgili kodu yeni bir makineye kopyalayıp aynı komutları çalıştırmanız yeterlidir. Bu, minimum manuel adımla tutarlı sonuçlar elde etmenizi sağlar.
NGINX Konteynerlerini Yönetme
Docker Compose yaklaşımı çoklu hizmet iş akışları için popüler olsa da, bazen yalnızca tek bir konteyneri veya küçük bir kümeyi yönetmeniz gerekir. Docker, nelerin çalıştığını görmenize, konteynerleri duraklatmanıza veya durdurmanıza ve gerekirse kaldırmanıza yardımcı olan birkaç temel komut sağlar.
Bunlar, özellikle birden fazla NGINX konteyneri veya tekrarlı derlemelerle denemeler yapıyorsanız, bakım için elzemdir.
Çalışan konteynerleri görüntüleme
Hangi konteynerlerin çalıştığını görmek istediğinizde şunu kullanabilirsiniz:
dockerps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d386c085129 mynginximage "/docker-entrypoint.…"4 minutes ago Up 4 minutes 0.0.0.0:8080->80/tcp mycustomnginxAltyapı:
Bu komut, her biri bir kimlik, imaj, ad ve daha fazlasına sahip etkin konteynerlerin bir tablosunu yazdırır. Duranlar da dahil tüm konteynerleri görmek isterseniz şunu kullanın:
Bu, sisteminizde var olan tüm konteynerleri, çıkmış olanlar da dahil, gösterir. Eski çalıştırmalardan hangilerinin hâlâ kaldığını görmek çoğu zaman faydalıdır. Birden fazla imajla denemeler yaptıysanız, mynginx, mycustomnginx gibi adlara sahip konteynerleriniz olabilir.
Konteynerleri durdurma ve kaldırma
Bir konteynerle işiniz bittiğinde, adını kullanarak durdurabilirsiniz:
docker stop mynginx
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d386c085129 mynginximage "/docker-entrypoint.…"4 minutes ago Up 4 minutes 0.0.0.0:8080->80/tcp mycustomnginxAltyapı:
Bu komut, konteynere bir durdurma sinyali gönderir; bu da NGINX’in düzgün şekilde kapanmasına yol açmalıdır. Hemen ardından konteyneri kaldırmak isterseniz şunu çalıştırın:
Bu, konteyner hâlâ çalışıyorsa durdurup kaldırmayı zorlar. Üretim ortamında bu yaklaşımı kullanırken dikkatli olun; çünkü konteyneri zarif bir şekilde kapatmadan sonlandırır. Bir diğer bakım komutu olan docker rmi, sisteminizden imajları kaldırır.
Bu, artık ihtiyaç duymadığınız imajları silerek alan açmak istediğinizde faydalıdır. Ancak Docker, yalnızca çalışan bir konteyner tarafından kullanılmayan imajları siler.
Sonuç
Docker içinde NGINX, web sayfaları sunmanın veya trafiği diğer servislere yönlendirmenin kullanışlı bir yoludur. Resmi imajı çalıştırabilir veya basit bir Dockerfile ile kendi imajınızı oluşturabilirsiniz. Docker Compose, birden çok konteyneri koordine ederek karmaşık kurulumları yönetmeyi kolaylaştırır.
Bu yöntemlerle içerik sunabilir, yönlendirme yapabilir ve web projeleri için güvenilir bir ortam sürdürebilirsiniz.
Docker’ı daha uygulamalı bir yaklaşımla öğrenmeye ihtiyaç duyuyorsanız, veri profesyonellerinin araç setindeki önemini keşfetmek için Docker’a Giriş Kursumuza göz atın.
NGINX Docker SSS
Docker kullanarak bir NGINX konteynerini nasıl çalıştırırım?⌄
Aşağıdaki komutla bir NGINX konteyneri başlatabilirsiniz:
docker run --name mynginx -p8080:80 -d nginxAltyapı:
Bu, arka planda bir NGINX konteyneri çalıştırır ve makinenizdeki 8080 portunu konteyner içindeki 80 portuna eşler. Ardından tarayıcınızda http://localhost:8080 adresine giderek erişebilirsiniz.
Docker’da NGINX ile özel içerik nasıl sunarım?
⌄
HTML dosyalarınızı sunmak için, yerel bir dizini NGINX konteynerine şu şekilde bağlayın:
docker run --name mynginx -p8080:80 -d-v /path/to/html:/usr/share/nginx/html nginxAltyapı:
/path/to/html yolunu HTML dosyalarınızın gerçek yolu ile değiştirin. Konteyner, varsayılan sayfa yerine bu dizindeki içeriği sunacaktır.
Docker’da NGINX’i ters proxy olarak nasıl yapılandırırım?
⌄
Aşağıdaki içerikle özel bir nginx.conf dosyası oluşturun:
server {
listen 80;
location / {
proxy_pass http://myapp:3000/;}}Altyapı:
Ardından, bağlanmış yapılandırma dosyasıyla NGINX konteynerini çalıştırın:
docker run --name nginxproxy -p8080:80 -d-v /path/to/nginx.conf:/etc/nginx/conf.d/default.conf nginxAltyapı:
Bu, http://localhost:8080 adresinden gelen istekleri 3000 portunda çalışan uygulamanıza yönlendirecektir.
NGINX’i diğer hizmetlerle birlikte dağıtmak için Docker Compose’u nasıl kullanırım?⌄
Aşağıdaki içerikle bir docker-compose.yml dosyası oluşturun:
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Docker'a giriş yapın ve veri uzmanlarının araç setinde Docker'ın önemini keşfedin. Docker konteynerleri, görüntüler ve daha fazlası hakkında bilgi edinin.
Bir Docker konteyneri içinde NGINX, birçok ortamda güvenilir bir web hizmeti sunabilir. Kişisel bir web sitesi, hafif bir web servisi veya ev laboratuvarı projesi üzerinde çalışıyor olabilirsiniz. Docker, farklı makineler ve kurulumlar arasında tutarlılığı korumanıza yardımcı olabilir. Bu yaklaşım, geliştirme ve üretim arasında geçiş yaparken daha az ek yükle NGINX çalıştırmanın bir yolunu sunar. Web sunucusunu basit şekilde paketlemek için Docker’a güvenmek yaygındır; bu da projelerinizi karmaşık manuel adımlar olmadan paylaşmayı kolaylaştırır.
Bu makale, hazır bir NGINX imajını nasıl çalıştıracağınızı, yerel makinenizden nasıl içerik sunacağınızı ve özel özelliklerle kendi imajınızı nasıl oluşturacağınızı açıklar. Ayrıca bir ters proxy için kurulum adımlarını ve çoklu hizmet dağıtımı için Docker Compose kullanımını da kapsar. Sonunda, birkaç basit komutla konteynerleri nasıl yöneteceğinizi ve pratik görevler için Docker ile NGINX’i nasıl entegre edeceğinize dair ayrıntılı bir bakış elde edeceksiniz.
Docker’a yeniyseniz, temel bilgileri öğrenmek için mutlaka Yeni Başlayanlar için Docker rehberimize göz atın.
Docker NGINX nedir?
Docker NGINX, NGINX web sunucusunun hafif bir konteyner içinde çalıştırılmasına karşılık gelir. Docker konteynerleri, bir uygulamayı ve ihtiyaç duyduğu tüm bağımlılıkları barındıran küçük paketlere benzer.
NGINX; güçlü performansı, kolay yapılandırması ve HTTP trafiğini esnek şekilde ele almasıyla bilinen popüler bir web sunucusudur. NGINX’i Docker ile eşleştirmek caziptir çünkü ortamı tutarlı tutar. macOS, Windows veya Linux’a dağıtım yapın; konteynerin içeriği aynı kalır. Bu da, ana işletim sisteminden bağımsız olarak aynı şekilde davranacağı anlamına gelir.
NGINX için tipik bir Docker imajı; sunucu yazılımını, varsayılan bir yapılandırmayı ve barındırılan dosyalar için bir dizin yapısını içerir. Bu konteyneri hemen çalıştırabilir veya belirli klasörleri eşleyerek, yapılandırma dosyalarını düzenleyerek ya da kendi Dockerfile’ınıza dayalı bir imaj oluşturarak uyarlayabilirsiniz. Böyle yaparak, uygulamanıza uygun şekilde NGINX’i özelleştirmek için özel modüller veya betikler ekleyebilirsiniz.
Uygulamaları nasıl konteynerleştireceğiniz hakkında daha fazla bilgi için Docker Kullanarak Bir Uygulama Nasıl Konteynerleştirilir başlıklı eğitimimize bakın. Docker ile makine öğrenmesi uygulamalarını başlangıç seviyesine uygun biçimde nasıl konteynerleştireceğinizi daha ayrıntılı anlatır.
Önkoşullar
NGINX konteynerlerini çalıştırmaya başlamadan önce Docker’ın kurulu olduğundan emin olun. Docker’ın macOS, Windows ve çeşitli Linux dağıtımları için resmi yükleyicileri vardır. Docker dokümantasyonu, her işletim sistemi için adım adım bir süreç sağlar.
Docker’a başlamak için kapsamlı bir rehber olarak Docker’a Giriş kursumuza göz atın.
Kurulumu, aşağıdakine benzer hızlı bir komutla test edin:
Sürüm ayrıntılarını görüyorsanız Docker hazır demektir. Docker’ın kendisine ek olarak, NGINX imajını Docker Hub’dan çekmek için internet erişimine ihtiyacınız var. Kendi imajınızı oluşturmayı planlıyorsanız bir Dockerfile yazmak için bir metin düzenleyiciye de ihtiyacınız olacak. Herhangi bir metin düzenleyici iş görür; ancak size rahat geleni seçin.
Bir Docker Konteynerinde NGINX Kurulumu
Hazır bir imajdan NGINX çalıştırmak genellikle en hızlı yöntemdir. Docker Hub’dan saniyeler içinde çekebilir ve ardından bir konteyner başlatabilirsiniz. Sonrasında, tarayıcınızda varsayılan sayfayı görürsünüz. Bu kısa süreç, Docker tabanlı sunucu kurulumlarının çoğunda ilk adımdır.
NGINX Docker imajını çekme
Resmi NGINX imajı, Docker Hub’da
nginxadıyla herkese açıktır.Şu şekilde çekin:
Bu komut kayda gider ve en son sürümü alır. Her şey tamamlandığında, makinenizde mevcut olduğunu kontrol edebilirsiniz:
Bu komut yerel kitaplığınızdaki imajların bir listesini gösterir. Tablo içinde
nginximajını görmelisiniz. Bu da ondan bir konteyner oluşturmaya hazır olduğunuz anlamına gelir. Veri bilimi projeleriniz için ihtiyaç duyabileceğiniz imajların bir listesini Makine Öğrenimi ve Yapay Zeka için En İyi 12 Docker Konteyner İmajı başlıklı yazımızdan keşfedin.NGINX konteynerini çalıştırma
NGINX imajı sisteminizde olduğunda, tek bir komutla konteyneri başlatabilirsiniz:
Bu komut birkaç işi birden yapar.
mynginxadlı bir konteyneri arka planda (-dseçeneği sayesinde) çalıştırır. Ana makinenizdeki 8080 portunu konteyner içindeki 80 portuna eşler. Bu bağlantı eşlemesi, tarayıcınızda http://localhost:8080 adresini ziyaret edebileceğiniz ve varsayılan NGINX sayfasını görebileceğiniz anlamına gelir. Konteyner, Docker Hub’dan çekilennginximajını kullanır.Yeni konteyner, NGINX etkin olduğu için çalışmaya devam etmelidir. Günlükleri şu komutla kontrol ederseniz:
NGINX’in yazdığı iletileri görebilirsiniz.
NGINX ile Özel İçerik Sunma
Konteyner imajına dahil olan varsayılan sayfa yerine bir HTML sayfası sunmak isteyebilirsiniz. Yerel makinenizde basit bir dosya oluşturup bunu konteynere bağlayabilirsiniz. Bu, içeriğinizi konteynerden ayrı tutar. Sayfanızı her düzenlediğinizde, değişikliği görmek için tarayıcıyı yenileyebilirsiniz.
Özel bir HTML sayfası oluşturma
Yerel makinenizde uygun bir konum seçin. Örneğin, ana dizininizde
html_contentadlı bir klasör olabilir. Orada birindex.htmldosyası oluşturun. Şuna benzer görünebilir:Bu, temel bir HTML sayfasıdır. İstediğiniz metni veya stilleri ekleyebilirsiniz. İhtiyaçlarınıza uygun görseller veya JavaScript de ekleyin.
HTML sayfasını NGINX konteynerine bağlama
Resmi NGINX imajı, varsayılan olarak içeriği
/usr/share/nginx/htmlkonumundan sunar. Yerel klasörünüzü konteyner içindeki bu konuma eşleyebilirsiniz. Bu, Docker’da-v(volume) bayrağıyla yapılır. Bir bağlantı noktası çakışmasını önlemek içinmynginxadlı mevcut bir konteyneri durdurun:Ardından yeni bir konteyner başlatın:
/path/to/html_contentyolunu, bilgisayarınızdaki gerçek yol ile değiştirin. Böylece, http://localhost:8080 adresine her gittiğinizde, konteynerhtml_contentiçine koyduğunuz HTML dosyasını sunar. Varsayılan olarak dosyayıindex.htmlolarak adlandırırsanız, NGINX o dosyayı otomatik olarak yükler.Bu yaklaşım, içeriği düzenli olarak değiştirmek istediğinizde faydalıdır. Her seferinde konteyneri yeniden oluşturmanız gerekmez. Sunucu, içeriği yerel klasörünüzden anlık olarak çeker.
İzinle ilgili bir uyarı görürseniz, yerel kullanıcınızın ve Docker’ın o klasörü okuyabildiğinden emin olmanız gerekebilir.
Linux’ta bu, sahipliği veya dosya izinlerini ayarlamak anlamına gelebilir. Windows veya macOS’ta ise sürücünüze erişmesi için Docker’a izin vermeniz gerekebilir.
Özel Bir NGINX Docker İmajı Oluşturma
Yerel bir klasörü bağlamak, basit testler için hızlı bir çözümdür. Ek modüller, özel bir yapılandırma veya başka bir ince ayar isteyebilirsiniz. İşte bu noktada bir imaj oluşturmak faydalı olur.
Docker, Dockerfile olarak bilinen küçük bir tarif dosyası oluşturmayı kolaylaştırır; böylece konteyneri tam istediğiniz gibi kurabilirsiniz. Ardından başkalarıyla paylaşabileceğiniz ya da bir kayda gönderebileceğiniz bir imaja sahip olursunuz. Bu, insanlara bir sürü yerel dosyayı bağlamalarını söylemekten daha pratik olabilir.
Bir Dockerfile oluşturma
Dockerfile yalnızca düz bir metin dosyasıdır. Adını
Dockerfilekoyabilirsiniz ya da isterseniz başka bir ad seçebilirsiniz. Yeni bir dizine yerleştirin. İşte basit bir örnek:Bu, resmi
nginx:latestimajını temel alır. Ardından yerelindex.htmldosyasını konteynerdeki varsayılan web içerik klasörüne kopyalar. Gerekirse daha fazla satır ekleyebilirsiniz. Örneğin, özel birnginx.confkopyalayabilir veya kurmak istediğiniz modülleri ekleyebilirsiniz. Bu, ihtiyaçlarınıza bağlıdır. Yalnızca statik bir sayfa yerleştirmek istiyorsanız, yukarıdaki parça yeterlidir.Dockerfile’ı hazırladıktan sonra, aynı klasöre özel
index.htmldosyanızı ekleyin. Ardından derleyebilirsiniz. Tipik komut şudur:Sondaki nokta, geçerli dizinin derleme bağlamı olduğunu belirtir. Docker, o dizindeki Dockerfile’ı okur. Sonunda yerel sisteminizde
mynginximageadlı bir imaj elde edersiniz. Şununla kontrol edin:Listede yeni adı görmelisiniz. Bu yaklaşım, Dockerfile ve HTML’inizi tek bir imajda birleştirdiğiniz anlamına gelir. Çalışma zamanında hiçbir şey bağlamanız gerekmez.
Özel imajı derleme ve çalıştırma
Artık
mynginximagehazır olduğuna göre, çalıştırabilirsiniz:Bağlantı noktası çakışmalarını önlemek için önceki konteyneri durdurduğunuzdan emin olun.
Bu konteyner, Dockerfile’a yerleştirdiğiniz sayfayı otomatik olarak sunar. Tarayıcıda http://localhost:8080 adresini açarsanız, o HTML metnini görmelisiniz.
Dockerfile’ınızı başkalarıyla paylaşabilir veya derlenen imajı bir kayda gönderebilirsiniz. Böylece ekip arkadaşlarınız veya meslektaşlarınız yerel klasörleri kopyalamadan imajı kolayca çalıştırabilir.
Bu, minimal bir özel NGINX imajı oluşturma sürecini tamamlar. Resmi temelden başladınız, bir iki dosya kopyaladınız ve özel sitenizi içeren yeni bir konteyner ürettiniz. Dockerfile’ı daha da genişletebilirsiniz. Örneğin, çok aşamalı bir derlemede
php-fpmile PHP’yi ele alacak şekilde yapılandırmayı değiştirmek veya NGINX’in varsayılan olarak sunmadığı özel modüller eklemek isteyebilirsiniz.Bu yaklaşım, Docker’ın esnekliğini öne çıkarır: Dockerfile’daki her katman belirli bir görevi üstlenebilir ve nihai imaj kolayca dağıtılabilir. Web içeriği üzerinde kontrolünüz olur; ayrıca konteynerinizin projenize uygun olması için ayarları değiştirme seçeneğiniz vardır.
Bu 10 Docker Proje Fikrini keşfederek veri bilimi uygulamaları oluşturma ve optimize etmeye odaklı uygulamalı projelerle Docker’ı öğrenin.
NGINX’i Ters Proxy Olarak Kurma
NGINX, gelen istekleri aynı sistemdeki diğer servislere veya ayrı makinelere yönlendirebilir. Bu genellikle ters proxy kurulumu olarak adlandırılır. İsteklerin tek bir giriş noktasından geçebilmesi için NGINX’i bir uygulama grubunun önüne yerleştirebilirsiniz.
Bu, farklı portlarda dinleyen birden fazla Docker konteyneriniz olduğunda ve hepsi için tek bir alan adı istediğinizde yaygındır. NGINX 80 veya 443 gibi standart bir portu dinler, ardından yolu, ana makine adını veya diğer etkenleri temel alarak trafiği doğru servise yönlendirir.
Ters proxy’yi anlamak
NGINX bu şekilde yapılandırıldığında, istemci arka plandaki iletişimin farkında değildir. NGINX, istekleri alıp ileten ve ardından yanıtları istemciye geri gönderen, kamusal yüz işlevini görür.
Bu tasarım ağ yapınızı basitleştirir. Ayrıca önbellekleme ayarlamak, TLS sertifikaları eklemek, yük dengeleme yapmak veya diğer gelişmiş görevleri yürütmek için bir fırsat sunar. Bu görevleri birden çok hizmet arasında dağıtmak yerine tek bir yerde yönetmek genellikle daha kolaydır.
Tipik bir senaryo, 80 portunda NGINX çalıştıran bir konteynerin, istekleri 3000 portunda çalışan bir uygulama konteynerine göndermesini içerebilir. İstemci http://yourdomain.com adresini ziyaret ederken, trafik arka planda ayrı bir konteynere yönlendirilir.
Bu, uygulama konteynerinizin varsayılan portunu korumasına, kullanıcı için minimum ek yükle olanak tanıyabilir. Bunu yapmanın bir başka nedeni de, servislerinizin dahili ayrıntılarını gizlemek veya tutarlı bir URL yapısı sunmak isteyebilirsiniz.
Ters proxy için NGINX yapılandırma
Bunu başarmak için, vekil (proxy) yönergeleri kullanan özel bir NGINX yapılandırma dosyasına ihtiyacınız var. Bunu, konteyneri çalıştırırken yeni bir yapılandırma dosyası bağlayarak veya bunu içeren özel bir imaj oluşturarak yapabilirsiniz. Genel fikri göstermek için basit bir örnek:
Yukarıdaki parçada, NGINX konteynerinizde 80 portuna gelen her istek
myapp:3000adresine gönderilir.myappadı, Docker ağını kullandığınızda yaygın olan, bu adla erişilebilen başka bir konteyner olduğunu ima eder.Bağımsız konteynerler kullanıyorsanız, konteynerin IP adresini eşleyebilir veya ana makinenin IP’sini kullanabilirsiniz. Ayrıca
proxy_set_header Host $hostgibi daha gelişmiş ayarlar ekleyebilir ya da uygulamanıza uygun şekilde zaman aşımı değerlerini ayarlayabilirsiniz.Bu dosyayı çalışma zamanında bağlamayı tercih ederseniz, şuna benzer bir şey yapabilirsiniz:
Bu komut, yerel
nginx.confdosyanızı varsayılan yapılandırma olarak bağlayarak NGINX konteynerini çalıştırır. Ayrıca konteyneri, diğer konteynerinizin (myapp) bulunduğumynetworkadlı bir Docker ağına bağlar. Yapılandırmanızı konteynerin dışında tutmak istiyorsanız bu genellikle en basit yaklaşımdır.Statik bir düzen istiyorsanız bu dosyayı bir Dockerfile içine koymak da mümkündür. Her iki yaklaşım da, başvuru adlarının konteynerlerinize ve ağlarınıza nasıl isim verdiğinizle eşleştiği sürece çalışır.
Bu tasarım, tüm web servisleriniz için tek bir alan adı veya IP’ye ve ortak bir porta sahip olmanızı sağlar. Birden çok arka uç konteyneriyle uğraşıyorsanız, yapılandırmanızda her biri farklı bir konteyner portunu işaret eden birden çok konum tanımlayabilirsiniz. NGINX daha sonra URL yoluna göre her servise yönlendirme yapabilir. Bu, giriş noktalarını derli toplu bir şekilde birleştirdiği için mikro servisler için popüler bir yaklaşımdır.
NGINX Dağıtımı için Docker Compose Kullanma
Ters proxy, birlikte çalışan birden çok konteyneriniz olduğunda genellikle daha kullanışlı hale gelir. Docker Compose, birçok hizmeti tek bir dosyada tanımlamanıza olanak tanıyan bir araçtır. Ardından tek bir komutla hepsini ayağa kaldırabilir veya indirebilirsiniz. Tüm ayrıntılar standart bir dosyada bulunduğundan, konteyner oluşturma veya bağlantı noktası eşlemede hata yapma olasılığını azaltır.
Docker Compose’a giriş
Docker Compose, konteyner kümelerini yönetmenizi sağlar. Her hizmeti tanımlar, kullanılacak imajı, yayınlanacak portları, bağlanacak birimleri ve katılınacak ağları belirtirsiniz. Sonrasında basit bir komut (
docker compose up -d) her şeyi bir anda başlatır.Bu yaklaşım, yerel geliştirme veya birden çok Docker konteynerini koordine etmeniz gereken hazırlık ortamları için kullanışlıdır. Yaygın dosya formatı YAML’dir.
Docker Compose çeşitli işletim sistemlerinde çalışabilse de, kurulu ve tanınır olduğundan emin olmalısınız. Modern Docker Desktop kurulumları genellikle varsayılan olarak içerir. Sürümünüzü şu komutla kontrol edin:
Sürüm ayrıntılarını görüyorsanız, devam etmeye hazırsınız. Görmüyorsanız, Docker Compose’u etkinleştirme veya kurma hakkında Docker dokümantasyonuna bakın.
docker-compose.yml dosyası oluşturma
Dosya genellikle bir services bölümü içerir. Aşağıda, statik içerik sunmak için tek bir NGINX konteyneri kuran basit bir
docker-compose.ymlörneği yer alır:Dosyayı şöyle yorumlayabilirsiniz:
htmldizinini, konteyner içindeki NGINX’in varsayılan içerik dizinine (/usr/share/nginx/html) bağlar. Bu kurulum, NGINX’in özel statik içeriğinizi sunmasını sağlar.Docker Compose ile hizmetleri dağıtma
docker-compose.ymldosyanızın bulunduğu dizinde,htmladlı bir alt dizin oluşturun.Statik HTML dosyalarınızı (ör.
index.html) buhtmldizinine yerleştirin. Bu örnekte, gösterim amacıyla basit bir Bootstrap stilli sayfa oluşturdum.Bir terminal açın ve
docker-compose.ymldosyasını içeren proje dizininize gidin.Hizmeti başlatmak için aşağıdaki komutu çalıştırın:
-dbayrağı, konteyneri ayrık modda çalıştırır; yani arka planda çalışmasına izin verir.Docker Compose, geçerli dizindeki
docker-compose.ymldosyasına bakar. Henüz mevcut olmayan imajları çeker ve ardından her konteyneri başlatır.Web tarayıcınızı açın ve http://localhost:8080 adresine gidin.
NGINX’in statik içeriğinizi sunduğunu görmelisiniz.
Çalışan hizmetlerinizin durumunu şununla inceleyebilirsiniz:
Her şeyi kapatmanız gerekirse, tek bir komut konteynerleri kaldırabilir:
Bu, hepsini bir kerede durdurur ve kaldırır. Tüm ortamı çoğaltmak isterseniz, Docker Compose dosyasını ve ilgili kodu yeni bir makineye kopyalayıp aynı komutları çalıştırmanız yeterlidir. Bu, minimum manuel adımla tutarlı sonuçlar elde etmenizi sağlar.
NGINX Konteynerlerini Yönetme
Docker Compose yaklaşımı çoklu hizmet iş akışları için popüler olsa da, bazen yalnızca tek bir konteyneri veya küçük bir kümeyi yönetmeniz gerekir. Docker, nelerin çalıştığını görmenize, konteynerleri duraklatmanıza veya durdurmanıza ve gerekirse kaldırmanıza yardımcı olan birkaç temel komut sağlar.
Bunlar, özellikle birden fazla NGINX konteyneri veya tekrarlı derlemelerle denemeler yapıyorsanız, bakım için elzemdir.
Çalışan konteynerleri görüntüleme
Hangi konteynerlerin çalıştığını görmek istediğinizde şunu kullanabilirsiniz:
Bu komut, her biri bir kimlik, imaj, ad ve daha fazlasına sahip etkin konteynerlerin bir tablosunu yazdırır. Duranlar da dahil tüm konteynerleri görmek isterseniz şunu kullanın:
Bu, sisteminizde var olan tüm konteynerleri, çıkmış olanlar da dahil, gösterir. Eski çalıştırmalardan hangilerinin hâlâ kaldığını görmek çoğu zaman faydalıdır. Birden fazla imajla denemeler yaptıysanız,
mynginx,mycustomnginxgibi adlara sahip konteynerleriniz olabilir.Konteynerleri durdurma ve kaldırma
Bir konteynerle işiniz bittiğinde, adını kullanarak durdurabilirsiniz:
Bu komut, konteynere bir durdurma sinyali gönderir; bu da NGINX’in düzgün şekilde kapanmasına yol açmalıdır. Hemen ardından konteyneri kaldırmak isterseniz şunu çalıştırın:
Durdurma ve kaldırmayı tek adımda yapan bir komutu tercih ediyorsanız şunu deneyin:
Bu, konteyner hâlâ çalışıyorsa durdurup kaldırmayı zorlar. Üretim ortamında bu yaklaşımı kullanırken dikkatli olun; çünkü konteyneri zarif bir şekilde kapatmadan sonlandırır. Bir diğer bakım komutu olan
docker rmi, sisteminizden imajları kaldırır.Bu, artık ihtiyaç duymadığınız imajları silerek alan açmak istediğinizde faydalıdır. Ancak Docker, yalnızca çalışan bir konteyner tarafından kullanılmayan imajları siler.
Sonuç
Docker içinde NGINX, web sayfaları sunmanın veya trafiği diğer servislere yönlendirmenin kullanışlı bir yoludur. Resmi imajı çalıştırabilir veya basit bir Dockerfile ile kendi imajınızı oluşturabilirsiniz. Docker Compose, birden çok konteyneri koordine ederek karmaşık kurulumları yönetmeyi kolaylaştırır.
Bu yöntemlerle içerik sunabilir, yönlendirme yapabilir ve web projeleri için güvenilir bir ortam sürdürebilirsiniz.
Docker’ı daha uygulamalı bir yaklaşımla öğrenmeye ihtiyaç duyuyorsanız, veri profesyonellerinin araç setindeki önemini keşfetmek için Docker’a Giriş Kursumuza göz atın.