Bir Docker imajını çalıştırmanın yolunu merak ediyorsanız, yalnız değilsiniz. İmajı Docker Hub’dan yeni çekmiş olun ya da kendiniz oluşturmuş olun, onu çalıştırmak uygulamanızı hayata geçiren kilit adımdır.
Bu eğitim, docker run komutuna ve ötesine başlangıç düzeyinde, anlaşılır bir rehberdir. Şunları öğreneceksiniz:
Docker imajlarının ve konteynerlerin aslında ne olduğunu.
Bir imajı farklı seçeneklerle nasıl çalıştıracağınızı.
Ve konteynerleri bir profesyonel gibi nasıl durduracağınızı, sileceğinizi ve sorun gidereceğinizi.
Sonunda, kendi konteynerlerinizi başlatırken ve kaputun altında tam olarak neler olup bittiğini anlarken kendinize güveneceksiniz.
Docker İmajlarını ve Konteynerleri Anlama
Komut örneklerine geçmeden önce, Docker imajlarını ve konteynerleri basitçe anlayalım.
Bu terimlere hâlihazırda aşinaysanız, bir sonraki bölüme geçebilirsiniz!
Docker imajı nedir?
Docker imajı, uygulamanız için değiştirilemez bir plandır. Konteynerinizin ihtiyaç duyduğu her şeyi tanımlar: kod, kütüphaneler, ortam ve yapılandırmalar. Bir imaja sahip olduğunuzda, ondan bir ya da yüz konteyner başlatabilirsiniz. Her seferinde tutarlı kalır.
Peki imajlar nereden gelir? Dockerfile onları oluşturur. Bir Dockerfile, hangi temel imajın kullanılacağını, hangi bağımlılıkların kurulacağını ve uygulamanızın nasıl çalışacağını tanımladığınız yerdir.
Dockerfile hazır olduğunda, docker build komutunu çalıştırırsınız. Bu komut dosyadaki adımları izler ve bunları yeniden kullanılabilir bir imaja dönüştürür.
Docker konteyneri nedir?
Docker konteyneri, bir Docker imajının çalışan sürümüdür. Uygulamanızın kendi izole ortamında çalışmasına olanak tanır ve ana sistemden bağımsız olarak tutarlı davranış sağlar.
“Bir kez derle, her yerde çalıştır” yaklaşımını izler; böylece her seferinde ortamı elle kurmanıza gerek kalmaz.
İmaj vs konteyner
Aşağıdaki tablo bir imaj ile bir konteyneri yan yana karşılaştırır:
İmaj
Konteyner
Bir imaj, bir konteyneri çalıştırmak için gereken tüm dosyaları, ikilileri, kütüphaneleri ve yapılandırmaları içeren standartlaştırılmış bir pakettir.
Bir imajın çalışma zamanı örneği.
Bir imaj değiştirilemezdir. Yani yeniden oluşturulana kadar değiştirilemez.
Konteyner değiştirilebilir. Çalışırken üzerinde değişiklik yapabilir, yeni paketler kurabilir veya yapılandırma dosyalarını değiştirebilirsiniz.
Bir Dockerfile (bir imajı oluşturmaya yönelik talimatlar) bir imaj oluşturur.
Bir imaj bir konteyner oluşturur.
Bilgisayarınız imaj dosyalarını saklar.
Bir konteyner belleğinizde çalışır.
Konteynerleştirmeye tamamen yeniyseniz, Introduction to Docker kursumuz temel kavramları uygulamalı örneklerle anlatır.
docker run Komutu
docker run komutunu çalıştırdığınızda, Docker’a bir imajdan yeni bir konteyner başlatmasını söylersiniz.
Basitçe söylemek gerekirse, izole bir ortam içinde bir program başlatırsınız. Bu program basit bir web uygulaması da olabilir, birden çok süreçli tam teşekküllü bir servis de.
Temel sözdizimi
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
[OPTIONS] - Konteynerin nasıl çalışacağını özelleştirmek için ek bayraklar
-d: Ayrık mod: konteynerleri arka planda çalıştırır
-p: Port eşleme: Tarayıcınızdan bir servise (ör. API veya web uygulaması) erişmek için bir portu açmanız gerekir. Örnek: -p 3000:3000 makinenizin 3000 portunu konteynerin 3000 portuna eşler.
--name: Docker konteynere varsayılan bir ad verir, ancak bu bayrakla yeni bir ad atayabilirsiniz.
-v: Verileri konteynerin kendisinden ayrı tutmak için kullanılır; böylece konteyner durdurulsa veya silinse bile veriler kalıcı olur.
--rm: Konteyner durduğunda onu otomatik olarak siler.
-e: Veritabanı parolaları veya API anahtarlarını uygulamanıza gömmeden iletmek için kullanın.
Etkileşimli ve ayrık konteyner çalıştırma
Docker konteynerleri iki şekilde çalıştırır: etkileşimli mod (-it) ve ayrık mod (-d). Her mod, amacınıza bağlı olarak farklı kullanım senaryolarına sahiptir.
-it: Etkileşimli mod: Bir konteynerin içinde doğrudan terminalle çalışmak istiyorsanız -it bayrağını kullanabilirsiniz. Konteyneri etkileşimli moda alır; böylece komut yazabilir, çıktıyı görebilir ve gerçek zamanlı çalışabilirsiniz.
-i: Girdiyi açık tutar ki konteynere komut yazabilesiniz
-t: Konteyner içinde terminal benzeri bir arayüz sağlar
-d: Ayrık mod: Konteyneri arka planda çalıştırır; terminaliniz diğer işler için serbest kalır.
docker run komutunun sözdizimini artık bildiğinize göre, bu bölüm özel imajlar oluşturmayı ve çalıştırmayı gösterecek.
Docker Hub’daki imajları kullanma
Docker Hub, konteyner imajları için çevrimiçi bir kütüphane gibidir. Hazır imajları alabilir veya kendi imajlarınızı yükleyip başkalarıyla paylaşabilirsiniz. Hem herkese açık hem de özel depoları destekler; böylece imajları toplulukla açıkça paylaşabilir veya dahili ekipleriniz için erişim kontrolleri uygulayabilirsiniz.
Özel imajları çalıştırma
Bir Docker imajını çalıştırmak için önce onu bir Dockerfile kullanarak oluşturmanız gerekir. Ardından yerel olarak çalıştırabilir veya paylaşmak için Docker Hub’a gönderebilirsiniz.
Öyleyse önce bir Dockerfile oluşturalım. İşte bir örnek:
# Use official Python base image
FROM python:3.11-slim
# Set working directory in the container
WORKDIR /app
# Copy requirements file and install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the app code
COPY . .
EXPOSE 5000
# Set default command
CMD ["python","app.py"]Altyapı:
Yukarıdaki Dockerfile ne anlama geliyor?
FROM python:3.11-slim: Python 3.11 sürümünü içeren temel imaj
WORKDIR /app: Konteyner içinde çalışma dizinini /app olarak ayarlar.
COPY requirements.txt . : Tüm bağımlılıkları yerel makineden konteynerin uygulama dizinine taşır.
RUN pip install --no-cache-dir -r requirements.txt: requirements.txt içindeki bağımlılıkları kurar.
COPY . . : Geçerli çalışma dizinindeki kodu (uygulamalar, yapılandırma dosyaları vb.) konteynerin uygulama dizinine kopyalar.
CMD ["python", "app.py"]: Bu imajdan bir konteyner başlatılırken app.py’yi çalıştırır.
Adım 1. Dockerfile’ı oluşturun
Bu Dockerfile’ı derlediğinizde neler olduğuna bakalım.
Bazı uygulamalar için imajları belirli bir yapılandırmayla çalıştırmanız gerekebilir. İşte iki yaygın örnek.
Veriyi kalıcı kılma
Konteynerler veriyi geçici olarak saklar. Onları sildiğinizde veri kaybolur. Volume, veriyi konteynerin dışında saklamanın bir yoludur; böylece konteyner kaldırıldığında veya yeniden başlatıldığında bile veri kalıcı olur.
Bir volume bağlamak için aşağıdakine benzer bir komut çalıştırmalısınız:
docker run -v my-volume:/app/data my-imageAltyapı:
/app/data içine yazılan veriler, konteyner kaldırıldıktan sonra bile volümde saklanır.
Ortam değişkenleri geçirme
Ortam değişkenleri, çalıştırma zamanında bir Docker konteynerine yapılandırma ayarları aktarır. Böylece Docker imajlarınızı değiştirmeden konteynerlerinizi özelleştirirsiniz.
Ortam değişkenlerini iki şekilde iletebilirsiniz:
-e parametresiyle ortam değişkenleri geçebilirsiniz. Örnek bir komut:
docker run -eENV=production -eDEBUG=False my-imageAltyapı:
Tüm ortam değişkenlerini içeren bir .env dosyası oluşturup komuta iletebilirsiniz. Örnek:
Bir konteyner çalıştıktan sonra onu görüntüleyebilir, durdurabilir ve erişebilirsiniz. Bunu nasıl yapacağınıza bakalım.
Aktif konteynerleri görüntüleme
Sisteminizde çalışan tüm Docker konteynerlerini listelemek için docker ps komutunu veya docker container ls komutunu çalıştırın. Bu komut konteyner kimliği, imaj, komut, port, durum ve diğer ayrıntıları gösterir.
Kullanılmayan konteynerleri, volumeleri, ağları ve imajları kaldırmaya daha da ileri gitmek için Docker prune rehberine göz atın.
Konteyner günlüklerine ve kabuğa erişme
docker logs - docker logs komutu, yürütme anındaki günlükleri toplu olarak getirir.
docker exec - docker exec, çalışan bir konteynerin içinde yeni bir komutu durdurmadan veya yeniden başlatmadan çalıştırmanıza olanak tanır. Bunu, konteynerinizin içinde yeni bir terminal açmak gibi düşünebilirsiniz — etrafa bakınabilir, betikler çalıştırabilir, günlükleri kontrol edebilir veya hata ayıklayabilirsiniz.
docker attach - docker attach, terminalinizi doğrudan çalışan bir konteynerin ana sürecine bağlar. Bu sayede konteynerin canlı çıktısını (günlükler, istemler vb.) görebilir ve süreç girdi kabul ediyorsa etkileşim kurabilirsiniz.
Yaygın Sorunları Giderme
Yaygın sorunlara basit çözümler. Docker imajları çalıştırırken karşılaşılan bazı tipik hatalar ve bunlara nasıl yaklaşabileceğiniz aşağıdadır.
Hata 1: “Error response from daemon: pull access denied for alpine-python, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied.”
Ne anlama gelir: Docker bir imajı çekmeye çalıştı; bu örnekte Docker Hub’daki alpine-python imajını; ancak imaj mevcut değil ya da özeldir ve kimliğiniz doğrulanmamıştır.
Nasıl düzeltilir:
Docker Hub’daki imaj adını ve etiketini tekrar kontrol edin.
Özel bir imajsa, kimlik doğrulamak için docker login çalıştırın.
Özel bir kayıttan çekiyorsanız imajın mevcut olduğundan emin olun.
Hata 2: “No such image found: <image-name>:<tag>”
Ne anlama gelir: Yerel olarak bir imajı çalıştırmayı veya etiketlemeyi denediniz; ancak imaj (ya da belirtilen etiket) sisteminizde mevcut değil.
Nasıl düzeltilir:
Mevcut imajları kontrol etmek için docker images komutunu kullanın.
Bir Docker imajını çalıştırmak, ister basit bir web sunucusu başlatıyor olun ister karmaşık bir uygulama dağıtıyor olun, konteyner kullanmanın en önemli ve güçlendirici adımlarından biridir. docker run, docker ps ve docker stop gibi yalnızca birkaç komutla artık konteynerleri güvenle başlatmaya, yönetmeye ve sorun gidermeye hazırsınız.
Daha ileri gitmeye hazırsanız, bir Dockerfile ile kendi imajınızı derlemeyi deneyin, gelişmiş docker run bayraklarını keşfedin veya birden fazla konteyneri Docker Compose ile nasıl yöneteceğinizi öğrenin.
Docker yolculuğunuza devam etmek için şu kurslara göz atın:
Intermediate Docker: Gelişmiş imaj yönetimi, volumeler ve çok konteynerli uygulamaları öğrenin.
Aynı Docker imajından birden çok konteyner çalıştırabilir miyim?⌄
Evet, aynı imajdan birden fazla konteyner çalıştırabilirsiniz. Her konteyner izoledir ve kendi ayarlarına, portlarına ve ortam değişkenlerine sahip olabilir.
Gizli bilgilerimi veya API anahtarlarını bir Docker konteynerine güvenli şekilde nasıl aktarırım?⌄
Ortam değişkenleri ayarlamak için -e bayrağını kullanın veya bir .env dosyası ve --env-file ile gizlileri çalıştırma zamanında, kodunuza gömmeden iletin.
Bir Docker imajını arka planda nasıl çalıştırırım?⌄
Terminalin başka komutlar için kullanılabilir kalmasını sağlamak üzere konteyneri ayrık modda başlatmak için docker run ile -d bayrağını kullanın.
docker exec ile docker attach arasındaki fark nedir?⌄
docker exec konteyner içinde yeni bir kabuk oturumu açar; docker attach ise konteynerin ana sürecine ve canlı çıktısına bağlanır.
Bir imajı çalıştırırken neden 'pull access denied' hatası alıyorum?⌄
Bu genellikle imajın özel olduğu veya yanlış yazıldığı anlamına gelir. Adı ve etiketi kontrol edin ve docker login ile Docker Hub’a giriş yaptığınızdan emin olun.
Bir konteyner durduktan sonra veriyi nasıl kalıcı tutarım?⌄
Veriyi konteyner dışında tutmak ve konteyner kaldırıldıktan sonra bile korunmasını sağlamak için -v bayrağıyla bir volume bağlayın.
Geliştirme amaçları için bir konteyneri çalıştırmanın en iyi yolu nedir?⌄
Etkileşimli mod için -it bayraklarını; yerel geliştirme ortamını taklit etmek için de volume bağlama ve ortam değişkenlerini kullanın.
Makinemde hangi portların çakıştığını nasıl öğrenebilirim?⌄
Belirli bir portu hangi sürecin kullandığını öğrenmek için lsof -i :<port> komutunu kullanın; ardından o süreci durdurun veya konteyneriniz için farklı bir host portu kullanın.
Çalışan bir Docker konteynerinden günlükleri nasıl görüntülerim?⌄
Konteynerin standart çıktı ve hata akışlarından günlükleri almak ve incelemek için docker logs <container_id> komutunu kullanın.
Srujana, Bilgisayar Bilimleri alanında dört yıllık dereceye sahip serbest çalışan bir teknoloji yazarıdır. Veri bilimi, bulut bilişim, geliştirme, programlama, güvenlik ve daha birçok konuyu yazmak onun için doğal bir süreçtir. Klasik edebiyata ve yeni yerler keşfetmeye tutkuyla bağlıdır.
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 imajını çalıştırmanın yolunu merak ediyorsanız, yalnız değilsiniz. İmajı Docker Hub’dan yeni çekmiş olun ya da kendiniz oluşturmuş olun, onu çalıştırmak uygulamanızı hayata geçiren kilit adımdır.
Bu eğitim,
docker runkomutuna ve ötesine başlangıç düzeyinde, anlaşılır bir rehberdir. Şunları öğreneceksiniz:Sonunda, kendi konteynerlerinizi başlatırken ve kaputun altında tam olarak neler olup bittiğini anlarken kendinize güveneceksiniz.
Docker İmajlarını ve Konteynerleri Anlama
Komut örneklerine geçmeden önce, Docker imajlarını ve konteynerleri basitçe anlayalım.
Bu terimlere hâlihazırda aşinaysanız, bir sonraki bölüme geçebilirsiniz!
Docker imajı nedir?
Docker imajı, uygulamanız için değiştirilemez bir plandır. Konteynerinizin ihtiyaç duyduğu her şeyi tanımlar: kod, kütüphaneler, ortam ve yapılandırmalar. Bir imaja sahip olduğunuzda, ondan bir ya da yüz konteyner başlatabilirsiniz. Her seferinde tutarlı kalır.
Peki imajlar nereden gelir? Dockerfile onları oluşturur. Bir Dockerfile, hangi temel imajın kullanılacağını, hangi bağımlılıkların kurulacağını ve uygulamanızın nasıl çalışacağını tanımladığınız yerdir.
Dockerfile hazır olduğunda,
docker buildkomutunu çalıştırırsınız. Bu komut dosyadaki adımları izler ve bunları yeniden kullanılabilir bir imaja dönüştürür.Docker konteyneri nedir?
Docker konteyneri, bir Docker imajının çalışan sürümüdür. Uygulamanızın kendi izole ortamında çalışmasına olanak tanır ve ana sistemden bağımsız olarak tutarlı davranış sağlar.
“Bir kez derle, her yerde çalıştır” yaklaşımını izler; böylece her seferinde ortamı elle kurmanıza gerek kalmaz.
İmaj vs konteyner
Aşağıdaki tablo bir imaj ile bir konteyneri yan yana karşılaştırır:
İmaj
Konteyner
Bir imaj, bir konteyneri çalıştırmak için gereken tüm dosyaları, ikilileri, kütüphaneleri ve yapılandırmaları içeren standartlaştırılmış bir pakettir.
Bir imajın çalışma zamanı örneği.
Bir imaj değiştirilemezdir. Yani yeniden oluşturulana kadar değiştirilemez.
Konteyner değiştirilebilir. Çalışırken üzerinde değişiklik yapabilir, yeni paketler kurabilir veya yapılandırma dosyalarını değiştirebilirsiniz.
Bir Dockerfile (bir imajı oluşturmaya yönelik talimatlar) bir imaj oluşturur.
Bir imaj bir konteyner oluşturur.
Bilgisayarınız imaj dosyalarını saklar.
Bir konteyner belleğinizde çalışır.
Konteynerleştirmeye tamamen yeniyseniz, Introduction to Docker kursumuz temel kavramları uygulamalı örneklerle anlatır.
docker run Komutu
docker runkomutunu çalıştırdığınızda, Docker’a bir imajdan yeni bir konteyner başlatmasını söylersiniz.Basitçe söylemek gerekirse, izole bir ortam içinde bir program başlatırsınız. Bu program basit bir web uygulaması da olabilir, birden çok süreçli tam teşekküllü bir servis de.
Temel sözdizimi
docker run [OPTIONS] IMAGE [COMMAND] [ARG...][OPTIONS]- Konteynerin nasıl çalışacağını özelleştirmek için ek bayraklarIMAGE- Docker imaj adı[COMMAND]- (İsteğe bağlı) İmajdaki varsayılan komutu geçersiz kılar.[ARG...]- (İsteğe bağlı) Argümanlar.Yaygın bayraklar ve seçenekler
-d: Ayrık mod: konteynerleri arka planda çalıştırır-p: Port eşleme: Tarayıcınızdan bir servise (ör. API veya web uygulaması) erişmek için bir portu açmanız gerekir. Örnek:-p 3000:3000makinenizin 3000 portunu konteynerin 3000 portuna eşler.--name: Docker konteynere varsayılan bir ad verir, ancak bu bayrakla yeni bir ad atayabilirsiniz.-v: Verileri konteynerin kendisinden ayrı tutmak için kullanılır; böylece konteyner durdurulsa veya silinse bile veriler kalıcı olur.--rm: Konteyner durduğunda onu otomatik olarak siler.-e: Veritabanı parolaları veya API anahtarlarını uygulamanıza gömmeden iletmek için kullanın.Etkileşimli ve ayrık konteyner çalıştırma
Docker konteynerleri iki şekilde çalıştırır: etkileşimli mod (
-it) ve ayrık mod (-d). Her mod, amacınıza bağlı olarak farklı kullanım senaryolarına sahiptir.-it: Etkileşimli mod: Bir konteynerin içinde doğrudan terminalle çalışmak istiyorsanız-itbayrağını kullanabilirsiniz. Konteyneri etkileşimli moda alır; böylece komut yazabilir, çıktıyı görebilir ve gerçek zamanlı çalışabilirsiniz.-i: Girdiyi açık tutar ki konteynere komut yazabilesiniz-t: Konteyner içinde terminal benzeri bir arayüz sağlar-d: Ayrık mod: Konteyneri arka planda çalıştırır; terminaliniz diğer işler için serbest kalır.Önemli komutları ve iyi uygulamaları elinizin altında tutmak için Docker for Data Science Cheat Sheet’imize göz atın.
Docker İmajlarını Çekme ve Çalıştırma
docker runkomutunun sözdizimini artık bildiğinize göre, bu bölüm özel imajlar oluşturmayı ve çalıştırmayı gösterecek.Docker Hub’daki imajları kullanma
Docker Hub, konteyner imajları için çevrimiçi bir kütüphane gibidir. Hazır imajları alabilir veya kendi imajlarınızı yükleyip başkalarıyla paylaşabilirsiniz. Hem herkese açık hem de özel depoları destekler; böylece imajları toplulukla açıkça paylaşabilir veya dahili ekipleriniz için erişim kontrolleri uygulayabilirsiniz.
Özel imajları çalıştırma
Bir Docker imajını çalıştırmak için önce onu bir Dockerfile kullanarak oluşturmanız gerekir. Ardından yerel olarak çalıştırabilir veya paylaşmak için Docker Hub’a gönderebilirsiniz.
Öyleyse önce bir Dockerfile oluşturalım. İşte bir örnek:
Yukarıdaki Dockerfile ne anlama geliyor?
FROM python:3.11-slim: Python 3.11 sürümünü içeren temel imajWORKDIR /app: Konteyner içinde çalışma dizinini/appolarak ayarlar.COPY requirements.txt .: Tüm bağımlılıkları yerel makineden konteynerin uygulama dizinine taşır.RUN pip install --no-cache-dir -r requirements.txt: requirements.txt içindeki bağımlılıkları kurar.COPY . .: Geçerli çalışma dizinindeki kodu (uygulamalar, yapılandırma dosyaları vb.) konteynerin uygulama dizinine kopyalar.Adım 1. Dockerfile’ı oluşturun
Bu Dockerfile’ı derlediğinizde neler olduğuna bakalım.
Not: Bu komutun çalışması için önce sisteminizde Docker kurulmuş olmalıdır; bu kılavuz kuruluma yardımcı olur.
Derleme komutunu çalıştırdığınızda arka planda şunlar olur:
/appolarak ayarlanır.requirements.txtkonteynere kopyalanır.pip installile kurulur./appdizinine kopyalanır.my-python-appetiketiyle işaretlenir.Adım 2: Dockerfile’ı çalıştırın
İmajınız oluşturulduktan sonra, şunu kullanarak çalıştırabilirsiniz:
Çalıştırdığınızda şunlar olur:
my-python-app’ten yeni bir konteyner oluşturulur.-p 5000:5000).CMD ["python", "app.py"] çalıştırılır ve uygulamayı başlatır.-dseçeneği (ayrık mod) nedeniyle konteyner arka planda çalışır.Bu noktada tarayıcınızda
http://localhost:5000adresine gidebilir ve uygulamanızın çalıştığını gösteren aşağıdakine benzer bir ekran göreceksiniz:Makine öğrenimi alanında çalışıyorsanız, bu ML ve AI için en iyi Docker imajları ortam kurulumunuzu hızlandırabilir.
Yapılandırmayla imaj çalıştırma
Bazı uygulamalar için imajları belirli bir yapılandırmayla çalıştırmanız gerekebilir. İşte iki yaygın örnek.
Veriyi kalıcı kılma
Konteynerler veriyi geçici olarak saklar. Onları sildiğinizde veri kaybolur. Volume, veriyi konteynerin dışında saklamanın bir yoludur; böylece konteyner kaldırıldığında veya yeniden başlatıldığında bile veri kalıcı olur.
Bir volume bağlamak için aşağıdakine benzer bir komut çalıştırmalısınız:
/app/dataiçine yazılan veriler, konteyner kaldırıldıktan sonra bile volümde saklanır.Ortam değişkenleri geçirme
Ortam değişkenleri, çalıştırma zamanında bir Docker konteynerine yapılandırma ayarları aktarır. Böylece Docker imajlarınızı değiştirmeden konteynerlerinizi özelleştirirsiniz.
Ortam değişkenlerini iki şekilde iletebilirsiniz:
-eparametresiyle ortam değişkenleri geçebilirsiniz. Örnek bir komut:.envdosyası oluşturup komuta iletebilirsiniz. Örnek:Örnek
.envdosyası:Çalışan Konteynerleri Yönetme
Bir konteyner çalıştıktan sonra onu görüntüleyebilir, durdurabilir ve erişebilirsiniz. Bunu nasıl yapacağınıza bakalım.
Aktif konteynerleri görüntüleme
Sisteminizde çalışan tüm Docker konteynerlerini listelemek için
docker pskomutunu veyadocker container lskomutunu çalıştırın. Bu komut konteyner kimliği, imaj, komut, port, durum ve diğer ayrıntıları gösterir.Yalnızca çalışanlar değil — çıkmış veya oluşturulmuş ama başlatılmamış olanlar da dahil — tüm konteynerleri görmek için
-abayrağını kullanın:Yalnızca en son oluşturulan konteyneri görmek isterseniz,
-l(last) bayrağını kullanın:Tüm konteynerleri oluşturulma zamanına göre, en yenisi en üstte olacak şekilde görmek için şunu çalıştırın:
Konteynerleri durdurma ve kaldırma
Belirli bir çalışan konteyneri durdurmak için
docker stopkomutunu ve ardından konteyner kimliğini veya adını kullanın:Tüm çalışan konteynerleri durdurmak için:
$(docker ps -q)çalışan tüm konteyner kimliklerinin listesini döndürür.Bir konteyner durdurulduktan sonra, şunu kullanarak kaldırabilirsiniz:
Duran tüm konteynerleri kaldırmak için şunu çalıştırın:
Kullanılmayan konteynerleri, volumeleri, ağları ve imajları kaldırmaya daha da ileri gitmek için Docker prune rehberine göz atın.
Konteyner günlüklerine ve kabuğa erişme
docker logskomutu, yürütme anındaki günlükleri toplu olarak getirir.docker exec, çalışan bir konteynerin içinde yeni bir komutu durdurmadan veya yeniden başlatmadan çalıştırmanıza olanak tanır. Bunu, konteynerinizin içinde yeni bir terminal açmak gibi düşünebilirsiniz — etrafa bakınabilir, betikler çalıştırabilir, günlükleri kontrol edebilir veya hata ayıklayabilirsiniz.docker attach, terminalinizi doğrudan çalışan bir konteynerin ana sürecine bağlar. Bu sayede konteynerin canlı çıktısını (günlükler, istemler vb.) görebilir ve süreç girdi kabul ediyorsa etkileşim kurabilirsiniz.Yaygın Sorunları Giderme
Yaygın sorunlara basit çözümler. Docker imajları çalıştırırken karşılaşılan bazı tipik hatalar ve bunlara nasıl yaklaşabileceğiniz aşağıdadır.
Hata 1: “Error response from daemon: pull access denied for alpine-python, repository does not exist or may require ‘docker login’: denied: requested access to the resource is denied.”
alpine-pythonimajını; ancak imaj mevcut değil ya da özeldir ve kimliğiniz doğrulanmamıştır.docker loginçalıştırın.Hata 2: “No such image found: <image-name>:<tag>”
docker imageskomutunu kullanın.Hata 3: “manifest for <image>:<tag> not found: manifest unknown: The named manifest is not known to the registry.”
docker pull <image>:<tag>komutunu kullanın.Dockerfilekullanın ve imajı şu komutla derleyin:Port çakışmaları ve bağlama hataları
Port çakışmaları, birden fazla konteynerin veya bir konteyner ile başka bir uygulamanın aynı porta erişmeye çalışmasıyla ortaya çıkar.
Sonuç
Bir Docker imajını çalıştırmak, ister basit bir web sunucusu başlatıyor olun ister karmaşık bir uygulama dağıtıyor olun, konteyner kullanmanın en önemli ve güçlendirici adımlarından biridir.
docker run,docker psvedocker stopgibi yalnızca birkaç komutla artık konteynerleri güvenle başlatmaya, yönetmeye ve sorun gidermeye hazırsınız.Daha ileri gitmeye hazırsanız, bir Dockerfile ile kendi imajınızı derlemeyi deneyin, gelişmiş
docker runbayraklarını keşfedin veya birden fazla konteyneri Docker Compose ile nasıl yöneteceğinizi öğrenin.Docker yolculuğunuza devam etmek için şu kurslara göz atın: