{"id":38090,"date":"2026-01-23T06:40:54","date_gmt":"2026-01-23T03:40:54","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=38090"},"modified":"2026-01-23T06:40:54","modified_gmt":"2026-01-23T03:40:54","slug":"ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/","title":{"rendered":"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 Rehber"},"content":{"rendered":"<p><body><\/p>\n<h2>Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 Rehber<\/h2>\n<p>Docker, uygulamalar\u0131 kapsay\u0131c\u0131lar (containers) i\u00e7inde paketleyerek da\u011f\u0131tmay\u0131 ve \u00e7al\u0131\u015ft\u0131rmay\u0131 kolayla\u015ft\u0131ran devrim niteli\u011finde bir teknolojidir. Docker Hub gibi herkese a\u00e7\u0131k registry&#8217;ler, milyonlarca Docker imaj\u0131n\u0131 bar\u0131nd\u0131r\u0131r ve kullan\u0131c\u0131lar\u0131n bu imajlar\u0131 kolayca indirip kullanmas\u0131na olanak tan\u0131r. Ancak, her zaman herkese a\u00e7\u0131k bir registry kullanmak istemeyebilirsiniz. \u015eirket i\u00e7i geli\u015ftirilen uygulamalar\u0131n imajlar\u0131, hassas veriler i\u00e7eren imajlar veya a\u011f k\u0131s\u0131tlamalar\u0131 olan ortamlar i\u00e7in \u00f6zel (private) bir Docker Registry kurmak hayati \u00f6nem ta\u015f\u0131r. Bu kapsaml\u0131 rehberde, Ubuntu 22.04 sunucusu \u00fczerinde g\u00fcvenli ve i\u015flevsel bir \u00f6zel Docker Registry&#8217;yi ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131, yap\u0131land\u0131raca\u011f\u0131n\u0131z\u0131 ve y\u00f6netece\u011finizi ele alaca\u011f\u0131z.<\/p>\n<h3>Neden \u00d6zel Bir Docker Registry?<\/h3>\n<p>\u00d6zel bir Docker Registry kullanman\u0131n bir\u00e7ok avantaj\u0131 vard\u0131r:<\/p>\n<p>*   <strong>G\u00fcvenlik ve Gizlilik:<\/strong> \u015eirketinizin veya projenizin hassas imajlar\u0131n\u0131 halka a\u00e7\u0131k Docker Hub&#8217;dan uzakta, kendi kontrol\u00fcn\u00fcz alt\u0131ndaki bir ortamda saklayabilirsiniz. Bu, fikri m\u00fclkiyetinizi koruman\u0131n ve yetkisiz eri\u015fimi engellemenin en iyi yoludur.<br \/>\n*   <strong>Eri\u015fim Kontrol\u00fc:<\/strong> Kimlerin imajlar\u0131n\u0131za eri\u015febilece\u011fini ve hangi i\u015flemleri (\u00e7ekme, g\u00f6nderme, silme) yapabilece\u011fini detayl\u0131 bir \u015fekilde kontrol edebilirsiniz.<br \/>\n*   <strong>A\u011f Verimlili\u011fi:<\/strong> \u00d6zellikle b\u00fcy\u00fck imajlarla veya s\u0131k s\u0131k imaj \u00e7ekme\/g\u00f6nderme i\u015flemleriyle \u00e7al\u0131\u015f\u0131yorsan\u0131z, registry&#8217;nin kendi yerel a\u011f\u0131n\u0131zda bulunmas\u0131 a\u011f trafi\u011fini azalt\u0131r ve i\u015flem s\u00fcrelerini h\u0131zland\u0131r\u0131r.<br \/>\n*   <strong>\u00d6zelle\u015ftirme ve Kontrol:<\/strong> Registry&#8217;nin depolama, g\u00fcvenlik ve a\u011f yap\u0131land\u0131rmas\u0131 \u00fczerinde tam kontrol sahibi olursunuz. Kendi g\u00fcvenlik politikalar\u0131n\u0131z\u0131 uygulayabilir, \u00f6zel depolama \u00e7\u00f6z\u00fcmleri entegre edebilir ve CI\/CD s\u00fcre\u00e7lerinize daha iyi entegre edebilirsiniz.<br \/>\n*   <strong>Ba\u011f\u0131ms\u0131zl\u0131k:<\/strong> Harici bir hizmete ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 ortadan kald\u0131rarak, internet ba\u011flant\u0131s\u0131 kesintileri veya \u00fc\u00e7\u00fcnc\u00fc taraf hizmet kesintilerinden etkilenmezsiniz. Hava bo\u015fluklu (air-gapped) ortamlar i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<p>Bu rehberde, Docker&#8217;\u0131n resmi <code>registry<\/code> imaj\u0131n\u0131 kullanarak bir \u00f6zel registry kuraca\u011f\u0131z. Bu imaj, Docker toplulu\u011fu taraf\u0131ndan aktif olarak desteklenmekte ve bir\u00e7ok esnek yap\u0131land\u0131rma se\u00e7ene\u011fi sunmaktad\u0131r.<\/p>\n<h3>\u00d6n Ko\u015fullar<\/h3>\n<p>Ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki gereksinimlerin kar\u015f\u0131land\u0131\u011f\u0131ndan emin olun:<\/p>\n<p>*   <strong>Ubuntu 22.04 Sunucusu:<\/strong> Temiz bir Ubuntu 22.04 LTS kurulumu \u00f6nerilir.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Komutlar\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in <code>sudo<\/code> yetkisine sahip bir kullan\u0131c\u0131.<br \/>\n*   <strong>Temel Docker Bilgisi:<\/strong> Docker komutlar\u0131 (<code>pull<\/code>, <code>push<\/code>, <code>tag<\/code>, <code>run<\/code>) hakk\u0131nda temel bilgi.<br \/>\n*   <strong>Alan Ad\u0131 veya IP Adresi:<\/strong> Registry&#8217;nizi HTTPS ile g\u00fcvenli hale getirmek i\u00e7in bir alan ad\u0131 (\u00f6rne\u011fin, <code>registry.example.com<\/code>) veya sunucunuzun statik bir IP adresi. Bu rehberde hem IP adresi hem de alan ad\u0131 kullan\u0131labilecektir.<br \/>\n*   <strong>A\u00e7\u0131k Portlar:<\/strong> Registry i\u00e7in 5000 numaral\u0131 portun (veya tercih etti\u011finiz ba\u015fka bir portun) ve e\u011fer ters proxy kullanacaksan\u0131z 80\/443 portlar\u0131n\u0131n g\u00fcvenlik duvar\u0131nda a\u00e7\u0131k olmas\u0131.<\/p>\n<h3>Docker Kurulumu<\/h3>\n<p>\u00d6ncelikle, Ubuntu 22.04 sunucunuza Docker Engine&#8217;i kurman\u0131z gerekmektedir.<\/p>\n<h4>Sistem G\u00fcncellemesi ve Gerekli Paketlerin Kurulumu<\/h4>\n<p>Sisteminizin g\u00fcncel oldu\u011fundan ve Docker kurulumu i\u00e7in gerekli paketlerin y\u00fckl\u00fc oldu\u011fundan emin olun:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y\nsudo apt install apt-transport-https ca-certificates curl software-properties-common -y<\/code><\/pre>\n<h4>Docker GPG Anahtar\u0131n\u0131 Ekleme<\/h4>\n<p>Docker&#8217;\u0131n resmi deposundan paketleri g\u00fcvenli bir \u015fekilde indirmek i\u00e7in GPG anahtar\u0131n\u0131 ekleyin:<\/p>\n<pre><code class=\"language-bash\">curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo gpg --dearmor -o \/usr\/share\/keyrings\/docker-archive-keyring.gpg<\/code><\/pre>\n<h4>Docker Deposunu Ekleme<\/h4>\n<p>Sisteminizin <code>apt<\/code> paket y\u00f6neticisine Docker deposunu ekleyin:<\/p>\n<pre><code class=\"language-bash\">echo \"deb [arch=$(dpkg --print-architecture) signed-by=\/usr\/share\/keyrings\/docker-archive-keyring.gpg] https:\/\/download.docker.com\/linux\/ubuntu $(lsb_release -cs) stable\" | sudo tee \/etc\/apt\/sources.list.d\/docker.list > \/dev\/null<\/code><\/pre>\n<h4>Docker Engine Kurulumu<\/h4>\n<p>Depo eklendikten sonra, Docker Engine&#8217;i ve ilgili bile\u015fenleri kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y<\/code><\/pre>\n<h4>Docker Kurulumunu 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\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo docker run hello-world<\/code><\/pre>\n<p>E\u011fer \u00e7\u0131kt\u0131da &#8220;Hello from Docker!&#8221; mesaj\u0131n\u0131 g\u00f6r\u00fcyorsan\u0131z, Docker ba\u015far\u0131yla kurulmu\u015ftur.<\/p>\n<h4>Kullan\u0131c\u0131y\u0131 Docker Grubuna Ekleme (\u0130ste\u011fe Ba\u011fl\u0131 ama \u00d6nerilir)<\/h4>\n<p><code>sudo<\/code> komutunu her seferinde kullanmadan Docker komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in kendi kullan\u0131c\u0131n\u0131z\u0131 <code>docker<\/code> grubuna ekleyebilirsiniz. Bu i\u015flemi yapt\u0131ktan sonra oturumu kapat\u0131p tekrar a\u00e7man\u0131z veya sistemi yeniden ba\u015flatman\u0131z gerekir.<\/p>\n<pre><code class=\"language-bash\">sudo usermod -aG docker $USER<\/code><\/pre>\n<h3>Registry Kurulumu ve Yap\u0131land\u0131rmas\u0131<\/h3>\n<p>\u015eimdi s\u0131ra \u00f6zel Docker Registry&#8217;mizi kurmaya geldi. G\u00fcvenlik nedeniyle HTTPS ve temel kimlik do\u011frulama (Basic Auth) kullanaca\u011f\u0131z.<\/p>\n<h4>Temel Registry \u00c7al\u0131\u015ft\u0131rma (Geli\u015ftirme Ortamlar\u0131 \u0130\u00e7in)<\/h4>\n<p>\u00dcretim ortamlar\u0131 i\u00e7in kesinlikle \u00f6nerilmese de, registry&#8217;yi h\u0131zl\u0131ca test etmek i\u00e7in HTTPS ve kimlik do\u011frulama olmadan \u00e7al\u0131\u015ft\u0131rabiliriz. Bu ad\u0131m, registry&#8217;nin temel i\u015flevselli\u011fini anlaman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<pre><code class=\"language-bash\">docker run -d -p 5000:5000 --restart always --name registry registry:2<\/code><\/pre>\n<p>Bu komut, <code>registry:2<\/code> imaj\u0131n\u0131 kullanarak bir Docker kapsay\u0131c\u0131s\u0131 ba\u015flat\u0131r, 5000 numaral\u0131 portu host makineye e\u015fler ve kapsay\u0131c\u0131n\u0131n her zaman yeniden ba\u015flamas\u0131n\u0131 sa\u011flar.<\/p>\n<p><strong>Dikkat:<\/strong> Bu yap\u0131land\u0131rma HTTP \u00fczerinden \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in g\u00fcvenli de\u011fildir ve \u00fcretim ortamlar\u0131nda kullan\u0131lmamal\u0131d\u0131r.<\/p>\n<p><strong>\u0130stemci Taraf\u0131nda G\u00fcvenli Olmayan Registry Yap\u0131land\u0131rmas\u0131:<\/strong><br \/>\nE\u011fer bu \u015fekilde bir registry&#8217;yi test ediyorsan\u0131z, Docker istemcinizin (yani imajlar\u0131 \u00e7ekece\u011finiz veya g\u00f6nderece\u011finiz makine) bu registry&#8217;yi g\u00fcvenli olmayan bir registry olarak tan\u0131mas\u0131 gerekir. Bunun i\u00e7in istemci makinede <code>\/etc\/docker\/daemon.json<\/code> dosyas\u0131n\u0131 olu\u015fturun veya d\u00fczenleyin:<\/p>\n<pre><code class=\"language-bash\">sudo nano \/etc\/docker\/daemon.json<\/code><\/pre>\n<p>Dosyan\u0131n i\u00e7eri\u011fi a\u015fa\u011f\u0131daki gibi olmal\u0131d\u0131r (IP adresini kendi registry sunucunuzun IP adresiyle de\u011fi\u015ftirin):<\/p>\n<pre><code class=\"language-json\">{\n  \"insecure-registries\": [\"YOUR_REGISTRY_IP_OR_DOMAIN:5000\"]\n}<\/code><\/pre>\n<p>De\u011fi\u015fiklikleri kaydettikten sonra Docker servisini yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart docker<\/code><\/pre>\n<p>Art\u0131k bir imaj\u0131 \u00e7ekip etiketleyerek registry&#8217;nize g\u00f6nderebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker pull busybox\ndocker tag busybox YOUR_REGISTRY_IP_OR_DOMAIN:5000\/my-busybox\ndocker push YOUR_REGISTRY_IP_OR_DOMAIN:5000\/my-busybox<\/code><\/pre>\n<p>Bu \u015fekilde \u00e7al\u0131\u015ft\u0131rmak sadece bir test i\u00e7indir. \u015eimdi g\u00fcvenli yap\u0131land\u0131rmaya ge\u00e7elim.<\/p>\n<h4>HTTPS ile G\u00fcvenli Registry Kurulumu (\u00d6nerilen Y\u00f6ntem)<\/h4>\n<p>\u00dcretim ortamlar\u0131 i\u00e7in HTTPS kullanmak zorunludur. Bu, verilerinizin \u015fifrelenmesini ve kimlik do\u011frulaman\u0131n g\u00fcvenli bir \u015fekilde yap\u0131lmas\u0131n\u0131 sa\u011flar. HTTPS i\u00e7in bir SSL\/TLS sertifikas\u0131na ihtiyac\u0131m\u0131z var. \u0130ki ana se\u00e7ene\u011fimiz var:<\/p>\n<p>1.  <strong>Let&#8217;s Encrypt:<\/strong> \u00dccretsiz, g\u00fcvenilir sertifikalar sa\u011flar. Bir alan ad\u0131na ve 80\/443 portlar\u0131n\u0131n d\u0131\u015far\u0131dan eri\u015filebilir olmas\u0131na ihtiya\u00e7 duyar. Genellikle bir ters proxy (Nginx, Caddy) ile birlikte kullan\u0131l\u0131r. \u00dcretim ortamlar\u0131 i\u00e7in en iyi se\u00e7enektir.<br \/>\n2.  <strong>Kendinden \u0130mzal\u0131 (Self-Signed) Sertifikalar:<\/strong> Alan ad\u0131 gerektirmez, kurulumu daha kolayd\u0131r. Ancak, bu sertifikalar varsay\u0131lan olarak taray\u0131c\u0131lar veya i\u015fletim sistemleri taraf\u0131ndan g\u00fcvenilmez kabul edilir. Her istemci makinesinde bu sertifikay\u0131 manuel olarak g\u00fcvenilir olarak eklemeniz gerekir. \u0130\u00e7 a\u011flardaki geli\u015ftirme veya test ortamlar\u0131 i\u00e7in uygundur.<\/p>\n<p>Bu rehberde, kurulumu daha basit oldu\u011fu i\u00e7in kendinden imzal\u0131 sertifikalarla ilerleyece\u011fiz. \u00dcretim ortam\u0131 i\u00e7in Let&#8217;s Encrypt ve bir ters proxy kullanmay\u0131 d\u00fc\u015f\u00fcnmelisiniz.<\/p>\n<h5>Sertifika Olu\u015fturma<\/h5>\n<p>Registry sunucunuzda sertifikalar\u0131n\u0131z\u0131 saklamak i\u00e7in bir dizin olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">mkdir -p ~\/certs\ncd ~\/certs<\/code><\/pre>\n<p>\u015eimdi OpenSSL kullanarak kendinden imzal\u0131 bir anahtar ve sertifika olu\u015ftural\u0131m. <code>YOUR_REGISTRY_IP_OR_DOMAIN<\/code> k\u0131sm\u0131n\u0131 registry sunucunuzun IP adresi veya alan ad\u0131yla de\u011fi\u015ftirmeyi unutmay\u0131n. Sertifika olu\u015ftururken &#8220;Common Name (CN)&#8221; soruldu\u011funda bu de\u011feri girmeniz \u00e7ok \u00f6nemlidir.<\/p>\n<pre><code class=\"language-bash\">openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt<\/code><\/pre>\n<p>Komutu \u00e7al\u0131\u015ft\u0131rd\u0131ktan sonra baz\u0131 bilgiler girmeniz istenecektir. \u00d6nemli olan &#8220;Common Name (CN)&#8221; k\u0131sm\u0131na registry&#8217;nize eri\u015fmek i\u00e7in kullanaca\u011f\u0131n\u0131z IP adresi veya alan ad\u0131n\u0131 (\u00f6rne\u011fin, <code>192.168.1.100<\/code> veya <code>registry.example.com<\/code>) girmenizdir. Di\u011fer alanlar\u0131 iste\u011fe ba\u011fl\u0131 olarak doldurabilirsiniz.<\/p>\n<p><code>domain.key<\/code> (\u00f6zel anahtar) ve <code>domain.crt<\/code> (genel sertifika) dosyalar\u0131 <code>~\/certs<\/code> dizininde olu\u015fturulacakt\u0131r.<\/p>\n<h5>Registry&#8217;yi HTTPS ile \u00c7al\u0131\u015ft\u0131rma<\/h5>\n<p>\u00d6nceki g\u00fcvensiz registry kapsay\u0131c\u0131s\u0131n\u0131 durdurup kald\u0131ral\u0131m:<\/p>\n<pre><code class=\"language-bash\">docker stop registry\ndocker rm registry<\/code><\/pre>\n<p>\u015eimdi registry&#8217;yi HTTPS&#8217;yi etkinle\u015ftirerek ve olu\u015fturdu\u011fumuz sertifikalar\u0131 kullanarak \u00e7al\u0131\u015ft\u0131ral\u0131m:<\/p>\n<pre><code class=\"language-bash\">docker run -d \\\n  -p 5000:5000 \\\n  --restart always \\\n  --name registry \\\n  -v ~\/certs:\/certs \\\n  -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \\\n  -e REGISTRY_HTTP_TLS_CERTIFICATE=\/certs\/domain.crt \\\n  -e REGISTRY_HTTP_TLS_KEY=\/certs\/domain.key \\\n  registry:2<\/code><\/pre>\n<p>Bu komutta:<br \/>\n*   <code>-v ~\/certs:\/certs<\/code>: Host makinedeki <code>~\/certs<\/code> dizinini kapsay\u0131c\u0131 i\u00e7indeki <code>\/certs<\/code> dizinine ba\u011flar.<br \/>\n*   <code>-e REGISTRY_HTTP_TLS_CERTIFICATE<\/code>: Sertifika dosyas\u0131n\u0131n kapsay\u0131c\u0131 i\u00e7indeki yolunu belirtir.<br \/>\n*   <code>-e REGISTRY_HTTP_TLS_KEY<\/code>: Anahtar dosyas\u0131n\u0131n kapsay\u0131c\u0131 i\u00e7indeki yolunu belirtir.<\/p>\n<h5>\u0130stemci Taraf\u0131nda Sertifika Yap\u0131land\u0131rmas\u0131<\/h5>\n<p>Kendinden imzal\u0131 sertifikalar kulland\u0131\u011f\u0131m\u0131z i\u00e7in, imajlar\u0131 \u00e7ekmek veya g\u00f6ndermek istedi\u011finiz her Docker istemcisinin bu sertifikaya g\u00fcvenmesi gerekir.<\/p>\n<p><strong>1. Sertifikay\u0131 \u0130stemciye Kopyalama:<\/strong><br \/>\nRegistry sunucunuzdaki <code>~\/certs\/domain.crt<\/code> dosyas\u0131n\u0131 Docker istemcisi makinesine kopyalay\u0131n. \u00d6rne\u011fin, <code>scp<\/code> kullanarak:<\/p>\n<pre><code class=\"language-bash\">scp ~\/certs\/domain.crt user@client_ip:\/tmp\/domain.crt<\/code><\/pre>\n<p><strong>2. \u0130stemcide Sertifikay\u0131 G\u00fcvenilir Olarak Ekleme:<\/strong><br \/>\n\u0130stemci makinede a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyin:<\/p>\n<p>*   <strong>Y\u00f6ntem A: Sistem Geneli G\u00fcven:<\/strong><br \/>\n    Sertifikay\u0131 sistemin g\u00fcvenilir sertifikalar\u0131 aras\u0131na ekleyin:<\/p>\n<pre><code class=\"language-bash\">sudo cp \/tmp\/domain.crt \/usr\/local\/share\/ca-certificates\/registry.crt\n    sudo update-ca-certificates<\/code><\/pre>\n<p>    Bu, \u00e7o\u011fu Linux sisteminde sertifikan\u0131n sistem genelinde g\u00fcvenilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>*   <strong>Y\u00f6ntem B: Docker \u00d6zelinde G\u00fcven (\u00d6nerilir):<\/strong><br \/>\n    Docker&#8217;\u0131n belirli bir registry i\u00e7in \u00f6zel sertifika dizini vard\u0131r. Bu, sertifikan\u0131n sadece Docker taraf\u0131ndan kullan\u0131lmas\u0131n\u0131 sa\u011flar:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/etc\/docker\/certs.d\/YOUR_REGISTRY_IP_OR_DOMAIN:5000\n    sudo cp \/tmp\/domain.crt \/etc\/docker\/certs.d\/YOUR_REGISTRY_IP_OR_DOMAIN:5000\/ca.crt<\/code><\/pre>\n<p>    <code>YOUR_REGISTRY_IP_OR_DOMAIN<\/code> k\u0131sm\u0131n\u0131 sertifikay\u0131 olu\u015ftururken Common Name olarak kulland\u0131\u011f\u0131n\u0131z IP adresi veya alan ad\u0131yla de\u011fi\u015ftirin.<\/p>\n<p>Her iki y\u00f6ntemde de, sertifika eklendikten sonra Docker servisini yeniden ba\u015flatman\u0131z gerekir:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart docker<\/code><\/pre>\n<p>Art\u0131k istemci makineden HTTPS \u00fczerinden imajlar\u0131 \u00e7ekip g\u00f6nderebilirsiniz. Unutmay\u0131n, <code>YOUR_REGISTRY_IP_OR_DOMAIN<\/code> k\u0131sm\u0131n\u0131 sertifikan\u0131z\u0131 olu\u015ftururken kulland\u0131\u011f\u0131n\u0131z de\u011ferle de\u011fi\u015ftirmelisiniz.<\/p>\n<pre><code class=\"language-bash\">docker pull busybox\ndocker tag busybox YOUR_REGISTRY_IP_OR_DOMAIN:5000\/my-busybox\ndocker push YOUR_REGISTRY_IP_OR_DOMAIN:5000\/my-busybox<\/code><\/pre>\n<p>E\u011fer <code>x509: certificate signed by unknown authority<\/code> gibi bir hata al\u0131rsan\u0131z, istemci taraf\u0131nda sertifika kurulumunu tekrar kontrol edin.<\/p>\n<h4>Temel Kimlik Do\u011frulama (Basic Auth) Ekleme<\/h4>\n<p>Registry&#8217;nize yetkisiz eri\u015fimi engellemek i\u00e7in kimlik do\u011frulama eklemek \u00e7ok \u00f6nemlidir. Docker Registry, temel kimlik do\u011frulama i\u00e7in <code>htpasswd<\/code> dosyas\u0131n\u0131 destekler.<\/p>\n<h5><code>htpasswd<\/code> Kurulumu<\/h5>\n<p><code>htpasswd<\/code> arac\u0131 <code>apache2-utils<\/code> paketinin bir par\u00e7as\u0131d\u0131r. Registry sunucunuzda bu paketi kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt install apache2-utils -y<\/code><\/pre>\n<h5>Kullan\u0131c\u0131 ve Parola Dosyas\u0131 Olu\u015fturma<\/h5>\n<p>Kimlik do\u011frulama dosyas\u0131n\u0131 saklamak i\u00e7in bir dizin olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">mkdir -p ~\/auth\ncd ~\/auth<\/code><\/pre>\n<p>\u015eimdi <code>htpasswd<\/code> kullanarak bir kullan\u0131c\u0131 (\u00f6rne\u011fin <code>registryuser<\/code>) ve parola olu\u015fturun. \u0130lk kullan\u0131c\u0131y\u0131 olu\u015ftururken <code>-c<\/code> (create) bayra\u011f\u0131n\u0131 kullan\u0131n. Daha sonraki kullan\u0131c\u0131lar\u0131 eklerken <code>-b<\/code> bayra\u011f\u0131n\u0131 kullan\u0131n (veya <code>-c<\/code> kullanmadan sadece <code>-B<\/code> ile etkile\u015fimli parola girin).<\/p>\n<pre><code class=\"language-bash\">htpasswd -Bc ~\/auth\/htpasswd registryuser<\/code><\/pre>\n<p>Komut size bir parola girmenizi isteyecektir. G\u00fc\u00e7l\u00fc bir parola se\u00e7in. <code>registryuser<\/code> yerine istedi\u011finiz bir kullan\u0131c\u0131 ad\u0131n\u0131 kullanabilirsiniz.<\/p>\n<h5>Registry&#8217;yi Kimlik Do\u011frulama ile \u00c7al\u0131\u015ft\u0131rma<\/h5>\n<p>\u00d6nceki registry kapsay\u0131c\u0131s\u0131n\u0131 durdurup kald\u0131ral\u0131m:<\/p>\n<pre><code class=\"language-bash\">docker stop registry\ndocker rm registry<\/code><\/pre>\n<p>\u015eimdi registry&#8217;yi hem HTTPS hem de temel kimlik do\u011frulama ile \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker run -d \\\n  -p 5000:5000 \\\n  --restart always \\\n  --name registry \\\n  -v ~\/certs:\/certs \\\n  -v ~\/auth:\/auth \\\n  -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \\\n  -e REGISTRY_HTTP_TLS_CERTIFICATE=\/certs\/domain.crt \\\n  -e REGISTRY_HTTP_TLS_KEY=\/certs\/domain.key \\\n  -e REGISTRY_AUTH=htpasswd \\\n  -e REGISTRY_AUTH_HTPASSWD_REALM=\"Registry Realm\" \\\n  -e REGISTRY_AUTH_HTPASSWD_PATH=\/auth\/htpasswd \\\n  registry:2<\/code><\/pre>\n<p>Bu komutta ek olarak:<br \/>\n*   <code>-v ~\/auth:\/auth<\/code>: Host makinedeki <code>~\/auth<\/code> dizinini kapsay\u0131c\u0131 i\u00e7indeki <code>\/auth<\/code> dizinine ba\u011flar.<br \/>\n*   <code>-e REGISTRY_AUTH=htpasswd<\/code>: Kimlik do\u011frulama y\u00f6ntemini <code>htpasswd<\/code> olarak ayarlar.<br \/>\n*   <code>-e REGISTRY_AUTH_HTPASSWD_REALM<\/code>: Kimlik do\u011frulama i\u00e7in bir &#8220;realm&#8221; ad\u0131 belirler (iste\u011fe ba\u011fl\u0131).<br \/>\n*   <code>-e REGISTRY_AUTH_HTPASSWD_PATH<\/code>: <code>htpasswd<\/code> dosyas\u0131n\u0131n kapsay\u0131c\u0131 i\u00e7indeki yolunu belirtir.<\/p>\n<h5>Kimlik Do\u011frulamay\u0131 Test Etme<\/h5>\n<p>\u015eimdi bir Docker istemcisinden registry&#8217;nize giri\u015f yapmay\u0131 deneyin:<\/p>\n<pre><code class=\"language-bash\">docker login YOUR_REGISTRY_IP_OR_DOMAIN:5000<\/code><\/pre>\n<p><code>registryuser<\/code> kullan\u0131c\u0131 ad\u0131n\u0131 ve olu\u015fturdu\u011funuz parolay\u0131 girmeniz istenecektir. Ba\u015far\u0131l\u0131 bir \u015fekilde giri\u015f yapt\u0131ktan sonra, imajlar\u0131 \u00e7ekip g\u00f6nderebilirsiniz.<\/p>\n<pre><code class=\"language-bash\">docker pull alpine\ndocker tag alpine YOUR_REGISTRY_IP_OR_DOMAIN:5000\/my-alpine\ndocker push YOUR_REGISTRY_IP_OR_DOMAIN:5000\/my-alpine<\/code><\/pre>\n<p>E\u011fer <code>authentication required<\/code> hatas\u0131 al\u0131rsan\u0131z, kullan\u0131c\u0131 ad\u0131n\u0131z\u0131, parolan\u0131z\u0131 ve <code>htpasswd<\/code> dosyas\u0131n\u0131n do\u011fru yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131n\u0131 kontrol edin.<\/p>\n<h3>Y\u00f6netim ve Bak\u0131m<\/h3>\n<p>\u00d6zel Docker Registry&#8217;nizi kurduktan sonra, imajlar\u0131 y\u00f6netmek ve baz\u0131 bak\u0131m g\u00f6revlerini ger\u00e7ekle\u015ftirmek isteyebilirsiniz.<\/p>\n<h4>\u0130majlar\u0131 Listeleme<\/h4>\n<p>Registry&#8217;nizde hangi imajlar\u0131n bulundu\u011funu g\u00f6rmek i\u00e7in Docker Registry API&#8217;sini kullanabilirsiniz. Kimlik do\u011frulama gerektiren bir registry i\u00e7in kullan\u0131c\u0131 ad\u0131n\u0131z\u0131 ve parolan\u0131z\u0131 belirtmeniz gerekir:<\/p>\n<pre><code class=\"language-bash\">curl -u registryuser:password https:\/\/YOUR_REGISTRY_IP_OR_DOMAIN:5000\/v2\/_catalog<\/code><\/pre>\n<p>Belirli bir imaj\u0131n etiketlerini (tag&#8217;lerini) listelemek i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">curl -u registryuser:password https:\/\/YOUR_REGISTRY_IP_OR_DOMAIN:5000\/v2\/my-alpine\/tags\/list<\/code><\/pre>\n<p><code>registryuser:password<\/code> k\u0131sm\u0131n\u0131 kendi kimlik bilgilerinizle de\u011fi\u015ftirmeyi unutmay\u0131n.<\/p>\n<h4>\u0130majlar\u0131 Silme<\/h4>\n<p>Varsay\u0131lan olarak, Docker Registry&#8217;den imajlar\u0131 silme \u00f6zelli\u011fi devre d\u0131\u015f\u0131d\u0131r. Bunu etkinle\u015ftirmek i\u00e7in registry&#8217;yi yeniden yap\u0131land\u0131rman\u0131z gerekir.<\/p>\n<p><strong>1. Silme \u00d6zelli\u011fini Etkinle\u015ftirme:<\/strong><br \/>\nRegistry kapsay\u0131c\u0131s\u0131n\u0131 durdurup kald\u0131r\u0131n ve <code>REGISTRY_STORAGE_DELETE_ENABLED=true<\/code> ortam de\u011fi\u015fkenini ekleyerek yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker stop registry\ndocker rm registry\ndocker run -d \\\n  -p 5000:5000 \\\n  --restart always \\\n  --name registry \\\n  -v ~\/certs:\/certs \\\n  -v ~\/auth:\/auth \\\n  -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \\\n  -e REGISTRY_HTTP_TLS_CERTIFICATE=\/certs\/domain.crt \\\n  -e REGISTRY_HTTP_TLS_KEY=\/certs\/domain.key \\\n  -e REGISTRY_AUTH=htpasswd \\\n  -e REGISTRY_AUTH_HTPASSWD_REALM=\"Registry Realm\" \\\n  -e REGISTRY_AUTH_HTPASSWD_PATH=\/auth\/htpasswd \\\n  -e REGISTRY_STORAGE_DELETE_ENABLED=true \\\n  registry:2<\/code><\/pre>\n<p><strong>2. \u0130maj\u0131 Silme (Manifest Digest ile):<\/strong><br \/>\nBir imaj\u0131 silmek i\u00e7in, o imaj\u0131n manifest digest&#8217;ine ihtiyac\u0131n\u0131z vard\u0131r. \u00d6ncelikle imaj\u0131n manifest&#8217;ini inceleyin:<\/p>\n<pre><code class=\"language-bash\">docker manifest inspect YOUR_REGISTRY_IP_OR_DOMAIN:5000\/my-alpine<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da <code>Digest<\/code> alan\u0131n\u0131 bulun (\u00f6rne\u011fin, <code>sha256:xxxxxxxxxx<\/code>). Bu digest de\u011ferini kullanarak imaj\u0131 silebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">curl -v -u registryuser:password -X DELETE \\\n  https:\/\/YOUR_REGISTRY_IP_OR_DOMAIN:5000\/v2\/my-alpine\/manifests\/sha256:xxxxxxxxxx<\/code><\/pre>\n<p><strong>3. \u00c7\u00f6p Toplama (Garbage Collection):<\/strong><br \/>\nBir imaj\u0131 sildikten sonra, disk alan\u0131n\u0131 geri kazanmak i\u00e7in \u00e7\u00f6p toplama (garbage collection) i\u015flemi yapman\u0131z gerekir. Bu i\u015flem, silinen imajlara ait katmanlar\u0131 (layers) fiziksel olarak diskten kald\u0131r\u0131r.<\/p>\n<p><strong>\u00d6nemli:<\/strong> \u00c7\u00f6p toplama i\u015flemi s\u0131ras\u0131nda registry&#8217;nin durdurulmas\u0131 \u00f6nerilir. Aksi takdirde veri bozulmas\u0131 riski olabilir.<\/p>\n<pre><code class=\"language-bash\">docker stop registry\ndocker exec registry bin\/registry garbage-collect \/etc\/docker\/registry\/config.yml\ndocker start registry<\/code><\/pre>\n<p>E\u011fer registry&#8217;yi durdurmak m\u00fcmk\u00fcn de\u011filse ve depolama backend&#8217;iniz e\u015fzamanl\u0131 eri\u015fime izin veriyorsa, <code>--force<\/code> bayra\u011f\u0131n\u0131 kullanabilirsiniz, ancak bu riskli olabilir:<\/p>\n<pre><code class=\"language-bash\">docker exec registry bin\/registry garbage-collect --force \/etc\/docker\/registry\/config.yml<\/code><\/pre>\n<h4>Depolama Alan\u0131 (Storage) Yap\u0131land\u0131rmas\u0131<\/h4>\n<p>Varsay\u0131lan olarak, Docker Registry imajlar\u0131 kapsay\u0131c\u0131 i\u00e7inde <code>\/var\/lib\/registry<\/code> dizinine depolar. Ancak, kapsay\u0131c\u0131 silindi\u011finde verilerin kaybolmamas\u0131 ve daha iyi y\u00f6netim i\u00e7in harici bir birim (volume) ba\u011flamak en iyi uygulamad\u0131r.<\/p>\n<p>Mevcut registry kapsay\u0131c\u0131s\u0131n\u0131 durdurup kald\u0131r\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker stop registry\ndocker rm registry<\/code><\/pre>\n<p>\u015eimdi registry&#8217;yi harici bir birim ile \u00e7al\u0131\u015ft\u0131r\u0131n. \u00d6rne\u011fin, host makinede <code>\/data\/registry<\/code> dizinini kullanmak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/data\/registry\ndocker run -d \\\n  -p 5000:5000 \\\n  --restart always \\\n  --name registry \\\n  -v \/data\/registry:\/var\/lib\/registry \\\n  -v ~\/certs:\/certs \\\n  -v ~\/auth:\/auth \\\n  -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \\\n  -e REGISTRY_HTTP_TLS_CERTIFICATE=\/certs\/domain.crt \\\n  -e REGISTRY_HTTP_TLS_KEY=\/certs\/domain.key \\\n  -e REGISTRY_AUTH=htpasswd \\\n  -e REGISTRY_AUTH_HTPASSWD_REALM=\"Registry Realm\" \\\n  -e REGISTRY_AUTH_HTPASSWD_PATH=\/auth\/htpasswd \\\n  -e REGISTRY_STORAGE_DELETE_ENABLED=true \\\n  registry:2<\/code><\/pre>\n<p>Bu komutta <code>-v \/data\/registry:\/var\/lib\/registry<\/code> k\u0131sm\u0131, host makinedeki <code>\/data\/registry<\/code> dizinini registry kapsay\u0131c\u0131s\u0131n\u0131n depolama dizinine ba\u011flar. Art\u0131k imaj verileriniz host makinede kal\u0131c\u0131 olarak saklanacakt\u0131r.<\/p>\n<p>Docker Registry, yerel dosya sisteminin yan\u0131 s\u0131ra Amazon S3, Azure Blob Storage, Google Cloud Storage gibi bulut depolama \u00e7\u00f6z\u00fcmlerini de destekler. Bu, \u00f6zellikle y\u00fcksek eri\u015filebilirlik ve \u00f6l\u00e7eklenebilirlik gerektiren \u00fcretim ortamlar\u0131 i\u00e7in faydal\u0131d\u0131r. Bu depolama \u00e7\u00f6z\u00fcmlerini kullanmak i\u00e7in ek ortam de\u011fi\u015fkenleri veya yap\u0131land\u0131rma dosyalar\u0131 gereklidir.<\/p>\n<h4>Yedekleme ve Geri Y\u00fckleme<\/h4>\n<p>Registry verilerinizi yedeklemek, herhangi bir felaket durumunda imajlar\u0131n\u0131z\u0131 kaybetmemenizi sa\u011flar.<\/p>\n<p><strong>Yedekleme:<\/strong><br \/>\nRegistry&#8217;nizi durdurun ve depolama dizinini (\u00f6rne\u011fin, <code>\/data\/registry<\/code>) s\u0131k\u0131\u015ft\u0131rarak ba\u015fka bir konuma kopyalay\u0131n:<\/p>\n<pre><code class=\"language-bash\">docker stop registry\nsudo tar -czvf registry_backup_$(date +%Y%m%d%H%M%S).tar.gz \/data\/registry\ndocker start registry<\/code><\/pre>\n<p><strong>Geri Y\u00fckleme:<\/strong><br \/>\nYeni bir sunucuya geri y\u00fcklemek i\u00e7in:<br \/>\n1.  Yeni sunucuya Docker&#8217;\u0131 kurun.<br \/>\n2.  Registry kapsay\u0131c\u0131s\u0131n\u0131 yukar\u0131daki gibi harici bir birimle (\u00f6rne\u011fin, <code>\/data\/registry<\/code>) \u00e7al\u0131\u015ft\u0131r\u0131n.<br \/>\n3.  Registry&#8217;yi durdurun (<code>docker stop registry<\/code>).<br \/>\n4.  Yedekledi\u011finiz <code>.tar.gz<\/code> dosyas\u0131n\u0131 <code>\/data\/registry<\/code> dizinine a\u00e7\u0131n.<br \/>\n5.  Registry&#8217;yi ba\u015flat\u0131n (<code>docker start registry<\/code>).<\/p>\n<h3>G\u00fcvenlik \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar<\/h3>\n<p>\u00d6zel bir Docker Registry kurmak, g\u00fcvenlik sorumlulu\u011funuzu art\u0131r\u0131r. \u0130\u015fte baz\u0131 ek g\u00fcvenlik ipu\u00e7lar\u0131:<\/p>\n<p>*   <strong>Her Zaman HTTPS Kullan\u0131n:<\/strong> HTTP \u00fczerinden asla hassas imajlar\u0131 aktarmay\u0131n. Kendinden imzal\u0131 sertifikalar yerine, m\u00fcmk\u00fcnse Let&#8217;s Encrypt gibi g\u00fcvenilir bir CA&#8217;dan sertifika al\u0131n.<br \/>\n*   <strong>G\u00fc\u00e7l\u00fc Kimlik Do\u011frulama:<\/strong> <code>htpasswd<\/code> kullan\u0131yorsan\u0131z, g\u00fc\u00e7l\u00fc ve benzersiz parolalar se\u00e7in. Daha ileri d\u00fczey kimlik do\u011frulama \u00e7\u00f6z\u00fcmleri (\u00f6rne\u011fin, LDAP, OAuth2 entegrasyonu) i\u00e7in bir ters proxy veya daha geli\u015fmi\u015f bir registry \u00e7\u00f6z\u00fcm\u00fc (Harbor, Nexus) d\u00fc\u015f\u00fcnebilirsiniz.<br \/>\n*   <strong>G\u00fcvenlik Duvar\u0131 (Firewall):<\/strong> Registry&#8217;nizin 5000 numaral\u0131 portuna (veya kulland\u0131\u011f\u0131n\u0131z porta) eri\u015fimi sadece yetkili IP adresleriyle (\u00f6rne\u011fin, CI\/CD sunucular\u0131, geli\u015ftirme makineleri) s\u0131n\u0131rlay\u0131n. UFW (Uncomplicated Firewall) kullan\u0131yorsan\u0131z:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow from YOUR_CLIENT_IP_OR_SUBNET to any port 5000\n    sudo ufw enable<\/code><\/pre>\n<p>    Genel eri\u015fimi k\u0131s\u0131tlamak i\u00e7in:<\/p>\n<pre><code class=\"language-bash\">sudo ufw default deny incoming\n    sudo ufw default allow outgoing\n    sudo ufw allow ssh # SSH eri\u015fimi i\u00e7in\n    sudo ufw allow from YOUR_CLIENT_IP_OR_SUBNET to any port 5000\n    sudo ufw enable<\/code><\/pre>\n<p>*   <strong>D\u00fczenli G\u00fcncellemeler:<\/strong> Ubuntu i\u015fletim sisteminizi ve Docker Engine&#8217;i d\u00fczenli olarak g\u00fcncelleyin. Bu, bilinen g\u00fcvenlik a\u00e7\u0131klar\u0131na kar\u015f\u0131 korunman\u0131za yard\u0131mc\u0131 olur.<br \/>\n*   <strong>Log \u0130zleme:<\/strong> Registry kapsay\u0131c\u0131s\u0131n\u0131n loglar\u0131n\u0131 d\u00fczenli olarak izleyin (<code>docker logs registry<\/code>). \u015e\u00fcpheli aktivite veya hata mesajlar\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol edin.<br \/>\n*   <strong>Ters Proxy (Reverse Proxy):<\/strong> Nginx veya Caddy gibi bir ters proxy kullanmak, ek g\u00fcvenlik katmanlar\u0131 (\u00f6rne\u011fin, WAF), y\u00fck dengeleme, daha kolay Let&#8217;s Encrypt entegrasyonu ve geli\u015fmi\u015f trafik y\u00f6netimi sa\u011flar.<br \/>\n*   <strong>Disk Alan\u0131 \u0130zleme:<\/strong> Registry&#8217;nizin depolama alan\u0131n\u0131 d\u00fczenli olarak kontrol edin. Disk doldu\u011funda imaj g\u00f6nderme i\u015flemleri ba\u015far\u0131s\u0131z olacakt\u0131r.<\/p>\n<h3>Sorun Giderme<\/h3>\n<p>Kurulum s\u0131ras\u0131nda veya sonras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve \u00e7\u00f6z\u00fcmleri:<\/p>\n<p>*   <strong><code>x509: certificate signed by unknown authority<\/code>:<\/strong> Bu hata, Docker istemcinizin registry sertifikas\u0131na g\u00fcvenmedi\u011fi anlam\u0131na gelir. \u0130stemci makinede sertifikay\u0131 do\u011fru bir \u015fekilde g\u00fcvenilir olarak ekledi\u011finizden ve Docker servisini yeniden ba\u015flatt\u0131\u011f\u0131n\u0131zdan emin olun. Sertifikan\u0131n Common Name&#8217;inin (CN) istemcinin ba\u011flant\u0131 kurdu\u011fu adresle e\u015fle\u015fti\u011fini kontrol edin.<br \/>\n*   <strong><code>http: server gave HTTP response to HTTPS client<\/code>:<\/strong> \u0130stemci HTTPS \u00fczerinden ba\u011flanmaya \u00e7al\u0131\u015f\u0131rken, registry HTTP \u00fczerinden hizmet veriyor. Registry&#8217;nin HTTPS ile do\u011fru bir \u015fekilde yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131ndan emin olun.<br \/>\n*   <strong><code>authentication required<\/code>:<\/strong> Yanl\u0131\u015f kullan\u0131c\u0131 ad\u0131 veya parola girildi veya <code>htpasswd<\/code> yap\u0131land\u0131rmas\u0131 yanl\u0131\u015f. <code>docker login<\/code> komutunu do\u011fru kimlik bilgileriyle kulland\u0131\u011f\u0131n\u0131zdan ve registry kapsay\u0131c\u0131s\u0131n\u0131n <code>htpasswd<\/code> dosyas\u0131n\u0131 do\u011fru yoldan okudu\u011fundan emin olun.<br \/>\n*   <strong>Firewall Engeli:<\/strong> Registry&#8217;nin portuna (varsay\u0131lan 5000) eri\u015fimin g\u00fcvenlik duvar\u0131 taraf\u0131ndan engellenip engellenmedi\u011fini kontrol edin. <code>ufw status<\/code> veya <code>iptables -L<\/code> komutlar\u0131yla kontrol edebilirsiniz.<br \/>\n*   <strong>Disk Alan\u0131 Dolu:<\/strong> Registry&#8217;nin depolama alan\u0131 dolmu\u015f olabilir. <code>df -h<\/code> ile disk kullan\u0131m\u0131n\u0131 kontrol edin ve gereksiz imajlar\u0131 silerek \u00e7\u00f6p toplama i\u015flemi yap\u0131n.<br \/>\n*   <strong>Registry Kapsay\u0131c\u0131s\u0131 \u00c7al\u0131\u015fm\u0131yor:<\/strong> <code>docker ps<\/code> komutuyla registry kapsay\u0131c\u0131s\u0131n\u0131n durumunu kontrol edin. E\u011fer \u00e7al\u0131\u015fm\u0131yorsa, <code>docker logs registry<\/code> ile loglar\u0131 inceleyerek hatan\u0131n nedenini bulmaya \u00e7al\u0131\u015f\u0131n.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Ubuntu 22.04 \u00fczerinde \u00f6zel bir Docker Registry kurmak, \u015firket i\u00e7i geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7leriniz i\u00e7in \u00f6nemli bir ad\u0131md\u0131r. Bu rehberde, Docker&#8217;\u0131 kurmaktan ba\u015flayarak, HTTPS ile g\u00fcvenli\u011fi sa\u011flamaya, temel kimlik do\u011frulama eklemeye ve registry&#8217;yi y\u00f6netmeye kadar t\u00fcm ad\u0131mlar\u0131 detayl\u0131 bir \u015fekilde ele ald\u0131k. G\u00fcvenli bir \u00f6zel registry, imajlar\u0131n\u0131z \u00fczerinde tam kontrol sa\u011flaman\u0131za, a\u011f trafi\u011fini optimize etmenize ve hassas verilerinizi koruman\u0131za olanak tan\u0131r.<\/p>\n<p>Kurulumdan sonra, registry&#8217;nizin bak\u0131m\u0131n\u0131 d\u00fczenli olarak yapmay\u0131, g\u00fcvenlik g\u00fcncellemelerini takip etmeyi ve a\u011f g\u00fcvenlik duvar\u0131 kurallar\u0131n\u0131z\u0131 g\u00f6zden ge\u00e7irmeyi unutmay\u0131n. \u0130lerleyen zamanlarda, CI\/CD entegrasyonlar\u0131, daha geli\u015fmi\u015f kimlik do\u011frulama y\u00f6ntemleri (\u00f6rne\u011fin, OAuth2) veya Harbor gibi daha kapsaml\u0131 bir registry \u00e7\u00f6z\u00fcm\u00fc gibi ek \u00f6zellikler ara\u015ft\u0131rman\u0131z gerekebilir. Kendi \u00f6zel Docker Registry&#8217;nizle, Docker tabanl\u0131 i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 daha g\u00fcvenli ve verimli hale getirebilirsiniz.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 Rehber\nDocker, uygulamalar\u0131 kapsay\u0131c\u0131lar (containers) i\u00e7inde paketleyerek da","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":[1468],"tags":[],"class_list":{"0":"post-38090","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","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>Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 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\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 Rehber\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 Rehber Docker, uygulamalar\u0131 kapsay\u0131c\u0131lar (containers) i\u00e7inde paketleyerek da\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-23T03:40:54+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=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 Rehber\",\"datePublished\":\"2026-01-23T03:40:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/\"},\"wordCount\":2849,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/\",\"name\":\"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-23T03:40:54+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 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":"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 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\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 Rehber","og_description":"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 Rehber Docker, uygulamalar\u0131 kapsay\u0131c\u0131lar (containers) i\u00e7inde paketleyerek da","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-23T03:40:54+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 Rehber","datePublished":"2026-01-23T03:40:54+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/"},"wordCount":2849,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/","name":"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 Rehber - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-23T03:40:54+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-22-04-uzerinde-ozel-bir-docker-registry-kurulumu-kapsamli-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 22.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu: Kapsaml\u0131 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\/38090","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=38090"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38090\/revisions"}],"predecessor-version":[{"id":38091,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/38090\/revisions\/38091"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=38090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=38090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=38090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}