{"id":43893,"date":"2026-08-07T08:00:53","date_gmt":"2026-08-07T05:00:53","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=43893"},"modified":"2026-08-07T08:01:23","modified_gmt":"2026-08-07T05:01:23","slug":"ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/","title":{"rendered":"Ubuntu 18.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu"},"content":{"rendered":"<h2>Ubuntu 18.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu<\/h2>\n<p>Docker, uygulamalar\u0131 izole edilmi\u015f ve ta\u015f\u0131nabilir kapsay\u0131c\u0131larda paketlemek ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in devrim niteli\u011finde bir platformdur. Docker ekosisteminin temel bile\u015fenlerinden biri olan Docker Registry, Docker imajlar\u0131n\u0131 depolayan ve da\u011f\u0131tan merkezi bir hizmettir. Docker Hub, Docker imajlar\u0131 i\u00e7in varsay\u0131lan ve en pop\u00fcler genel kay\u0131t defteridir, ancak bir\u00e7ok kurulu\u015f kendi \u00f6zel imajlar\u0131n\u0131 g\u00fcvenli, kontroll\u00fc ve dahili bir ortamda y\u00f6netmek ister. Bu ihtiya\u00e7, \u00f6zel Docker Registry kurulumlar\u0131n\u0131 zorunlu k\u0131lar.<\/p>\n<p>Bu makalede, Ubuntu 18.04 i\u015fletim sistemi \u00fczerinde g\u00fcvenli (HTTPS destekli) ve kimlik do\u011frulamal\u0131 \u00f6zel bir Docker Registry&#8217;nin nas\u0131l kurulaca\u011f\u0131n\u0131 ad\u0131m ad\u0131m ele alaca\u011f\u0131z. Kendi \u00f6zel imajlar\u0131n\u0131z\u0131 y\u00f6netmenin faydalar\u0131 aras\u0131nda geli\u015ftirme s\u00fcrecinde daha fazla kontrol, a\u011f trafi\u011fi optimizasyonu, g\u00fcvenlik politikalar\u0131na uyum ve hassas imajlar\u0131n genel a\u011fa maruz kalmamas\u0131n\u0131n sa\u011flanmas\u0131 yer al\u0131r. Bu kurulum, k\u00fc\u00e7\u00fck ekiplerden b\u00fcy\u00fck kurumsal altyap\u0131lara kadar \u00e7e\u015fitli senaryolarda kullan\u0131labilir.<\/p>\n<h3>\u00d6n Ko\u015fullar<\/h3>\n<p>\u00d6zel Docker Registry kurulumuna ba\u015flamadan \u00f6nce a\u015fa\u011f\u0131daki \u00f6n ko\u015fullar\u0131n yerine getirildi\u011finden emin olun:<\/p>\n<p>*   <strong>Ubuntu 18.04 Sunucusu:<\/strong> En az 2 GB RAM ve 2 CPU \u00e7ekirde\u011fine sahip bir Ubuntu 18.04 sunucusu. Makine, internet eri\u015fimine sahip olmal\u0131 ve kararl\u0131 bir a\u011f ba\u011flant\u0131s\u0131 bulunmal\u0131d\u0131r.<br \/>\n*   <strong>Sudo Yetkileri:<\/strong> Kurulum ad\u0131mlar\u0131 i\u00e7in <code>sudo<\/code> yetkisine sahip bir kullan\u0131c\u0131 hesab\u0131n\u0131z olmal\u0131d\u0131r.<br \/>\n*   <strong>Docker Kurulumu:<\/strong> Sunucunuzda Docker Engine&#8217;in kurulu ve \u00e7al\u0131\u015f\u0131r durumda olmas\u0131 gerekmektedir. E\u011fer kurulu de\u011filse, sonraki b\u00f6l\u00fcmde kurulum ad\u0131mlar\u0131n\u0131 bulabilirsiniz.<br \/>\n*   <strong>A\u00e7\u0131k Portlar:<\/strong> Docker Registry i\u00e7in 5000 (HTTP) ve\/veya 443 (HTTPS) portlar\u0131n\u0131n d\u0131\u015far\u0131dan eri\u015filebilir olmas\u0131 gerekmektedir. G\u00fcvenlik duvar\u0131n\u0131zda bu portlar\u0131 a\u00e7man\u0131z gerekebilir (\u00f6rne\u011fin UFW).<br \/>\n*   <strong>Alan Ad\u0131 veya IP Adresi:<\/strong> G\u00fcvenli (HTTPS) bir kurulum i\u00e7in bir alan ad\u0131na (\u00f6rne\u011fin <code>registry.example.com<\/code>) veya genel eri\u015filebilir bir IP adresine ihtiyac\u0131n\u0131z olacakt\u0131r. Let&#8217;s Encrypt gibi hizmetlerle sertifika alacaksan\u0131z bir alan ad\u0131 zorunludur. Geli\u015ftirme ortamlar\u0131 i\u00e7in self-signed sertifikalar kullan\u0131rken IP adresi de yeterli olabilir.<br \/>\n*   <strong><code>htpasswd<\/code> Arac\u0131:<\/strong> Kimlik do\u011frulama i\u00e7in kullan\u0131lacak <code>htpasswd<\/code> arac\u0131n\u0131n kurulu olmas\u0131 gerekmektedir. Bu ara\u00e7 <code>apache2-utils<\/code> paketi ile birlikte gelir.<\/p>\n<h3>Docker ve Gerekli Ara\u00e7lar\u0131n Kurulumu<\/h3>\n<p>\u0130lk olarak, sunucunuzu g\u00fcncelleyelim ve Docker ile kimlik do\u011frulama i\u00e7in gerekli olan <code>apache2-utils<\/code> paketini kural\u0131m.<\/p>\n<p>1.  <strong>Sistem G\u00fcncellemesi:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo apt update\n    sudo apt upgrade -y<\/code><\/pre>\n<p>2.  <strong>Docker Kurulumu:<\/strong><br \/>\n    E\u011fer Docker sunucunuzda kurulu de\u011filse, a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izleyerek kurabilirsiniz:<\/p>\n<pre><code class=\"language-bash\"># Gerekli paketleri kurun\n    sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y\n\n    # Docker'\u0131n GPG anahtar\u0131n\u0131 ekleyin\n    curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo apt-key add -\n\n    # Docker APT deposunu ekleyin\n    sudo add-apt-repository &quot;deb [arch=amd64] https:\/\/download.docker.com\/linux\/ubuntu $(lsb_release -cs) stable&quot;\n\n    # Paket listesini g\u00fcncelleyin\n    sudo apt update\n\n    # Docker Engine'i kurun\n    sudo apt install docker-ce docker-ce-cli containerd.io -y\n\n    # Kullan\u0131c\u0131n\u0131z\u0131 docker grubuna ekleyin (Docker komutlar\u0131n\u0131 sudo olmadan \u00e7al\u0131\u015ft\u0131rmak i\u00e7in)\n    sudo usermod -aG docker $USER\n\n    # De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in oturumu kapat\u0131p a\u00e7\u0131n veya a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n\n    # newgrp docker<\/code><\/pre>\n<p>    Kurulumu do\u011frulamak i\u00e7in <code>hello-world<\/code> imaj\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">docker run hello-world<\/code><\/pre>\n<p>    \u00c7\u0131kt\u0131da &#8220;Hello from Docker!&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<p>3.  <strong><code>apache2-utils<\/code> Kurulumu:<\/strong><br \/>\n    Kimlik do\u011frulama i\u00e7in <code>htpasswd<\/code> arac\u0131na ihtiyac\u0131m\u0131z olacak.<\/p>\n<pre><code class=\"language-bash\">sudo apt install apache2-utils -y<\/code><\/pre>\n<h3>Temel Docker Registry Kurulumu (HTTP)<\/h3>\n<p>\u0130lk olarak, herhangi bir g\u00fcvenlik \u00f6nlemi olmadan temel bir Docker Registry&#8217;yi HTTP \u00fczerinden \u00e7al\u0131\u015ft\u0131ral\u0131m. Bu, kurulumun temelini anlamak ve daha sonra g\u00fcvenli hale getirmek i\u00e7in iyi bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<p>1.  <strong>Registry Kapsay\u0131c\u0131s\u0131n\u0131 \u00c7al\u0131\u015ft\u0131rma:<\/strong><\/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.<br \/>\n    *   <code>-d<\/code>: Kapsay\u0131c\u0131y\u0131 arka planda (detached mode) \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n    *   <code>-p 5000:5000<\/code>: Host&#8217;un 5000 numaral\u0131 portunu kapsay\u0131c\u0131n\u0131n 5000 numaral\u0131 portuna ba\u011flar.<br \/>\n    *   <code>--restart=always<\/code>: Kapsay\u0131c\u0131n\u0131n her zaman yeniden ba\u015flat\u0131lmas\u0131n\u0131 sa\u011flar (sistem yeniden ba\u015flat\u0131ld\u0131\u011f\u0131nda bile).<br \/>\n    *   <code>--name registry<\/code>: Kapsay\u0131c\u0131ya <code>registry<\/code> ad\u0131n\u0131 verir.<br \/>\n    *   <code>registry:2<\/code>: Kullan\u0131lacak Docker imaj\u0131 ve etiketi.<\/p>\n<p>2.  <strong>Kurulumu Do\u011frulama:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker ps<\/code><\/pre>\n<p>    \u00c7\u0131kt\u0131da <code>registry<\/code> ad\u0131nda bir kapsay\u0131c\u0131n\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<p>3.  <strong>Test Etme (\u0130maj G\u00f6nderme\/\u00c7ekme):<\/strong><br \/>\n    \u015eimdi bir Docker imaj\u0131n\u0131 bu kay\u0131t defterine g\u00f6nderip geri \u00e7ekerek test edelim.<\/p>\n<pre><code class=\"language-bash\"># Bir imaj\u0131 etiketleyin (\u00f6rne\u011fin hello-world)\n    docker tag hello-world localhost:5000\/my-hello-world\n\n    # \u0130maj\u0131 kay\u0131t defterine g\u00f6nderin\n    docker push localhost:5000\/my-hello-world\n\n    # \u0130maj\u0131 yerel depodan silin\n    docker rmi localhost:5000\/my-hello-world\n\n    # \u0130maj\u0131 kay\u0131t defterinden \u00e7ekin\n    docker pull localhost:5000\/my-hello-world<\/code><\/pre>\n<p>    Bu ad\u0131mlar ba\u015far\u0131l\u0131 olursa, temel kay\u0131t defteriniz \u00e7al\u0131\u015f\u0131yor demektir. Ancak, bu kurulum g\u00fcvenliksizdir. Docker varsay\u0131lan olarak HTTP \u00fczerinden g\u00fcvenli olmayan kay\u0131t defterlerine ba\u011flanmay\u0131 reddeder. <code>localhost<\/code> i\u00e7in \u00f6zel bir istisna vard\u0131r, ancak uzak bir sunucudan eri\u015fim sa\u011flamak i\u00e7in Docker daemon yap\u0131land\u0131rmas\u0131na <code>insecure-registries<\/code> eklemeniz gerekir ki bu da \u00f6nerilmez. \u00dcretim ortamlar\u0131 i\u00e7in mutlaka HTTPS kullanmal\u0131s\u0131n\u0131z.<\/p>\n<h3>G\u00fcvenli Bir Docker Registry Kurulumu (HTTPS)<\/h3>\n<p>\u00dcretim ortamlar\u0131nda Docker Registry&#8217;nizi HTTPS \u00fczerinden \u00e7al\u0131\u015ft\u0131rmak zorunludur. Bu, imajlar\u0131n\u0131z\u0131n aktar\u0131m\u0131 s\u0131ras\u0131nda \u015fifrelenmesini sa\u011flar ve kimlik bilgilerinizin g\u00fcvenli\u011fini art\u0131r\u0131r. HTTPS i\u00e7in bir SSL sertifikas\u0131na ihtiyac\u0131m\u0131z olacak.<\/p>\n<h4>1. SSL Sertifikas\u0131 Olu\u015fturma<\/h4>\n<p>\u0130ki farkl\u0131 y\u00f6ntemle SSL sertifikas\u0131 olu\u015fturabiliriz: Self-Signed Sertifika (geli\u015ftirme ortamlar\u0131 i\u00e7in) veya Let&#8217;s Encrypt ile Sertifika (\u00fcretim ortamlar\u0131 i\u00e7in).<\/p>\n<p>*   <strong>Self-Signed Sertifika (Geli\u015ftirme Ortam\u0131 \u0130\u00e7in):<\/strong><br \/>\n    Bu y\u00f6ntem, h\u0131zl\u0131 testler ve geli\u015ftirme ortamlar\u0131 i\u00e7in uygundur. \u00dcretim ortamlar\u0131nda taray\u0131c\u0131lar veya Docker istemcileri taraf\u0131ndan g\u00fcvenilmeyen bir sertifika oldu\u011fu i\u00e7in ek yap\u0131land\u0131rma gerektirir.<\/p>\n<pre><code class=\"language-bash\"># Sertifikalar\u0131 depolamak i\u00e7in bir dizin olu\u015fturun\n    sudo mkdir -p \/opt\/registry\/certs\n\n    # \u00d6zel anahtar ve sertifika olu\u015fturun\n    sudo openssl req -newkey rsa:4096 -nodes -sha256 -keyout \/opt\/registry\/certs\/domain.key -x509 -days 365 -out \/opt\/registry\/certs\/domain.crt<\/code><\/pre>\n<p>    Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda baz\u0131 bilgiler girmeniz istenecektir. En \u00f6nemlisi <code>Common Name (e.g. server FQDN or YOUR name)<\/code> k\u0131sm\u0131na Docker Registry&#8217;nize eri\u015fmek i\u00e7in kullanaca\u011f\u0131n\u0131z alan ad\u0131n\u0131 (\u00f6rne\u011fin <code>registry.example.com<\/code>) veya IP adresini girmelisiniz. Bu de\u011fer, istemcinin sertifikay\u0131 do\u011frularken kulland\u0131\u011f\u0131 adla e\u015fle\u015fmelidir.<\/p>\n<p>*   <strong>Let&#8217;s Encrypt ile Sertifika (\u00dcretim Ortam\u0131 \u0130\u00e7in):<\/strong><br \/>\n    Let&#8217;s Encrypt, \u00fccretsiz, g\u00fcvenilir ve otomatikle\u015ftirilmi\u015f SSL sertifikalar\u0131 sa\u011flar. Bu y\u00f6ntemi kullanmak i\u00e7in ge\u00e7erli bir alan ad\u0131n\u0131z\u0131n olmas\u0131 ve bu alan ad\u0131n\u0131n sunucunuzun IP adresine y\u00f6nlendirilmi\u015f olmas\u0131 gerekir.<\/p>\n<pre><code class=\"language-bash\"># Certbot'u kurun\n    sudo apt install certbot -y\n\n    # Sertifikay\u0131 al\u0131n (domain.com yerine kendi alan ad\u0131n\u0131z\u0131 yaz\u0131n)\n    # --standalone se\u00e7ene\u011fi, Certbot'un sertifikay\u0131 almak i\u00e7in ge\u00e7ici bir web sunucusu \u00e7al\u0131\u015ft\u0131rmas\u0131n\u0131 sa\u011flar.\n    # E\u011fer sunucunuzda halihaz\u0131rda bir web sunucusu (Nginx\/Apache) \u00e7al\u0131\u015f\u0131yorsa, --webroot se\u00e7ene\u011fini kullanman\u0131z gerekebilir.\n    sudo certbot certonly --standalone -d your_domain.com<\/code><\/pre>\n<p>    Certbot sizden e-posta adresi ve hizmet ko\u015fullar\u0131n\u0131 kabul etmenizi isteyecektir. Ba\u015far\u0131l\u0131 olursa, sertifikalar <code>\/etc\/letsencrypt\/live\/your_domain.com\/<\/code> dizininde olu\u015fturulacakt\u0131r.<br \/>\n    \u015eimdi bu sertifikalar\u0131 Docker Registry&#8217;nin kullanaca\u011f\u0131 dizine kopyalayal\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/opt\/registry\/certs\n    sudo cp \/etc\/letsencrypt\/live\/your_domain.com\/fullchain.pem \/opt\/registry\/certs\/domain.crt\n    sudo cp \/etc\/letsencrypt\/live\/your_domain.com\/privkey.pem \/opt\/registry\/certs\/domain.key<\/code><\/pre>\n<p>    Let&#8217;s Encrypt sertifikalar\u0131 90 g\u00fcn ge\u00e7erlidir ve Certbot otomatik yenileme mekanizmalar\u0131n\u0131 kurar.<\/p>\n<h4>2. Registry&#8217;yi HTTPS ile \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>Sertifikalar\u0131m\u0131z haz\u0131r oldu\u011funa g\u00f6re, mevcut HTTP kay\u0131t defterini durdurup silip, HTTPS destekli yeni bir kapsay\u0131c\u0131 ba\u015flatal\u0131m.<\/p>\n<p>1.  <strong>Mevcut Registry&#8217;yi Durdurma ve Silme:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker stop registry\n    docker rm registry<\/code><\/pre>\n<p>2.  <strong>HTTPS Destekli Registry&#8217;yi \u00c7al\u0131\u015ft\u0131rma:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker run -d -p 443:5000 --restart=always --name registry \\\n    -v \/opt\/registry\/certs:\/certs \\\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>    *   <code>-p 443:5000<\/code>: Host&#8217;un 443 (HTTPS varsay\u0131lan) portunu kapsay\u0131c\u0131n\u0131n 5000 numaral\u0131 portuna ba\u011flar.<br \/>\n    *   <code>-v \/opt\/registry\/certs:\/certs<\/code>: Host \u00fczerindeki sertifika dizinini kapsay\u0131c\u0131 i\u00e7indeki <code>\/certs<\/code> dizinine ba\u011flar.<br \/>\n    *   <code>-e REGISTRY_HTTP_TLS_CERTIFICATE<\/code> ve <code>-e REGISTRY_HTTP_TLS_KEY<\/code>: Registry&#8217;ye kullan\u0131lacak sertifika ve anahtar dosyalar\u0131n\u0131n yolunu bildirir.<\/p>\n<p>3.  <strong>G\u00fcvenlik Duvar\u0131 Ayar\u0131:<\/strong><br \/>\n    E\u011fer UFW kullan\u0131yorsan\u0131z, 443 portunu a\u00e7man\u0131z gerekebilir:<\/p>\n<pre><code class=\"language-bash\">sudo ufw allow 443\/tcp<\/code><\/pre>\n<p>4.  <strong>Self-Signed Sertifika \u0130\u00e7in \u0130stemci Taraf\u0131 G\u00fcven Yap\u0131land\u0131rmas\u0131:<\/strong><br \/>\n    E\u011fer self-signed sertifika kulland\u0131ysan\u0131z, Docker istemcinizin bu sertifikaya g\u00fcvenmesi gerekir. Her Docker istemcisinde (geli\u015ftirme makinelerinizde) a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 yapman\u0131z gerekmektedir:<br \/>\n    *   Sunucudaki <code>domain.crt<\/code> dosyas\u0131n\u0131 istemciye kopyalay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo scp user@your_registry_domain.com:\/opt\/registry\/certs\/domain.crt \/usr\/local\/share\/ca-certificates\/registry-cert.crt<\/code><\/pre>\n<p>    *   Sertifika yetkililerini g\u00fcncelleyin:<\/p>\n<pre><code class=\"language-bash\">sudo update-ca-certificates<\/code><\/pre>\n<p>    *   Docker daemon&#8217;\u0131 yeniden ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart docker<\/code><\/pre>\n<p>    Let&#8217;s Encrypt gibi genel olarak g\u00fcvenilen bir CA&#8217;dan sertifika ald\u0131ysan\u0131z bu ad\u0131mlara gerek yoktur.<\/p>\n<p>5.  <strong>HTTPS Test Etme:<\/strong><br \/>\n    \u015eimdi registry&#8217;ye giri\u015f yapmay\u0131 deneyerek HTTPS ba\u011flant\u0131s\u0131n\u0131 test edebilirsiniz. Hen\u00fcz kimlik do\u011frulama eklemedi\u011fimiz i\u00e7in giri\u015f ba\u015far\u0131s\u0131z olacakt\u0131r, ancak ba\u011flant\u0131n\u0131n kuruldu\u011funu g\u00f6rmelisiniz:<\/p>\n<pre><code class=\"language-bash\">docker login your_registry_domain.com<\/code><\/pre>\n<p>    &#8220;Login Succeeded&#8221; yerine bir hata al\u0131rsan\u0131z, sertifika veya ba\u011flant\u0131 ayarlar\u0131n\u0131z\u0131 kontrol etmelisiniz.<\/p>\n<h3>Kimlik Do\u011frulama Ekleme<\/h3>\n<p>\u00d6zel Docker Registry&#8217;nize eri\u015fimi kontrol etmek i\u00e7in kimlik do\u011frulama eklemek \u00e7ok \u00f6nemlidir. Registry, <code>htpasswd<\/code> dosyas\u0131n\u0131 kullanarak temel kimlik do\u011frulama (Basic Authentication) yapabilir.<\/p>\n<h4>1. htpasswd Dosyas\u0131 Olu\u015fturma<\/h4>\n<p>1.  <strong>Kimlik do\u011frulama dosyas\u0131n\u0131 depolamak i\u00e7in bir dizin olu\u015fturun:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/opt\/registry\/auth<\/code><\/pre>\n<p>2.  <strong>\u0130lk kullan\u0131c\u0131y\u0131 olu\u015fturun:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo htpasswd -Bc \/opt\/registry\/auth\/htpasswd registry_user<\/code><\/pre>\n<p>    <code>registry_user<\/code> yerine istedi\u011finiz kullan\u0131c\u0131 ad\u0131n\u0131 yaz\u0131n. Bu komut, <code>htpasswd<\/code> dosyas\u0131n\u0131 olu\u015fturacak (<code>-c<\/code>) ve ilk kullan\u0131c\u0131 i\u00e7in bir parola belirlemenizi isteyecektir. <code>-B<\/code> bcrypt algoritmas\u0131n\u0131 kullan\u0131r, bu da daha g\u00fcvenlidir.<\/p>\n<p>3.  <strong>Daha fazla kullan\u0131c\u0131 ekleyin (iste\u011fe ba\u011fl\u0131):<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo htpasswd -B \/opt\/registry\/auth\/htpasswd another_user<\/code><\/pre>\n<p>    Yeni kullan\u0131c\u0131lar eklerken <code>-c<\/code> (create) bayra\u011f\u0131n\u0131 kullanmay\u0131n, aksi takdirde mevcut dosyan\u0131n \u00fczerine yaz\u0131l\u0131r.<\/p>\n<h4>2. Kimlik Do\u011frulamal\u0131 Registry&#8217;yi \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>\u015eimdi mevcut registry&#8217;yi durdurup silerek, kimlik do\u011frulama ve HTTPS destekli yeni bir kapsay\u0131c\u0131 ba\u015flatal\u0131m.<\/p>\n<p>1.  <strong>Mevcut Registry&#8217;yi Durdurma ve Silme:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker stop registry\n    docker rm registry<\/code><\/pre>\n<p>2.  <strong>Kimlik Do\u011frulamal\u0131 Registry&#8217;yi \u00c7al\u0131\u015ft\u0131rma:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker run -d -p 443:5000 --restart=always --name registry \\\n    -v \/opt\/registry\/certs:\/certs \\\n    -v \/opt\/registry\/auth:\/auth \\\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=&quot;Registry Realm&quot; \\\n    -e REGISTRY_AUTH_HTPASSWD_PATH=\/auth\/htpasswd \\\n    registry:2<\/code><\/pre>\n<p>    *   <code>-v \/opt\/registry\/auth:\/auth<\/code>: Host \u00fczerindeki kimlik do\u011frulama dizinini kapsay\u0131c\u0131 i\u00e7indeki <code>\/auth<\/code> dizinine ba\u011flar.<br \/>\n    *   <code>-e REGISTRY_AUTH=htpasswd<\/code>: Kimlik do\u011frulama y\u00f6ntemi olarak <code>htpasswd<\/code> kullan\u0131laca\u011f\u0131n\u0131 belirtir.<br \/>\n    *   <code>-e REGISTRY_AUTH_HTPASSWD_REALM<\/code>: Kimlik do\u011frulama i\u00e7in g\u00f6r\u00fcnen alan\u0131 belirler.<br \/>\n    *   <code>-e REGISTRY_AUTH_HTPASSWD_PATH<\/code>: <code>htpasswd<\/code> dosyas\u0131n\u0131n kapsay\u0131c\u0131 i\u00e7indeki yolunu belirtir.<\/p>\n<h4>3. Kimlik Do\u011frulama ile Test Etme<\/h4>\n<p>\u015eimdi <code>docker login<\/code> komutunu kullanarak kimlik do\u011frulamal\u0131 kay\u0131t defterinize giri\u015f yapmay\u0131 deneyelim.<\/p>\n<p>1.  <strong>Giri\u015f Yapma:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker login your_registry_domain.com<\/code><\/pre>\n<p>    Kullan\u0131c\u0131 ad\u0131 olarak <code>registry_user<\/code> (veya olu\u015fturdu\u011funuz ba\u015fka bir kullan\u0131c\u0131 ad\u0131) ve belirledi\u011finiz parolay\u0131 girin. &#8220;Login Succeeded&#8221; mesaj\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<p>2.  <strong>\u0130maj G\u00f6nderme ve \u00c7ekme:<\/strong><\/p>\n<pre><code class=\"language-bash\"># Bir imaj\u0131 etiketleyin\n    docker tag hello-world your_registry_domain.com\/my-secure-image\n\n    # \u0130maj\u0131 g\u00fcvenli kay\u0131t defterine g\u00f6nderin\n    docker push your_registry_domain.com\/my-secure-image\n\n    # \u0130maj\u0131 yerel depodan silin\n    docker rmi your_registry_domain.com\/my-secure-image\n\n    # \u0130maj\u0131 kay\u0131t defterinden \u00e7ekin\n    docker pull your_registry_domain.com\/my-secure-image<\/code><\/pre>\n<p>    Bu ad\u0131mlar ba\u015far\u0131l\u0131 olursa, \u00f6zel ve g\u00fcvenli Docker Registry&#8217;niz ba\u015far\u0131yla kurulmu\u015f demektir.<\/p>\n<p>3.  <strong>\u00c7\u0131k\u0131\u015f Yapma:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker logout your_registry_domain.com<\/code><\/pre>\n<h3>Veri Depolama Alan\u0131n\u0131 Yap\u0131land\u0131rma<\/h3>\n<p>Varsay\u0131lan olarak, Docker Registry kapsay\u0131c\u0131 i\u00e7indeki <code>\/var\/lib\/registry<\/code> dizininde imaj verilerini depolar. Kapsay\u0131c\u0131 silinirse, t\u00fcm imajlar\u0131n\u0131z kaybolur. Bu nedenle, verilerin kal\u0131c\u0131 olmas\u0131 i\u00e7in bir host dizinini bu konuma ba\u011flamak (mount etmek) \u00f6nemlidir.<\/p>\n<p>1.  <strong>Veri Depolama Dizini Olu\u015fturma:<\/strong><\/p>\n<pre><code class=\"language-bash\">sudo mkdir -p \/opt\/registry\/data<\/code><\/pre>\n<p>2.  <strong>Kal\u0131c\u0131 Depolamal\u0131 Registry&#8217;yi \u00c7al\u0131\u015ft\u0131rma:<\/strong><br \/>\n    Mevcut registry&#8217;yi durdurup silin ve t\u00fcm \u00f6nceki yap\u0131land\u0131rmalarla birlikte kal\u0131c\u0131 depolama alan\u0131n\u0131 da ekleyerek yeniden ba\u015flat\u0131n.<\/p>\n<pre><code class=\"language-bash\">docker stop registry\n    docker rm registry\n\n    docker run -d -p 443:5000 --restart=always --name registry \\\n    -v \/opt\/registry\/data:\/var\/lib\/registry \\\n    -v \/opt\/registry\/certs:\/certs \\\n    -v \/opt\/registry\/auth:\/auth \\\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=&quot;Registry Realm&quot; \\\n    -e REGISTRY_AUTH_HTPASSWD_PATH=\/auth\/htpasswd \\\n    registry:2<\/code><\/pre>\n<p>    *   <code>-v \/opt\/registry\/data:\/var\/lib\/registry<\/code>: Host \u00fczerindeki <code>\/opt\/registry\/data<\/code> dizinini kapsay\u0131c\u0131 i\u00e7indeki <code>\/var\/lib\/registry<\/code> dizinine ba\u011flar. Bu sayede imaj verileri host \u00fczerinde kal\u0131c\u0131 olarak depolan\u0131r.<\/p>\n<p>Art\u0131k Docker Registry&#8217;niz g\u00fcvenli, kimlik do\u011frulamal\u0131 ve kal\u0131c\u0131 veri depolama ile \u00e7al\u0131\u015f\u0131r durumdad\u0131r.<\/p>\n<h3>Registry Y\u00f6netimi ve Bak\u0131m\u0131<\/h3>\n<p>\u00d6zel Docker Registry&#8217;nizi kurduktan sonra, onu etkili bir \u015fekilde y\u00f6netmek ve bak\u0131m\u0131n\u0131 yapmak \u00f6nemlidir.<\/p>\n<h4>1. \u0130majlar\u0131 Listeleme<\/h4>\n<p>Registry&#8217;de bulunan imajlar\u0131 listelemek i\u00e7in Docker Registry API&#8217;sini kullanabilirsiniz. Bunun i\u00e7in bir <code>curl<\/code> komutu yeterlidir:<\/p>\n<pre><code class=\"language-bash\">curl -u registry_user:password https:\/\/your_registry_domain.com\/v2\/_catalog<\/code><\/pre>\n<p><code>registry_user:password<\/code> yerine kendi kimlik bilgilerinizi yaz\u0131n. Bu komut, registry&#8217;deki t\u00fcm imajlar\u0131n listesini JSON format\u0131nda d\u00f6nd\u00fcrecektir.<\/p>\n<h4>2. \u0130majlar\u0131 Silme ve \u00c7\u00f6p Toplama (Garbage Collection)<\/h4>\n<p>Bir Docker imaj\u0131n\u0131 registry&#8217;den silmek, do\u011frudan bir <code>docker rmi<\/code> komutuyla olmaz. Docker istemcisindeki <code>docker rmi<\/code> yaln\u0131zca yerel depodaki imaj\u0131 siler. Registry&#8217;deki imajlar\u0131 silmek i\u00e7in Registry API&#8217;sini kullanman\u0131z ve ard\u0131ndan \u00e7\u00f6p toplama (garbage collection) \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir.<\/p>\n<p><strong>\u0130maj\u0131 silmek i\u00e7in (API \u00fczerinden):<\/strong><br \/>\nBu i\u015flem biraz karma\u015f\u0131kt\u0131r ve imaj\u0131n manifest digest&#8217;ini bilmeyi gerektirir. Genellikle, imaj\u0131 silmek yerine sadece etiketini kald\u0131rmak ve daha sonra \u00e7\u00f6p toplama yapmak tercih edilir. Ancak tam bir silme i\u015flemi i\u00e7in:<br \/>\n1.  \u0130maj\u0131n manifest digest&#8217;ini al\u0131n:<\/p>\n<pre><code class=\"language-bash\">curl -I -H &quot;Accept: application\/vnd.docker.distribution.manifest.v2+json&quot; \\\n    -u registry_user:password https:\/\/your_registry_domain.com\/v2\/your-image-name\/manifests\/your-tag-name<\/code><\/pre>\n<p>    <code>Docker-Content-Digest<\/code> ba\u015fl\u0131\u011f\u0131ndaki de\u011feri kopyalay\u0131n.<br \/>\n2.  Manifesti silin:<\/p>\n<pre><code class=\"language-bash\">curl -X DELETE -u registry_user:password https:\/\/your_registry_domain.com\/v2\/your-image-name\/manifests\/&lt;DIGEST&gt;<\/code><\/pre>\n<p>    <code><DIGEST><\/code> yerine kopyalad\u0131\u011f\u0131n\u0131z digest de\u011ferini yap\u0131\u015ft\u0131r\u0131n.<\/p>\n<p><strong>\u00c7\u00f6p Toplama (Garbage Collection) \u00c7al\u0131\u015ft\u0131rma:<\/strong><br \/>\nYukar\u0131daki silme i\u015flemi veya bir imaj\u0131n etiketini kald\u0131rmak, imaj katmanlar\u0131n\u0131 diskten hemen silmez. Bu katmanlar, ba\u015fka imajlar taraf\u0131ndan kullan\u0131labilece\u011fi d\u00fc\u015f\u00fcn\u00fclerek &#8220;dangling&#8221; (sark\u0131k) olarak i\u015faretlenir. Disk alan\u0131n\u0131 geri kazanmak i\u00e7in d\u00fczenli olarak \u00e7\u00f6p toplama \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir.<\/p>\n<p><strong>\u00d6NEML\u0130:<\/strong> \u00c7\u00f6p toplama i\u015flemi s\u0131ras\u0131nda registry&#8217;ye yazma i\u015flemleri yap\u0131lmamal\u0131d\u0131r. En g\u00fcvenli yol, i\u015flemi yaparken registry&#8217;yi durdurmakt\u0131r.<\/p>\n<p>1.  <strong>Registry&#8217;yi durdurun:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker stop registry<\/code><\/pre>\n<p>2.  <strong>\u00c7\u00f6p toplama i\u015flemini \u00e7al\u0131\u015ft\u0131r\u0131n:<\/strong><br \/>\n    Bu komut, kapsay\u0131c\u0131n\u0131n mevcut diskini kullanarak, ancak yeni bir ge\u00e7ici kapsay\u0131c\u0131 i\u00e7inde \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Mevcut registry&#8217;nin ba\u011fland\u0131\u011f\u0131 t\u00fcm birimleri (volume) kullan\u0131r.<\/p>\n<pre><code class=\"language-bash\">docker run --rm --volumes-from registry \\\n    -v \/opt\/registry\/certs:\/certs \\\n    -v \/opt\/registry\/auth:\/auth \\\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=&quot;Registry Realm&quot; \\\n    -e REGISTRY_AUTH_HTPASSWD_PATH=\/auth\/htpasswd \\\n    registry:2 garbage-collect \/etc\/docker\/registry\/config.yml<\/code><\/pre>\n<p>    Bu komut, registry&#8217;nin yap\u0131land\u0131rma dosyas\u0131n\u0131 (<code>\/etc\/docker\/registry\/config.yml<\/code>) kullanarak diskteki gereksiz katmanlar\u0131 temizler.<\/p>\n<p>3.  <strong>Registry&#8217;yi yeniden ba\u015flat\u0131n:<\/strong><\/p>\n<pre><code class=\"language-bash\">docker start registry<\/code><\/pre>\n<p>    Bu i\u015flemi d\u00fczenli aral\u0131klarla (\u00f6rne\u011fin ayl\u0131k veya haftal\u0131k olarak) yaparak disk alan\u0131n\u0131z\u0131n verimli kullan\u0131lmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/p>\n<h4>3. Yedekleme Stratejisi<\/h4>\n<p>Registry&#8217;nizdeki veriler \u00e7ok de\u011ferlidir. D\u00fczenli yedeklemeler yapmak felaket kurtarma plan\u0131n\u0131z\u0131n bir par\u00e7as\u0131 olmal\u0131d\u0131r. Yedeklemeniz gereken ana dizinler \u015funlard\u0131r:<br \/>\n*   <code>\/opt\/registry\/data<\/code>: T\u00fcm Docker imaj verilerini i\u00e7erir.<br \/>\n*   <code>\/opt\/registry\/certs<\/code>: SSL sertifikalar\u0131n\u0131 i\u00e7erir.<br \/>\n*   <code>\/opt\/registry\/auth<\/code>: <code>htpasswd<\/code> dosyas\u0131n\u0131 i\u00e7erir.<\/p>\n<p>Bu dizinleri periyodik olarak g\u00fcvenli bir yedekleme konumuna kopyalayabilirsiniz. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-bash\">sudo tar -czvf \/path\/to\/backup\/registry_backup_$(date +%Y%m%d).tar.gz \/opt\/registry<\/code><\/pre>\n<h4>4. \u0130zleme<\/h4>\n<p>Registry&#8217;nizin sa\u011fl\u0131\u011f\u0131n\u0131 ve performans\u0131n\u0131 izlemek \u00f6nemlidir:<br \/>\n*   <strong>Disk Kullan\u0131m\u0131:<\/strong> <code>\/opt\/registry\/data<\/code> dizininin disk kullan\u0131m\u0131n\u0131 takip edin. Disk doldu\u011funda yeni imaj g\u00f6nderilemez.<br \/>\n*   <strong>Kapsay\u0131c\u0131 Durumu:<\/strong> <code>docker ps<\/code> komutuyla registry kapsay\u0131c\u0131s\u0131n\u0131n \u00e7al\u0131\u015f\u0131r durumda oldu\u011fundan emin olun.<br \/>\n*   <strong>Kapsay\u0131c\u0131 Loglar\u0131:<\/strong> <code>docker logs registry<\/code> komutuyla registry kapsay\u0131c\u0131s\u0131n\u0131n loglar\u0131n\u0131 kontrol edin. Hata mesajlar\u0131 veya anormal davran\u0131\u015flar olup olmad\u0131\u011f\u0131n\u0131 g\u00f6zlemleyin.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, Ubuntu 18.04 \u00fczerinde g\u00fcvenli, kimlik do\u011frulamal\u0131 ve kal\u0131c\u0131 depolama ile \u00f6zel bir Docker Registry&#8217;nin nas\u0131l kurulaca\u011f\u0131n\u0131 ayr\u0131nt\u0131l\u0131 bir \u015fekilde ele ald\u0131k. Kendi \u00f6zel Docker Registry&#8217;nizi kurarak, Docker imajlar\u0131n\u0131z \u00fczerinde tam kontrol sahibi olursunuz. Bu, \u00f6zellikle hassas veya tescilli imajlar\u0131n\u0131z varsa, a\u011f trafi\u011fini optimize etmek, g\u00fcvenlik politikalar\u0131na uymak ve geli\u015ftirme s\u00fcre\u00e7lerinizi daha verimli hale getirmek i\u00e7in kritik \u00f6neme sahiptir.<\/p>\n<p>Kurulum s\u00fcrecinde HTTP \u00fczerinden basit bir registry&#8217;den ba\u015flayarak, HTTPS ile g\u00fcvenli\u011fi art\u0131rd\u0131k ve <code>htpasswd<\/code> ile kimlik do\u011frulama ekledik. Son olarak, veri kal\u0131c\u0131l\u0131\u011f\u0131 i\u00e7in host birimlerini ba\u011flama ve registry&#8217;nin bak\u0131m\u0131 i\u00e7in \u00f6nemli y\u00f6netim ad\u0131mlar\u0131n\u0131 inceledik. Bu ad\u0131mlar\u0131 takip ederek, ekibinizin ihtiya\u00e7lar\u0131na uygun, sa\u011flam ve g\u00fcvenilir bir \u00f6zel Docker Registry altyap\u0131s\u0131 kurabilirsiniz. Gelecekte, S3 gibi bulut depolama entegrasyonlar\u0131 veya geli\u015fmi\u015f kullan\u0131c\u0131 aray\u00fczleri gibi ek \u00f6zellikler ekleyerek registry&#8217;nizin yeteneklerini daha da geni\u015fletebilirsiniz.<\/p>\n<div class=\"github-example-link\"><strong>\u00d6rnek kod:<\/strong> <a href=\"https:\/\/github.com\/fatihsoysalcom\/docker-private-registry-push-pull\" target=\"_blank\" rel=\"noopener noreferrer\">github.com\/fatihsoysalcom\/docker-private-registry-push-pull<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"Ubuntu 18. 04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu Docker, uygulamalar\u0131 izole edilmi\u015f ve ta\u015f\u0131nabilir kapsay\u0131c\u0131larda paketlemek ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in devrim niteli\u011finde bir platformdur.","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-43893","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 18.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu - 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-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ubuntu 18.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu\" \/>\n<meta property=\"og:description\" content=\"Ubuntu 18. 04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu Docker, uygulamalar\u0131 izole edilmi\u015f ve ta\u015f\u0131nabilir kapsay\u0131c\u0131larda paketlemek ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in devrim niteli\u011finde bir platformdur.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-07T05:00:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-07T05:01:23+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=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Ubuntu 18.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu\",\"datePublished\":\"2026-08-07T05:00:53+00:00\",\"dateModified\":\"2026-08-07T05:01:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/\"},\"wordCount\":2223,\"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-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/\",\"name\":\"Ubuntu 18.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-08-07T05:00:53+00:00\",\"dateModified\":\"2026-08-07T05:01:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ubuntu 18.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu\"}]},{\"@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 18.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu - 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-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/","og_locale":"tr_TR","og_type":"article","og_title":"Ubuntu 18.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu","og_description":"Ubuntu 18. 04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu Docker, uygulamalar\u0131 izole edilmi\u015f ve ta\u015f\u0131nabilir kapsay\u0131c\u0131larda paketlemek ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in devrim niteli\u011finde bir platformdur.","og_url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-08-07T05:00:53+00:00","article_modified_time":"2026-08-07T05:01:23+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Ubuntu 18.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu","datePublished":"2026-08-07T05:00:53+00:00","dateModified":"2026-08-07T05:01:23+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/"},"wordCount":2223,"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-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/","url":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/","name":"Ubuntu 18.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-08-07T05:00:53+00:00","dateModified":"2026-08-07T05:01:23+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/ubuntu-18-04-uzerinde-ozel-bir-docker-registry-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ubuntu 18.04 \u00dczerinde \u00d6zel Bir Docker Registry Kurulumu"}]},{"@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\/43893","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=43893"}],"version-history":[{"count":2,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43893\/revisions"}],"predecessor-version":[{"id":43895,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/43893\/revisions\/43895"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=43893"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=43893"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=43893"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}