Docker Registry ve Hub üzerine repo eklemek

Ali Orhun Akkirman - Aug 29 '22 - - Dev Community

Docker konteynerlerının kullanılması için en önemli ihtiyaç Docker İmajları. Bu imajlar da çeşitli şekilde oluşturulabildiği gibi, başka ekiplerin de kullanabilmesi için depolarda kullanılmakta. İşte "Docker Hub" ve "Docker Registry" tam olarak bu ihtiyaçları karşılamak için oluşturulmuş genel ve özel depolardır.

Docker Hub dediğimiz yapı https://hub.docker.com adresinde herkesin okuma erişimine sahip olacak şekilde kullanılmaktadır. Tabi ki ücretli kullanımda gizli depolar da eklenebilmektedir. Ayrıca bulut ortamında değil de kendi ortamınızda Harbor veya düz Docker Registry gibi bir depo yapısına sahip olabilirsiniz.

Yazımızda temel Docker kurulumlarından bahsetmeyeceğiz ve ortamınızda Docker kurulu olduğunu varsayacağız.

Docker Hub üzerinden imaj çekmek

Aslında bu adım en temelde yaptığımız şey. Hatta docker öğrenirken "helloworld" imajını çekerek bu adımı yapmış olmamız çok muhtemel. Docker Hub üzerinden 2 şekilde imajı çekebiliriz.

Konteynır oluşturarak imajı çekmek istersek aşağıdaki gibi bir komut verilmesi gerekecektir:

docker run -p 80:80 -p 443:443 -it aciklab/liman bash
Enter fullscreen mode Exit fullscreen mode

Bu şekilde çektiğimizde aynı zamanda bir konteynır oluştuğunu da göreceksiniz.

Eğer konteyrnır oluşturmadan kendi makinemizde imajı çekmek istersek de sadece çekmek "pull" yeterli olacaktır.

docker pull aciklab/liman
Enter fullscreen mode Exit fullscreen mode

Docker Hub'a imaj yollamak

Bunun için öncelikle bir yetkili hesaba sahip olmanız gerekiyor. Bunu web arayüzü üzerinden https://hub.docker.com kayıt olarak yapabilirsiniz. Buradaki kullanıcı adınız oldukça önemli.

Ve tabi ki kullanıcının yanında bir de "repo" üretmeniz gerekiyor. Buradaki repo ismi kullanım sırasında oldukça önemli.

Daha sonrasında bir şekilde kendi ortamınızda oluşturduğunuz bir imajınızın olduğunu varsayıyorum. Öncelikle hesabınıza giriş yapmanız gerekiyor:

docker login --username=kullanıcıadınız
Enter fullscreen mode Exit fullscreen mode

Giriş yaptıktan sonra göndermek isteyeceğiniz imajın "image ID"sini öğrenmek için aşağıdaki komutu kullanmanız gerekiyor.

docker images
Enter fullscreen mode Exit fullscreen mode

Bu adımda imaj id'sini öğrendikten sonra imajınızı göndermeden önce aşağıdaki şekilde taglemeniz gerekmektedir.

docker tag 2e940a28bc69 kullanıcıadınız/depoadresiniz:0.1-deneme
Enter fullscreen mode Exit fullscreen mode

Bu şekilde artık kendi ortamınızda, gönderilmeye hazır tag'li bir imajınız bulunmakta. Bu yapıyı 2 şekilde gönderebilirsiniz.

latest yani güncel sürüm olarak göndermek isterseniz:

docker push kullanıcıadınız/depoadresiniz
Enter fullscreen mode Exit fullscreen mode

diyebileceğiniz gibi, Hub üzerinde de tag oluşturmak istiyorsanız:

docker push kullanıcıadınız/depoadresiniz:0.1
Enter fullscreen mode Exit fullscreen mode

gibi bir komut kullanabilirsiniz.

Docker Registry'den imaj çekmek

Docker Hub'tan çekebileceğiniz gibi kendi Docker registry'nizden de imajlar çekebilirsiniz. Bunun için nasıl kurulum yapıldığına değinmeden pratiğe geçeceğim.

Aşağıdaki şekilde imajları çekebilirsiniz:

docker pull <registryadresi>:<registryport>/<uygulamaadi>:<uygulamasürümü>
Enter fullscreen mode Exit fullscreen mode

Docker Registry'ye imaj yollamak

Docker Hub'a oldukça benzer şekilde bir süreç gerçekleşmektedir. Öncelikle yine login olmanız gerekmektedir:

docker login <registryadresi>:<registryport>
Enter fullscreen mode Exit fullscreen mode

Sonrasında imajınızı göndereceğiniz formata çevirecek şekilde taglemeniz gerekmektedir:

docker tag <imajid> <registryadresi>:<registryport>/<uygulamaadi>:<uygulamasürümü>
Enter fullscreen mode Exit fullscreen mode

Ve son olarak yollamak için de benzer komutu uygulamanız gerekmektedir:

docker push <registryadresi>:<registryport>/<uygulamaadi>:<uygulamasürümü>
Enter fullscreen mode Exit fullscreen mode

İmajlarınızı dosya olarak kaydetme ve yükleme

Her zaman Docker Hub veya Docker Registry'ye erişiminiz olmayabilir. Bu gibi durumlarda imajlarınızı dosya olarak kaydetmeniz gerektiğinde aşağıdaki komutla imajı kaydedebilirsiniz:

docker save imajrepoadı > imajdosyasi.tar
Enter fullscreen mode Exit fullscreen mode

Benzer şekilde imaj dosyasını başka bir sisteme taşıdıktan sonra sisteme eklemek için de aşağıdaki komut kullanılabilir:

docker load --input imajdosyasi.tar
Enter fullscreen mode Exit fullscreen mode
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .