{"id":33518,"date":"2025-11-03T22:41:15","date_gmt":"2025-11-03T19:41:15","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=33518"},"modified":"2025-11-03T22:41:15","modified_gmt":"2025-11-03T19:41:15","slug":"debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/","title":{"rendered":"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber<\/h2>\n<p>Debian 9 (&#8220;Stretch&#8221;) her ne kadar art\u0131k eski bir s\u00fcr\u00fcm olsa da, belirli legacy sistemlerde veya \u00f6zel gereksinimleri olan ortamlarda hala kullan\u0131labilmektedir. Bu makale, Debian 9 i\u015fletim sistemi \u00fczerine Docker&#8217;\u0131 nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 ve temelden ileri seviyeye do\u011fru nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klamaktad\u0131r. Docker, uygulamalar\u0131 ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 izole edilmi\u015f, ta\u015f\u0131nabilir konteynerler i\u00e7inde paketlemeye olanak tan\u0131yan g\u00fc\u00e7l\u00fc bir platformdur. Bu sayede, &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yordu&#8221; sorununu ortadan kald\u0131rarak geli\u015ftirme, test ve \u00fcretim ortamlar\u0131 aras\u0131nda tutarl\u0131l\u0131k sa\u011flar.<\/p>\n<h3>Giri\u015f: Docker Nedir ve Neden Kullanmal\u0131y\u0131z?<\/h3>\n<p>Docker, uygulamalar\u0131 ve onlar\u0131n t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 (k\u00fct\u00fcphaneler, ayarlar, di\u011fer yaz\u0131l\u0131mlar vb.) hafif, ta\u015f\u0131nabilir ve kendi kendine yeten birimler olan &#8220;konteynerler&#8221; i\u00e7inde paketlemeyi sa\u011flayan a\u00e7\u0131k kaynakl\u0131 bir platformdur. Sanal makinelerin aksine, Docker konteynerleri i\u015fletim sistemini sanalla\u015ft\u0131rmaz; bunun yerine, ana bilgisayar\u0131n Linux \u00e7ekirde\u011fini payla\u015f\u0131r. Bu durum, konteynerlerin \u00e7ok daha h\u0131zl\u0131 ba\u015flamas\u0131n\u0131 ve \u00e7ok daha az kaynak t\u00fcketmesini sa\u011flar.<\/p>\n<p><strong>Docker Kullanman\u0131n Ba\u015fl\u0131ca Faydalar\u0131:<\/strong><\/p>\n<p>*   <strong>Tutarl\u0131l\u0131k:<\/strong> Geli\u015ftirme, test ve \u00fcretim ortamlar\u0131 aras\u0131nda tutarl\u0131l\u0131k sa\u011flar. Bir uygulaman\u0131n her yerde ayn\u0131 \u015fekilde \u00e7al\u0131\u015faca\u011f\u0131n\u0131 garanti eder.<br \/>\n*   <strong>\u0130zolasyon:<\/strong> Konteynerler birbirinden izole \u00e7al\u0131\u015f\u0131r. Bir konteynerdeki sorunlar di\u011ferlerini veya ana sistemi etkilemez.<br \/>\n*   <strong>Ta\u015f\u0131nabilirlik:<\/strong> Bir konteyner imaj\u0131 olu\u015fturuldu\u011funda, bu imaj herhangi bir Docker y\u00fckl\u00fc sistemde sorunsuz bir \u015fekilde \u00e7al\u0131\u015ft\u0131r\u0131labilir.<br \/>\n*   <strong>H\u0131z:<\/strong> Konteynerler saniyeler i\u00e7inde ba\u015flar, bu da geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerini h\u0131zland\u0131r\u0131r.<br \/>\n*   <strong>Verimlilik:<\/strong> Sanal makinelere g\u00f6re daha az kaynak t\u00fcketirler, bu da sunucu kaynaklar\u0131n\u0131n daha verimli kullan\u0131lmas\u0131na olanak tan\u0131r.<br \/>\n*   <strong>Kolay Da\u011f\u0131t\u0131m:<\/strong> Uygulamalar\u0131n da\u011f\u0131t\u0131m\u0131n\u0131 basitle\u015ftirir ve karma\u015f\u0131k ba\u011f\u0131ml\u0131l\u0131k y\u00f6netimini ortadan kald\u0131r\u0131r.<\/p>\n<p>Bu rehberde, Debian 9 sisteminizde Docker&#8217;\u0131 kuracak, temel komutlar\u0131n\u0131 \u00f6\u011frenecek, kendi imajlar\u0131n\u0131z\u0131 olu\u015fturacak, Docker Compose ile \u00e7oklu konteyner uygulamalar\u0131n\u0131 y\u00f6netecek ve veri y\u00f6netimi ile a\u011f yap\u0131land\u0131rmas\u0131 gibi konulara de\u011finece\u011fiz.<\/p>\n<h3>\u00d6n Gereksinimler<\/h3>\n<p>Docker kurulumuna ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki gereksinimlerin kar\u015f\u0131land\u0131\u011f\u0131ndan emin olun:<\/p>\n<p>*   <strong>Debian 9 (Stretch) \u0130\u015fletim Sistemi:<\/strong> Makale \u00f6zellikle Debian 9&#8217;u hedeflemektedir. G\u00fcncel Debian s\u00fcr\u00fcmleri i\u00e7in kurulum ad\u0131mlar\u0131 benzer olsa da, baz\u0131 paket isimleri veya depo URL&#8217;leri farkl\u0131l\u0131k g\u00f6sterebilir.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Kurulum ve y\u00f6netim i\u015flemleri i\u00e7in <code>sudo<\/code> yetkilerine sahip bir kullan\u0131c\u0131ya ihtiyac\u0131n\u0131z olacakt\u0131r.<br \/>\n*   <strong>\u0130nternet Ba\u011flant\u0131s\u0131:<\/strong> Docker paketlerini ve imajlar\u0131n\u0131 indirmek i\u00e7in aktif bir internet ba\u011flant\u0131s\u0131 gereklidir.<br \/>\n*   <strong>Temel Linux Komut Sat\u0131r\u0131 Bilgisi:<\/strong> Terminalde komut \u00e7al\u0131\u015ft\u0131rma konusunda temel bilgi sahibi olman\u0131z beklenir.<\/p>\n<h3>Docker Kurulumu<\/h3>\n<p>Debian 9 \u00fczerine Docker&#8217;\u0131 kurman\u0131n en g\u00fcvenli ve \u00f6nerilen yolu, Docker&#8217;\u0131n resmi deposunu kullanmakt\u0131r. Bu sayede her zaman en g\u00fcncel ve kararl\u0131 s\u00fcr\u00fcm\u00fc al\u0131rs\u0131n\u0131z.<\/p>\n<h4>Mevcut Docker S\u00fcr\u00fcmlerini Kald\u0131rma (Opsiyonel)<\/h4>\n<p>E\u011fer sisteminizde daha \u00f6nce Docker&#8217;\u0131n eski veya farkl\u0131 bir s\u00fcr\u00fcm\u00fc kuruluysa, yeni bir kurulumdan \u00f6nce bunlar\u0131 kald\u0131rmak iyi bir uygulamad\u0131r. Bu ad\u0131m, potansiyel \u00e7ak\u0131\u015fmalar\u0131 \u00f6nler.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get remove docker docker-engine docker.io containerd runc<\/code><\/pre>\n<p>Bu komut, Docker&#8217;\u0131n bilinen t\u00fcm eski paketlerini sisteminizden kald\u0131racakt\u0131r. Konteynerler, imajlar, vol\u00fcmler veya a\u011f yap\u0131land\u0131rmalar\u0131 gibi verileriniz bu i\u015flemle otomatik olarak silinmez.<\/p>\n<h4>Gerekli Paketleri Y\u00fckleme<\/h4>\n<p>Docker deposunu kullanabilmek i\u00e7in baz\u0131 temel paketlere ihtiyac\u0131m\u0131z var. Bu paketler, HTTPS \u00fczerinden g\u00fcvenli ba\u011flant\u0131 kurmay\u0131 ve GPG anahtarlar\u0131n\u0131 y\u00f6netmeyi sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update\nsudo apt-get install \\\n    apt-transport-https \\\n    ca-certificates \\\n    curl \\\n    gnupg2 \\\n    software-properties-common<\/code><\/pre>\n<p>*   <code>apt-transport-https<\/code>: APT&#8217;nin HTTPS \u00fczerinden depolar\u0131 kullanmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <code>ca-certificates<\/code>: SSL\/TLS ba\u011flant\u0131lar\u0131 i\u00e7in gerekli CA sertifikalar\u0131n\u0131 i\u00e7erir.<br \/>\n*   <code>curl<\/code>: URL&#8217;lerden veri transferi i\u00e7in bir komut sat\u0131r\u0131 arac\u0131d\u0131r. GPG anahtar\u0131n\u0131 indirmek i\u00e7in kullanaca\u011f\u0131z.<br \/>\n*   <code>gnupg2<\/code>: GPG anahtarlar\u0131n\u0131 y\u00f6netmek i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <code>software-properties-common<\/code>: Depo eklemek i\u00e7in kullan\u0131lan <code>add-apt-repository<\/code> komutunu sa\u011flar.<\/p>\n<h4>Docker GPG Anahtar\u0131n\u0131 Ekleme<\/h4>\n<p>Docker&#8217;\u0131n resmi deposundan indirilen paketlerin g\u00fcvenilirli\u011fini do\u011frulamak i\u00e7in Docker&#8217;\u0131n GPG anahtar\u0131n\u0131 sistemimize eklememiz gerekir.<\/p>\n<pre><code class=\"language-bash\">curl -fsSL https:\/\/download.docker.com\/linux\/debian\/gpg | sudo apt-key add -<\/code><\/pre>\n<p>Bu komut, Docker&#8217;\u0131n resmi GPG anahtar\u0131n\u0131 indirir ve <code>apt-key add<\/code> komutuyla sisteminize ekler. Anahtar ba\u015far\u0131yla eklendi\u011finde <code>OK<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<h4>Docker Deposu Ekleme<\/h4>\n<p>\u015eimdi, Docker&#8217;\u0131n kararl\u0131 (stable) deposunu APT kaynak listemize eklememiz gerekiyor. Debian 9 i\u00e7in do\u011fru depo URL&#8217;sini kulland\u0131\u011f\u0131n\u0131zdan emin olun.<\/p>\n<pre><code class=\"language-bash\">echo \"deb [arch=amd64] https:\/\/download.docker.com\/linux\/debian stretch stable\" | sudo tee \/etc\/apt\/sources.list.d\/docker.list<\/code><\/pre>\n<p>*   <code>deb [arch=amd64]<\/code>: Bu depo sadece 64-bit (amd64) mimarisi i\u00e7in paketler i\u00e7erir.<br \/>\n*   <code>https:\/\/download.docker.com\/linux\/debian<\/code>: Docker&#8217;\u0131n Debian i\u00e7in resmi depo URL&#8217;si.<br \/>\n*   <code>stretch<\/code>: Debian 9&#8217;un kod ad\u0131d\u0131r. Do\u011fru s\u00fcr\u00fcm kod ad\u0131n\u0131 kullanmak \u00f6nemlidir.<br \/>\n*   <code>stable<\/code>: Kararl\u0131 (stable) s\u00fcr\u00fcm deposunu kullanaca\u011f\u0131m\u0131z\u0131 belirtir.<\/p>\n<p>Depoyu ekledikten sonra, yeni paket kaynaklar\u0131n\u0131 tan\u0131mak i\u00e7in APT paket indeksini g\u00fcncellemelisiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get update<\/code><\/pre>\n<h4>Docker Engine&#8217;i Kurma<\/h4>\n<p>Art\u0131k Docker Engine&#8217;i ve ilgili bile\u015fenleri kurmaya haz\u0131r\u0131z.<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install docker-ce docker-ce-cli containerd.io<\/code><\/pre>\n<p>*   <code>docker-ce<\/code>: Docker Engine&#8217;in topluluk s\u00fcr\u00fcm\u00fc.<br \/>\n*   <code>docker-ce-cli<\/code>: Docker komut sat\u0131r\u0131 aray\u00fcz\u00fc.<br \/>\n*   <code>containerd.io<\/code>: Konteynerlerin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc y\u00f6neten bir konteyner \u00e7al\u0131\u015fma zaman\u0131.<\/p>\n<p>Kurulum tamamland\u0131\u011f\u0131nda, Docker servisi otomatik olarak ba\u015flayacak ve sistem ba\u015flang\u0131c\u0131nda da \u00e7al\u0131\u015facak \u015fekilde ayarlanacakt\u0131r. Servisin durumunu kontrol edebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status docker<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>active (running)<\/code> ibaresini g\u00f6rmelisiniz.<\/p>\n<h4>Kurulumu Do\u011frulama<\/h4>\n<p>Docker&#8217;\u0131n do\u011fru bir \u015fekilde kurulup kurulmad\u0131\u011f\u0131n\u0131 test etmek i\u00e7in <code>hello-world<\/code> imaj\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo docker run hello-world<\/code><\/pre>\n<p>Bu komut, Docker&#8217;\u0131n <code>hello-world<\/code> imaj\u0131n\u0131 indirir (e\u011fer yerel olarak yoksa), bu imajdan bir konteyner olu\u015fturur, \u00e7al\u0131\u015ft\u0131r\u0131r ve \u00e7\u0131kt\u0131y\u0131 terminale yazd\u0131r\u0131r. Ba\u015far\u0131l\u0131 bir kurulumda, a\u015fa\u011f\u0131daki gibi bir mesaj g\u00f6rmelisiniz:<\/p>\n<pre><code class=\"language-\">Hello from Docker!\nThis message shows that your installation appears to be working correctly.\n...<\/code><\/pre>\n<h3>Docker&#8217;\u0131 Sudo Olmadan Kullanma<\/h3>\n<p>Varsay\u0131lan olarak, Docker komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>sudo<\/code> kullanman\u0131z gerekir. Bu, g\u00fcvenlik nedenleriyle b\u00f6yledir. Ancak, Docker&#8217;\u0131 s\u0131k kullanacak bir kullan\u0131c\u0131 i\u00e7in her komutun ba\u015f\u0131na <code>sudo<\/code> yazmak zahmetli olabilir. Kullan\u0131c\u0131n\u0131z\u0131 <code>docker<\/code> grubuna ekleyerek bu k\u0131s\u0131tlamay\u0131 kald\u0131rabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">sudo usermod -aG docker $USER<\/code><\/pre>\n<p>*   <code>usermod<\/code>: Kullan\u0131c\u0131 \u00f6zelliklerini de\u011fi\u015ftirmek i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <code>-aG<\/code>: Kullan\u0131c\u0131y\u0131 belirtilen gruba ekler (<code>-a<\/code> eklemek, <code>-G<\/code> grup belirtmek).<br \/>\n*   <code>docker<\/code>: Eklenilecek grup ad\u0131.<br \/>\n*   <code>$USER<\/code>: Mevcut oturum a\u00e7m\u0131\u015f kullan\u0131c\u0131n\u0131n kullan\u0131c\u0131 ad\u0131.<\/p>\n<p>Bu de\u011fi\u015fikli\u011fin etkili olmas\u0131 i\u00e7in oturumunuzu kapat\u0131p tekrar a\u00e7man\u0131z veya sisteminizi yeniden ba\u015flatman\u0131z gerekir. Alternatif olarak, a\u015fa\u011f\u0131daki komutu kullanarak yeni grup \u00fcyeli\u011fini uygulayabilirsiniz (ancak oturumu kapat\u0131p a\u00e7mak en garantili yoldur):<\/p>\n<pre><code class=\"language-bash\">newgrp docker<\/code><\/pre>\n<p>Oturumunuzu yeniden ba\u015flatt\u0131ktan sonra, <code>sudo<\/code> kullanmadan <code>docker run hello-world<\/code> komutunu tekrar deneyin.<\/p>\n<pre><code class=\"language-bash\">docker run hello-world<\/code><\/pre>\n<p>E\u011fer komut sorunsuz \u00e7al\u0131\u015f\u0131rsa, Docker&#8217;\u0131 art\u0131k <code>sudo<\/code> olmadan kullanabilirsiniz.<\/p>\n<h3>Docker Temelleri: \u0130lk Ad\u0131mlar<\/h3>\n<p>Docker&#8217;\u0131 kurdu\u011funuza ve kullanmaya haz\u0131r oldu\u011funuza g\u00f6re, temel Docker kavramlar\u0131n\u0131 ve komutlar\u0131n\u0131 inceleyelim.<\/p>\n<h4>Docker \u0130majlar\u0131<\/h4>\n<p>Docker imajlar\u0131, bir uygulaman\u0131n ve onun ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n anl\u0131k g\u00f6r\u00fcnt\u00fcs\u00fcd\u00fcr. Bir imaj, bir konteyneri \u00e7al\u0131\u015ft\u0131rmak i\u00e7in gereken her \u015feyi i\u00e7erir: kod, \u00e7al\u0131\u015fma zaman\u0131, sistem ara\u00e7lar\u0131, sistem k\u00fct\u00fcphaneleri ve ayarlar. \u0130majlar sabittir ve de\u011fi\u015fmez.<\/p>\n<h5>\u0130maj Arama<\/h5>\n<p>Docker Hub&#8217;da (Docker&#8217;\u0131n resmi imaj deposu) veya di\u011fer \u00f6zel depolarda imaj arayabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">docker search ubuntu<\/code><\/pre>\n<p>Bu komut, &#8220;ubuntu&#8221; anahtar kelimesini i\u00e7eren t\u00fcm Docker imajlar\u0131n\u0131 listeler.<\/p>\n<h5>\u0130maj \u0130ndirme<\/h5>\n<p>Bir imaj\u0131 yerel makinenize indirmek i\u00e7in <code>docker pull<\/code> komutunu kullan\u0131rs\u0131n\u0131z. E\u011fer bir etiket (tag) belirtmezseniz, varsay\u0131lan olarak <code>latest<\/code> etiketi indirilir.<\/p>\n<pre><code class=\"language-bash\">docker pull ubuntu:18.04 # Ubuntu 18.04 imaj\u0131n\u0131 indir\ndocker pull nginx         # Nginx'in en son (latest) imaj\u0131n\u0131 indir<\/code><\/pre>\n<h5>\u0130majlar\u0131 Listeleme<\/h5>\n<p>Yerel sisteminizde bulunan t\u00fcm imajlar\u0131 g\u00f6rmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker images<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da imaj ad\u0131, etiketi, imaj ID&#8217;si, olu\u015fturulma tarihi ve boyutu gibi bilgiler yer al\u0131r.<\/p>\n<h5>\u0130maj Silme<\/h5>\n<p>Art\u0131k ihtiyac\u0131n\u0131z olmayan bir imaj\u0131 silmek i\u00e7in <code>docker rmi<\/code> komutunu kullan\u0131n. \u00d6nce o imajdan \u00e7al\u0131\u015fan t\u00fcm konteynerleri durdurup silmeniz gerekebilir.<\/p>\n<pre><code class=\"language-bash\">docker rmi ubuntu:18.04<\/code><\/pre>\n<h4>Docker Konteynerleri<\/h4>\n<p>Konteynerler, bir Docker imaj\u0131n\u0131n \u00e7al\u0131\u015ft\u0131r\u0131labilir \u00f6rnekleridir. Bir imajdan birden fazla konteyner \u00e7al\u0131\u015ft\u0131rabilirsiniz. Her konteyner birbirinden izole edilmi\u015f, kendi dosya sistemi, a\u011f aray\u00fcz\u00fc ve i\u015flem alan\u0131 olan bir ortamd\u0131r.<\/p>\n<h5>Konteyner \u00c7al\u0131\u015ft\u0131rma<\/h5>\n<p>Bir imajdan konteyner \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>docker run<\/code> komutunu kullan\u0131r\u0131z.<\/p>\n<pre><code class=\"language-bash\">docker run -it ubuntu:18.04 bash<\/code><\/pre>\n<p>*   <code>-it<\/code>: Etkile\u015fimli bir terminal (<code>-i<\/code>) ay\u0131r\u0131r ve sahte bir TTY (<code>-t<\/code>) ba\u011flar. Bu, konteyner i\u00e7inde komut \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r.<br \/>\n*   <code>ubuntu:18.04<\/code>: \u00c7al\u0131\u015ft\u0131r\u0131lacak imaj.<br \/>\n*   <code>bash<\/code>: Konteyner ba\u015flat\u0131ld\u0131\u011f\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lacak komut. Bu \u00f6rnekte, Ubuntu konteyneri i\u00e7inde bir Bash kabu\u011fu a\u00e7ar\u0131z.<\/p>\n<p>Konteynerden \u00e7\u0131kmak i\u00e7in <code>exit<\/code> yaz\u0131p Enter tu\u015funa bas\u0131n. Konteyner duracakt\u0131r.<\/p>\n<h5>Arka Planda Konteyner \u00c7al\u0131\u015ft\u0131rma (Detached Mode)<\/h5>\n<p>Bir konteyneri arka planda, yani detached modda \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>-d<\/code> bayra\u011f\u0131n\u0131 kullan\u0131n.<\/p>\n<pre><code class=\"language-bash\">docker run -d --name benim-nginx -p 8080:80 nginx<\/code><\/pre>\n<p>*   <code>-d<\/code>: Konteyneri arka planda \u00e7al\u0131\u015ft\u0131r\u0131r ve konteyner ID&#8217;sini d\u00f6nd\u00fcr\u00fcr.<br \/>\n*   <code>--name benim-nginx<\/code>: Konteynere <code>benim-nginx<\/code> ad\u0131n\u0131 verir. Konteynerleri isimleriyle y\u00f6netmek daha kolayd\u0131r.<br \/>\n*   <code>-p 8080:80<\/code>: Ana makinenin 8080 portunu konteynerin 80 portuna e\u015fler. B\u00f6ylece ana makineden <code>http:\/\/localhost:8080<\/code> adresine eri\u015ferek Nginx sunucusuna ula\u015fabilirsiniz.<br \/>\n*   <code>nginx<\/code>: \u00c7al\u0131\u015ft\u0131r\u0131lacak Nginx imaj\u0131.<\/p>\n<h5>\u00c7al\u0131\u015fan Konteynerleri Listeleme<\/h5>\n<p>\u015eu anda \u00e7al\u0131\u015fan t\u00fcm konteynerleri g\u00f6rmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker ps<\/code><\/pre>\n<p>Durdurulmu\u015f dahil t\u00fcm konteynerleri g\u00f6rmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker ps -a<\/code><\/pre>\n<h5>Konteyner Durdurma, Ba\u015flatma ve Yeniden Ba\u015flatma<\/h5>\n<p>Bir konteyneri durdurmak, ba\u015flatmak veya yeniden ba\u015flatmak i\u00e7in konteyner ID&#8217;sini veya ad\u0131n\u0131 kullanabilirsiniz.<\/p>\n<pre><code class=\"language-bash\">docker stop benim-nginx    # Konteyneri durdur\ndocker start benim-nginx   # Durdurulmu\u015f konteyneri ba\u015flat\ndocker restart benim-nginx # Konteyneri yeniden ba\u015flat<\/code><\/pre>\n<h5>Konteyner Silme<\/h5>\n<p>Durdurulmu\u015f bir konteyneri silmek i\u00e7in <code>docker rm<\/code> komutunu kullan\u0131n. \u00c7al\u0131\u015fan bir konteyneri silmek i\u00e7in <code>-f<\/code> (force) bayra\u011f\u0131n\u0131 eklemeniz gerekir, ancak \u00f6nce durdurmak daha iyi bir yakla\u015f\u0131md\u0131r.<\/p>\n<pre><code class=\"language-bash\">docker rm benim-nginx<\/code><\/pre>\n<h5>Konteyner \u0130\u00e7ine Girme<\/h5>\n<p>\u00c7al\u0131\u015fan bir konteynerin i\u00e7ine girip komut \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>docker exec<\/code> komutunu kullan\u0131n.<\/p>\n<pre><code class=\"language-bash\">docker exec -it benim-nginx bash<\/code><\/pre>\n<p>Bu komut, <code>benim-nginx<\/code> konteyneri i\u00e7inde yeni bir Bash kabu\u011fu ba\u015flat\u0131r ve sizi o kabu\u011fa ba\u011flar.<\/p>\n<h5>Konteyner Loglar\u0131n\u0131 G\u00f6r\u00fcnt\u00fcleme<\/h5>\n<p>Bir konteynerin standart \u00e7\u0131kt\u0131 ve standart hata ak\u0131\u015flar\u0131n\u0131 (loglar\u0131n\u0131) g\u00f6rmek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker logs benim-nginx<\/code><\/pre>\n<p>Ger\u00e7ek zamanl\u0131 loglar\u0131 takip etmek i\u00e7in <code>-f<\/code> (follow) bayra\u011f\u0131n\u0131 kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker logs -f benim-nginx<\/code><\/pre>\n<h3>Docker Compose Kullan\u0131m\u0131<\/h3>\n<p>Ger\u00e7ek d\u00fcnya uygulamalar\u0131 genellikle birden fazla servisten olu\u015fur (\u00f6rne\u011fin, bir web sunucusu, bir veritaban\u0131, bir \u00f6nbellek servisi). Docker Compose, \u00e7oklu konteyner Docker uygulamalar\u0131n\u0131 tan\u0131mlamak ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in bir ara\u00e7t\u0131r. Tek bir YAML dosyas\u0131 kullanarak t\u00fcm uygulama servislerinizi yap\u0131land\u0131rabilir ve tek bir komutla hepsini ba\u015flatabilir veya durdurabilirsiniz.<\/p>\n<h4>Docker Compose Kurulumu<\/h4>\n<p>Debian 9&#8217;da Docker Compose&#8217;u kurman\u0131n birka\u00e7 yolu vard\u0131r. En kolay yol, APT deposundan kurmakt\u0131r:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install docker-compose<\/code><\/pre>\n<p>E\u011fer bu komut en g\u00fcncel s\u00fcr\u00fcm\u00fc kurmazsa veya belirli bir s\u00fcr\u00fcm\u00fc istiyorsan\u0131z, Docker&#8217;\u0131n GitHub deposundan manuel olarak indirebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo curl -L \"https:\/\/github.com\/docker\/compose\/releases\/download\/1.29.2\/docker-compose-$(uname -s)-$(uname -m)\" -o \/usr\/local\/bin\/docker-compose\nsudo chmod +x \/usr\/local\/bin\/docker-compose<\/code><\/pre>\n<p><em>Not: <code>1.29.2<\/code> yerine Docker Compose&#8217;un en son kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc kullanman\u0131z \u00f6nerilir. En son s\u00fcr\u00fcm\u00fc GitHub sayfas\u0131ndan kontrol edebilirsiniz.<\/em><\/p>\n<p>Kurulumu do\u011frulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker-compose --version<\/code><\/pre>\n<h4>Basit Bir Docker Compose Uygulamas\u0131<\/h4>\n<p>A\u015fa\u011f\u0131da, bir Nginx web sunucusu ve basit bir Python Flask uygulamas\u0131ndan olu\u015fan bir <code>docker-compose.yml<\/code> dosyas\u0131 \u00f6rne\u011fi verilmi\u015ftir.<\/p>\n<p>\u00d6nce, proje dizinimizi olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">mkdir my_flask_nginx_app\ncd my_flask_nginx_app<\/code><\/pre>\n<p>\u015eimdi bir Flask uygulamas\u0131 olu\u015ftural\u0131m: <code>app.py<\/code><\/p>\n<pre><code class=\"language-python\"># app.py\nfrom flask import Flask\napp = Flask(__name__)\n\n@app.route('\/')\ndef hello():\n    return \"Merhaba, Docker Compose ile Flask ve Nginx!\"\n\nif __name__ == '__main__':\n    app.run(host='0.0.0.0', port=5000)<\/code><\/pre>\n<p>Bu Flask uygulamas\u0131n\u0131n ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 i\u00e7eren <code>requirements.txt<\/code> dosyas\u0131:<\/p>\n<pre><code class=\"language-\">Flask<\/code><\/pre>\n<p>Flask uygulamam\u0131z i\u00e7in bir Dockerfile: <code>Dockerfile<\/code><\/p>\n<pre><code class=\"language-dockerfile\"># Dockerfile\nFROM python:3.8-slim-buster\nWORKDIR \/app\nCOPY requirements.txt .\nRUN pip install --no-cache-dir -r requirements.txt\nCOPY . .\nCMD [\"python\", \"app.py\"]<\/code><\/pre>\n<p>Ve son olarak, <code>docker-compose.yml<\/code> dosyam\u0131z:<\/p>\n<pre><code class=\"language-yaml\"># docker-compose.yml\nversion: '3.8'\nservices:\n  web:\n    build: .\n    ports:\n      - \"5000:5000\"\n    networks:\n      - app_network\n  nginx:\n    image: nginx:latest\n    ports:\n      - \"80:80\"\n    volumes:\n      - .\/nginx.conf:\/etc\/nginx\/conf.d\/default.conf\n    depends_on:\n      - web\n    networks:\n      - app_network\nnetworks:\n  app_network:\n    driver: bridge<\/code><\/pre>\n<p>Bu <code>docker-compose.yml<\/code> dosyas\u0131 iki servis tan\u0131mlar:<br \/>\n*   <strong>web<\/strong>: <code>Dockerfile<\/code>&#8216;dan olu\u015fturulan Flask uygulamas\u0131. 5000 portunu d\u0131\u015far\u0131ya a\u00e7ar.<br \/>\n*   <strong>nginx<\/strong>: Nginx&#8217;in resmi imaj\u0131n\u0131 kullan\u0131r. Kendi <code>nginx.conf<\/code> dosyam\u0131z\u0131 ba\u011flar ve 80 portunu d\u0131\u015far\u0131ya a\u00e7ar. <code>depends_on: web<\/code> Nginx&#8217;in web servisi ba\u015flad\u0131ktan sonra ba\u015flamas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Nginx i\u00e7in \u00f6zel bir yap\u0131land\u0131rma dosyas\u0131: <code>nginx.conf<\/code><\/p>\n<pre><code class=\"language-nginx\"># nginx.conf\nserver {\n    listen 80;\n    server_name localhost;\n\n    location \/ {\n        proxy_pass http:\/\/web:5000; # 'web' servisine y\u00f6nlendirme\n        proxy_set_header Host $host;\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_set_header X-Forwarded-Proto $scheme;\n    }\n}<\/code><\/pre>\n<p>T\u00fcm bu dosyalar\u0131 olu\u015fturduktan sonra, proje dizininizdeyken uygulamay\u0131 ba\u015flatmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker-compose up -d<\/code><\/pre>\n<p>*   <code>-d<\/code>: T\u00fcm servisleri arka planda (detached mode) ba\u015flat\u0131r.<\/p>\n<p>Uygulama \u00e7al\u0131\u015fmaya ba\u015flad\u0131\u011f\u0131nda, web taray\u0131c\u0131n\u0131zdan <code>http:\/\/localhost<\/code> adresine giderek Flask uygulaman\u0131z\u0131n Nginx \u00fczerinden \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rebilirsiniz.<\/p>\n<p>Uygulamay\u0131 durdurmak ve t\u00fcm konteynerleri kald\u0131rmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker-compose down<\/code><\/pre>\n<h3>Docker A\u011f Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>Docker, konteynerler aras\u0131nda ve konteynerler ile ana bilgisayar aras\u0131nda ileti\u015fimi sa\u011flamak i\u00e7in geli\u015fmi\u015f a\u011f yetenekleri sunar.<\/p>\n<h4>Varsay\u0131lan A\u011flar<\/h4>\n<p>Docker Engine, varsay\u0131lan olarak \u00fc\u00e7 a\u011f s\u00fcr\u00fcc\u00fcs\u00fc ile gelir:<\/p>\n<p>*   <strong>Bridge (K\u00f6pr\u00fc):<\/strong> Varsay\u0131lan a\u011f s\u00fcr\u00fcc\u00fcs\u00fcd\u00fcr. Konteynerler i\u00e7in \u00f6zel bir dahili a\u011f olu\u015fturur ve ana bilgisayar\u0131n a\u011f aray\u00fcz\u00fcne ba\u011flan\u0131r. Konteynerler kendi aralar\u0131nda ve d\u0131\u015f d\u00fcnyayla bu k\u00f6pr\u00fc \u00fczerinden ileti\u015fim kurabilir.<br \/>\n*   <strong>Host (Ana Bilgisayar):<\/strong> Konteyner, ana bilgisayar\u0131n a\u011f y\u0131\u011f\u0131n\u0131n\u0131 do\u011frudan kullan\u0131r. Bu, konteynerin ana bilgisayar\u0131n a\u011f aray\u00fczlerine do\u011frudan eri\u015febilece\u011fi anlam\u0131na gelir. \u0130zolasyon seviyesi d\u00fc\u015f\u00fckt\u00fcr.<br \/>\n*   <strong>None (Yok):<\/strong> Konteyner a\u011f aray\u00fcz\u00fcne sahip olmaz. Genellikle \u00f6zel a\u011f yap\u0131land\u0131rmalar\u0131 i\u00e7in veya a\u011f eri\u015fimine ihtiyac\u0131 olmayan konteynerler i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>Mevcut a\u011flar\u0131 listeleyin:<\/p>\n<pre><code class=\"language-bash\">docker network ls<\/code><\/pre>\n<h4>\u00d6zel A\u011f Olu\u015fturma<\/h4>\n<p>Uygulamalar\u0131n\u0131z i\u00e7in \u00f6zel k\u00f6pr\u00fc a\u011flar\u0131 olu\u015fturmak iyi bir uygulamad\u0131r. Bu, konteynerlerin birbirini isimleriyle bulmas\u0131n\u0131 sa\u011flar ve daha iyi izolasyon sunar.<\/p>\n<pre><code class=\"language-bash\">docker network create --driver bridge benim-ozel-agim<\/code><\/pre>\n<p>*   <code>--driver bridge<\/code>: K\u00f6pr\u00fc a\u011f s\u00fcr\u00fcc\u00fcs\u00fcn\u00fc kullan\u0131r.<\/p>\n<p>Bir konteyneri \u00f6zel bir a\u011fa ba\u011flamak i\u00e7in <code>docker run<\/code> komutunda <code>--network<\/code> bayra\u011f\u0131n\u0131 kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker run -d --name webserver --network benim-ozel-agim nginx<\/code><\/pre>\n<p>Mevcut bir konteyneri bir a\u011fa ba\u011flamak veya a\u011fdan \u00e7\u0131karmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">docker network connect benim-ozel-agim baska-konteyner\ndocker network disconnect benim-ozel-agim baska-konteyner<\/code><\/pre>\n<p>\u00d6zel a\u011flarda, ayn\u0131 a\u011fdaki konteynerler birbirlerini isimleriyle \u00e7\u00f6z\u00fcmleyebilir (DNS). \u00d6rne\u011fin, <code>webserver<\/code> konteynerinden <code>baskaservis<\/code> adl\u0131 ba\u015fka bir konteynere <code>http:\/\/baskaservis<\/code> \u015feklinde eri\u015febilirsiniz.<\/p>\n<h3>Docker Veri Y\u00f6netimi<\/h3>\n<p>Konteynerler ge\u00e7icidir; bir konteyneri sildi\u011finizde, i\u00e7indeki t\u00fcm veriler de kaybolur. Kal\u0131c\u0131 veri depolama i\u00e7in Docker iki ana y\u00f6ntem sunar: <strong>Volumes<\/strong> (Vol\u00fcmler) ve <strong>Bind Mounts<\/strong> (Ba\u011fl\u0131 Ba\u011flant\u0131lar).<\/p>\n<h4>Volumes (Vol\u00fcmler)<\/h4>\n<p>Vol\u00fcmler, Docker taraf\u0131ndan y\u00f6netilen \u00f6zel bir dosya sistemi alan\u0131d\u0131r. Konteynerlerin ya\u015fam d\u00f6ng\u00fcs\u00fcnden ba\u011f\u0131ms\u0131zd\u0131r ve verilerin kal\u0131c\u0131 olarak saklanmas\u0131 i\u00e7in en iyi yoldur.<\/p>\n<h5>Vol\u00fcm Olu\u015fturma<\/h5>\n<pre><code class=\"language-bash\">docker volume create benim-veritabani-verileri<\/code><\/pre>\n<h5>Konteynere Vol\u00fcm Ba\u011flama<\/h5>\n<p>Bir konteyner \u00e7al\u0131\u015ft\u0131r\u0131rken <code>-v<\/code> bayra\u011f\u0131n\u0131 kullanarak bir vol\u00fcm\u00fc ba\u011flayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker run -d \\\n    --name postgres-db \\\n    -e POSTGRES_PASSWORD=mysecretpassword \\\n    -v benim-veritabani-verileri:\/var\/lib\/postgresql\/data \\\n    postgres<\/code><\/pre>\n<p>Bu \u00f6rnek, <code>benim-veritabani-verileri<\/code> adl\u0131 vol\u00fcm\u00fc <code>postgres-db<\/code> konteynerinin <code>\/var\/lib\/postgresql\/data<\/code> dizinine ba\u011flar. PostgreSQL verileri bu vol\u00fcmde kal\u0131c\u0131 olarak saklanacakt\u0131r.<\/p>\n<h5>Vol\u00fcmleri Listeleme ve Silme<\/h5>\n<pre><code class=\"language-bash\">docker volume ls           # T\u00fcm vol\u00fcmleri listele\ndocker volume rm benim-veritabani-verileri # Vol\u00fcm\u00fc sil (kullan\u0131lm\u0131yorsa)\ndocker volume prune        # Kullan\u0131lmayan t\u00fcm vol\u00fcmleri sil<\/code><\/pre>\n<h4>Bind Mounts (Ba\u011fl\u0131 Ba\u011flant\u0131lar)<\/h4>\n<p>Bind mount&#8217;lar, ana bilgisayar\u0131n dosya sistemindeki bir dizini veya dosyay\u0131 do\u011frudan konteynerin i\u00e7ine ba\u011flaman\u0131za olanak tan\u0131r. Bu, geli\u015ftirme s\u0131ras\u0131nda kodunuzu do\u011frudan konteynere ba\u011flamak veya yap\u0131land\u0131rma dosyalar\u0131n\u0131 y\u00f6netmek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h5>Konteynere Bind Mount Ba\u011flama<\/h5>\n<pre><code class=\"language-bash\">docker run -d \\\n    --name my-apache \\\n    -p 80:80 \\\n    -v \/home\/$USER\/my_apache_site:\/usr\/local\/apache2\/htdocs\/ \\\n    httpd<\/code><\/pre>\n<p>Bu komut, ana bilgisayar\u0131n\u0131zdaki <code>\/home\/$USER\/my_apache_site<\/code> dizinini <code>my-apache<\/code> konteynerinin <code>\/usr\/local\/apache2\/htdocs\/<\/code> dizinine ba\u011flar. Ana bilgisayardaki bu dizinde yapt\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikler an\u0131nda konteyner i\u00e7inde de g\u00f6r\u00fcn\u00fcr olacakt\u0131r.<\/p>\n<h3>Dockerfile ile Kendi \u0130maj\u0131n\u0131z\u0131 Olu\u015fturma<\/h3>\n<p>Docker Hub&#8217;daki mevcut imajlar bir\u00e7ok senaryo i\u00e7in yeterli olsa da, kendi \u00f6zel uygulamalar\u0131n\u0131z i\u00e7in kendi Docker imajlar\u0131n\u0131z\u0131 olu\u015fturman\u0131z gerekebilir. Bu, bir <code>Dockerfile<\/code> kullanarak yap\u0131l\u0131r. <code>Dockerfile<\/code>, bir imaj\u0131n nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klayan bir metin dosyas\u0131d\u0131r.<\/p>\n<h4>Temel Dockerfile Komutlar\u0131<\/h4>\n<p>*   <strong><code>FROM<\/code><\/strong>: \u0130maj\u0131n hangi temel imajdan t\u00fcretilece\u011fini belirtir (\u00f6rn. <code>FROM ubuntu:18.04<\/code>). Her Dockerfile bu komutla ba\u015flamal\u0131d\u0131r.<br \/>\n*   <strong><code>RUN<\/code><\/strong>: \u0130maj olu\u015fturma s\u0131ras\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lacak komutlar\u0131 belirtir. Genellikle paket kurulumu, uygulama ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131n y\u00fcklenmesi gibi i\u015flemler i\u00e7in kullan\u0131l\u0131r (\u00f6rn. <code>RUN apt-get update && apt-get install -y nginx<\/code>).<br \/>\n*   <strong><code>COPY<\/code><\/strong>: Ana bilgisayardaki dosya veya dizinleri imaj i\u00e7ine kopyalar (\u00f6rn. <code>COPY . \/app<\/code>).<br \/>\n*   <strong><code>ADD<\/code><\/strong>: <code>COPY<\/code> gibi \u00e7al\u0131\u015f\u0131r, ancak URL&#8217;lerden dosya indirme veya s\u0131k\u0131\u015ft\u0131r\u0131lm\u0131\u015f ar\u015fivleri otomatik olarak a\u00e7ma gibi ek yeteneklere sahiptir.<br \/>\n*   <strong><code>WORKDIR<\/code><\/strong>: Sonraki <code>RUN<\/code>, <code>CMD<\/code>, <code>ENTRYPOINT<\/code>, <code>COPY<\/code>, <code>ADD<\/code> komutlar\u0131 i\u00e7in \u00e7al\u0131\u015fma dizinini ayarlar (\u00f6rn. <code>WORKDIR \/app<\/code>).<br \/>\n*   <strong><code>EXPOSE<\/code><\/strong>: Konteynerin belirli bir portu dinledi\u011fini belgelendirir. A\u011f yap\u0131land\u0131rmas\u0131 yapmaz, sadece bir belgeleme ipucudur (\u00f6rn. <code>EXPOSE 80<\/code>).<br \/>\n*   <strong><code>CMD<\/code><\/strong>: Konteyner ba\u015flat\u0131ld\u0131\u011f\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lacak varsay\u0131lan komutu veya arg\u00fcmanlar\u0131 sa\u011flar. Bir Dockerfile&#8217;da yaln\u0131zca bir <code>CMD<\/code> komutu olabilir.<br \/>\n*   <strong><code>ENTRYPOINT<\/code><\/strong>: Konteyner ba\u015flat\u0131ld\u0131\u011f\u0131nda \u00e7al\u0131\u015ft\u0131r\u0131lacak ana komutu ayarlar. <code>CMD<\/code> ile birlikte kullan\u0131ld\u0131\u011f\u0131nda, <code>CMD<\/code> arg\u00fcmanlar\u0131 <code>ENTRYPOINT<\/code> komutuna ge\u00e7irilir.<\/p>\n<h4>Basit Bir Nginx Dockerfile \u00d6rne\u011fi<\/h4>\n<p>Bir Nginx web sunucusu imaj\u0131 olu\u015fturmak istedi\u011fimizi varsayal\u0131m. Proje dizinimizde <code>Dockerfile<\/code> ve <code>index.html<\/code> ad\u0131nda iki dosya olu\u015ftural\u0131m.<\/p>\n<p><code>index.html<\/code>:<\/p>\n<pre><code class=\"language-html\"><!DOCTYPE html>\n<html>\n<head>\n    <title>Merhaba Docker!<\/title>\n<\/head>\n<body>\n    \n    <p>Bu sayfa, kendi Dockerfile'\u0131m\u0131zdan olu\u015fturulan bir imajdan servis ediliyor.<\/p>\n<\/body>\n<\/html><\/code><\/pre>\n<p><code>Dockerfile<\/code>:<\/p>\n<pre><code class=\"language-dockerfile\"># Temel Nginx imaj\u0131n\u0131 kullan\nFROM nginx:latest\n\n<h2>\u00c7al\u0131\u015fma dizinini ayarla<\/h2>\nWORKDIR \/usr\/share\/nginx\/html\n\n<h2>index.html dosyas\u0131n\u0131 imaj\u0131n i\u00e7ine kopyala<\/h2>\nCOPY index.html .\n\n<h2>Konteynerin 80 portunu d\u0131\u015far\u0131ya a\u00e7t\u0131\u011f\u0131n\u0131 belirt<\/h2>\nEXPOSE 80\n\n<h2>Nginx sunucusunu ba\u015flat<\/h2>\nCMD [\"nginx\", \"-g\", \"daemon off;\"]<\/code><\/pre>\n<p>\u0130maj\u0131 olu\u015fturmak i\u00e7in, <code>Dockerfile<\/code> ve <code>index.html<\/code> dosyalar\u0131n\u0131n bulundu\u011fu dizinde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker build -t benim-nginx-web .<\/code><\/pre>\n<p>*   <code>-t benim-nginx-web<\/code>: Olu\u015fturulan imaja <code>benim-nginx-web<\/code> ad\u0131n\u0131 ve <code>latest<\/code> etiketini verir.<br \/>\n*   <code>.<\/code>: Dockerfile&#8217;\u0131n mevcut dizinde oldu\u011funu belirtir.<\/p>\n<p>\u0130maj olu\u015fturulduktan sonra, onu \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker run -d -p 80:80 --name benim-webserver benim-nginx-web<\/code><\/pre>\n<p>\u015eimdi taray\u0131c\u0131n\u0131zdan <code>http:\/\/localhost<\/code> adresine giderek kendi Nginx sunucunuzu g\u00f6rebilirsiniz.<\/p>\n<h3>Docker \u0130majlar\u0131n\u0131 Docker Hub&#8217;a Y\u00fckleme<\/h3>\n<p>Olu\u015fturdu\u011funuz \u00f6zel imajlar\u0131 ba\u015fkalar\u0131yla payla\u015fmak veya farkl\u0131 sunucular\u0131n\u0131zda kullanmak i\u00e7in Docker Hub gibi bir konteyner kay\u0131t defterine (registry) y\u00fckleyebilirsiniz.<\/p>\n<p>1.  <strong>Docker Hub Hesab\u0131 Olu\u015fturma:<\/strong> E\u011fer bir Docker Hub hesab\u0131n\u0131z yoksa, <code>hub.docker.com<\/code> adresinden \u00fccretsiz bir hesap olu\u015fturun.<br \/>\n2.  <strong>Docker&#8217;a Giri\u015f Yapma:<\/strong> Terminalden Docker Hub hesab\u0131n\u0131za giri\u015f yap\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker login<\/code><\/pre>\n<p>    Kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 ve \u015fifrenizi girmeniz istenecektir.<\/p>\n<p>3.  <strong>\u0130maj\u0131 Etiketleme (Tagging):<\/strong> \u0130maj\u0131n\u0131z\u0131 Docker Hub kullan\u0131c\u0131 ad\u0131n\u0131zla etiketlemeniz gerekir. Format <code>kullanici_adi\/imaj_adi:etiket<\/code> \u015feklindedir.<\/p>\n<pre><code class=\"language-bash\">docker tag benim-nginx-web:latest kullanici_adiniz\/benim-nginx-web:v1.0<\/code><\/pre>\n<p>    <code>kullanici_adiniz<\/code> yerine kendi Docker Hub kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 yaz\u0131n.<\/p>\n<p>4.  <strong>\u0130maj\u0131 Y\u00fckleme (Pushing):<\/strong> Etiketledi\u011finiz imaj\u0131 Docker Hub&#8217;a y\u00fckleyin:<\/p>\n<pre><code class=\"language-bash\">docker push kullanici_adiniz\/benim-nginx-web:v1.0<\/code><\/pre>\n<p>\u0130maj\u0131n\u0131z Docker Hub&#8217;a y\u00fcklendikten sonra, herhangi bir Docker y\u00fckl\u00fc sistemden <code>docker pull kullanici_adiniz\/benim-nginx-web:v1.0<\/code> komutuyla \u00e7ekilebilir.<\/p>\n<h3>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmler<\/h3>\n<p>Docker kullan\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong><code>Got permission denied while trying to connect to the Docker daemon socket<\/code><\/strong>: Bu hata, Docker komutlar\u0131n\u0131 <code>sudo<\/code> olmadan \u00e7al\u0131\u015ft\u0131rmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda ve kullan\u0131c\u0131n\u0131z\u0131n <code>docker<\/code> grubunda olmad\u0131\u011f\u0131 zaman ortaya \u00e7\u0131kar.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Kullan\u0131c\u0131n\u0131z\u0131 <code>docker<\/code> grubuna ekleyin: <code>sudo usermod -aG docker $USER<\/code>. Ard\u0131ndan oturumu kapat\u0131p tekrar a\u00e7\u0131n veya <code>newgrp docker<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n.<br \/>\n*   <strong><code>Cannot connect to the Docker daemon. Is the docker daemon running on this host?<\/code><\/strong>: Docker servisi \u00e7al\u0131\u015fm\u0131yorsa bu hatay\u0131 al\u0131rs\u0131n\u0131z.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Docker servisini ba\u015flat\u0131n: <code>sudo systemctl start docker<\/code>. Servisin durumunu kontrol edin: <code>sudo systemctl status docker<\/code>.<br \/>\n*   <strong><code>E: The repository 'https:\/\/download.docker.com\/linux\/debian stretch Release' does not have a Release file.<\/code><\/strong>: Depo ekleme s\u0131ras\u0131nda yanl\u0131\u015f URL, yanl\u0131\u015f Debian s\u00fcr\u00fcm ad\u0131 veya GPG anahtar\u0131 eklenmemi\u015f olmas\u0131 nedeniyle bu hatay\u0131 alabilirsiniz.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Depo URL&#8217;sinin ve Debian s\u00fcr\u00fcm ad\u0131n\u0131n (<code>stretch<\/code> oldu\u011fundan emin olun) do\u011fru oldu\u011fundan emin olun. GPG anahtar\u0131n\u0131n eklendi\u011fini do\u011frulay\u0131n. <code>sudo apt-get update<\/code> komutunu tekrar \u00e7al\u0131\u015ft\u0131r\u0131n.<br \/>\n*   <strong><code>Error response from daemon: driver failed programming external connectivity on endpoint ... bind: address already in use<\/code><\/strong>: Bu hata, bir konteyneri ba\u015flatmaya \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda ve ana bilgisayar\u0131n\u0131zda veya ba\u015fka bir konteynerde zaten kullan\u0131lan bir portu e\u015flemeye \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131zda meydana gelir.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> \u00c7ak\u0131\u015fan portu kullanan ba\u015fka bir uygulamay\u0131\/konteyneri durdurun veya konteyner i\u00e7in farkl\u0131 bir ana bilgisayar portu kullan\u0131n (\u00f6rn. <code>-p 8081:80<\/code>).<br \/>\n*   <strong>Disk Alan\u0131 T\u00fckenmesi<\/strong>: Docker imajlar\u0131, konteynerler ve vol\u00fcmler zamanla disk alan\u0131n\u0131 doldurabilir.<br \/>\n    *   <strong>\u00c7\u00f6z\u00fcm:<\/strong> Kullan\u0131lmayan Docker nesnelerini temizlemek i\u00e7in d\u00fczenli olarak <code>docker system prune<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n. Bu komut durdurulmu\u015f konteynerleri, kullan\u0131lmayan a\u011flar\u0131, dangle imajlar\u0131 ve build cache&#8217;leri siler. Vol\u00fcmleri silmek i\u00e7in <code>docker system prune -a<\/code> veya <code>docker volume prune<\/code> kullan\u0131n.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu kapsaml\u0131 rehberde, Debian 9 i\u015fletim sistemi \u00fczerine Docker&#8217;\u0131 nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, temel Docker komutlar\u0131n\u0131 kullanarak imaj ve konteynerleri nas\u0131l y\u00f6netece\u011finizi, Docker Compose ile \u00e7oklu konteyner uygulamalar\u0131n\u0131 nas\u0131l tan\u0131mlayaca\u011f\u0131n\u0131z\u0131, a\u011f ve veri y\u00f6netimi stratejilerini, kendi Docker imajlar\u0131n\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ve Docker Hub&#8217;a nas\u0131l y\u00fckleyece\u011finizi \u00f6\u011frendiniz.<\/p>\n<p>Docker, modern uygulama geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinde devrim yaratan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. Uygulamalar\u0131n\u0131z\u0131n ta\u015f\u0131nabilirli\u011fini, tutarl\u0131l\u0131\u011f\u0131n\u0131 ve \u00f6l\u00e7eklenebilirli\u011fini art\u0131rarak geli\u015ftirici ve operasyon ekiplerinin i\u015fini b\u00fcy\u00fck \u00f6l\u00e7\u00fcde kolayla\u015ft\u0131r\u0131r. Debian 9 gibi daha eski sistemlerde bile Docker&#8217;\u0131n sundu\u011fu bu avantajlardan faydalanmak m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<p>Art\u0131k Docker&#8217;\u0131n temellerine hakim oldu\u011funuza g\u00f6re, daha ileri konular\u0131 ke\u015ffetmeye haz\u0131rs\u0131n\u0131z. Docker Swarm veya Kubernetes gibi konteyner orkestrasyon ara\u00e7lar\u0131, CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) boru hatlar\u0131yla entegrasyon ve daha karma\u015f\u0131k a\u011f yap\u0131land\u0131rmalar\u0131 gibi konular\u0131 inceleyerek Docker bilginizi daha da ileri ta\u015f\u0131yabilirsiniz. Unutmay\u0131n, pratik yapmak ve farkl\u0131 senaryolar denemek, Docker&#8217;da ustala\u015fman\u0131n en iyi yoludur.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber\nDebian 9 (&#8220;Stretch&#8221;) her ne kadar art\u0131k eski bir s\u00fcr\u00fcm olsa da, belirli leg","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[241],"tags":[],"class_list":{"0":"post-33518","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-linux","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber\" \/>\n<meta property=\"og:description\" content=\"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber Debian 9 (&quot;Stretch&quot;) her ne kadar art\u0131k eski bir s\u00fcr\u00fcm olsa da, belirli leg\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-03T19:41:15+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber\",\"datePublished\":\"2025-11-03T19:41:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/\"},\"wordCount\":3367,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Linux\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/\",\"name\":\"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-03T19:41:15+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber","og_description":"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber Debian 9 (\"Stretch\") her ne kadar art\u0131k eski bir s\u00fcr\u00fcm olsa da, belirli leg","og_url":"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-03T19:41:15+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"21 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber","datePublished":"2025-11-03T19:41:15+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/"},"wordCount":3367,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Linux"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/","name":"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-03T19:41:15+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/debian-9-uzerine-docker-kurulumu-ve-kullanimi-kapsamli-bir-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Debian 9 \u00dczerine Docker Kurulumu ve Kullan\u0131m\u0131: Kapsaml\u0131 Bir Rehber"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=33518"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33518\/revisions"}],"predecessor-version":[{"id":33519,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33518\/revisions\/33519"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33518"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33518"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}