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
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
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
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
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
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
diyebileceğiniz gibi, Hub üzerinde de tag oluşturmak istiyorsanız:
docker push kullanıcıadınız/depoadresiniz:0.1
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ü>
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>
Sonrasında imajınızı göndereceğiniz formata çevirecek şekilde taglemeniz gerekmektedir:
docker tag <imajid> <registryadresi>:<registryport>/<uygulamaadi>:<uygulamasürümü>
Ve son olarak yollamak için de benzer komutu uygulamanız gerekmektedir:
docker push <registryadresi>:<registryport>/<uygulamaadi>:<uygulamasürümü>
İ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
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