Konu hakkındaki ilk yazım https://steemit.com/docker/@makseli/gelistirici-dostu
Bu yazıda karşılaştığım durumları ve "/etc/docker/daemon.json" dosyası tanımlamaları ile halletme yöntemlerine değinmek istiyorum.
- konu: default-address-pools tanımlaması; default-address-pools tanımlaması ile docker servisine şunu anlatmaya çalışıyoruz. Bak abicim ya da eeey docker; "Ben bu kurulumda Yeni ağlar için Özel IP Aralığı ile çalışmak istiyorum. Aha da bu vereceğim Ip aralığında bana networkler oluştur"
Nasıl olacak bu iş ? Terminali açıyoruz ve /etc/docker/daemon.json dosyasını gedit, vim veya nano ile çalıştırıyoruz;
{
"default-address-pools":
[
{"base":"172.26.0.0/16","size":24}
]
}
şeklinde kaydedip kapatıyoruz.
Peki ne zaman kullanmamız icab eder?
- Geliştirme ortamındaki kullanmak istediğiniz docker container ler arası tanımlı ip haberleşmesi lazım olduğunda
- Kurumunuzun networkculeri "172.17...." bloğunu kullanıyorsa buna ihtiyacınız var demektir. Network uzmanınıza danışırsanız size bu tanımlamayı yapmanızı önerecektir. Aksi takdirde, docker servisini stop etmeden network işlemleriniz sekteye uğrayacaktır.
/etc/docker/daemon.json dosyasında ilgili değişikliği yaptıktan sonra, servisi yeniden başlatmayı unutmayın lütfen.
$ sudo service docker restart
Diğer konu ise: insecure-registries tanımlaması;
Kendi ortamınızda build ettiğiniz image i hub.docker.com a upload etmek uzun sürebilir veya hızlıca denemeler yapmak için lokal registry ihtiyacınız olabilir. Bu ihtiyacınızı gidermek için kendi bilgisayarınızda veya VPS sunucunuzda, local registry docker image ayağa kaldırabilirsiniz;
Kendi ortamınızda veya uzak VPS üzerinde terminali açın ve aşağıdaki satır ile "registry:2" isimli image indirip container ı ayağa kaldırabilirsiniz. Kısa sürede olsa public olacak şekilde yayına alacaksanız, en azından 5000 nolu portu değiştirmenizi tavsiye ederim.
$ docker run -d -p 5000:5000 --restart=always --name registry registry:2
Terminal görüntünüz aşağıdaki gibi olmalı;
Daha detaylı bilgi için; https://docs.docker.com/registry/deploying/ adresini ziyaret edebilirsiniz.
Benim eklemek istediğim kısım, kendi makineniz haricinde, iç veya dış networkten bir domain tanımlaması ile ulaşmak istiyorsanız aşağıdaki hatalara denkgelebilirsiniz;
"Get https://xyz.com:5000/v2/: http: server gave HTTP response to HTTPS client"
ve ya
"Error parsing reference: "http://xyz.com:5000/imageName1909" is not a valid repository/tag: invalid reference format"
Bu hataları alıyoruz çünki containerler için image gönderip alma işlemini HTTPS olmayan bir trafik üzerinden geçirmeye çalışıyoruz;
şimdi "/etc/docker/daemon.json" dosyasını vi, vim veya nano açalım.
{
"insecure-registries" : ["mustafaakseli.com:5000"]
}
Bu ayarın geçerli olması için servise restart atmayı unutmayın;
$ service docker restart
HTTPS için sertifika kullanma ve diğer opsiyonlar için; https://docs.docker.com/registry/insecure/ adresini ziyaret edebilirsiniz.
Buraya kadar herhangi bir sorunuz var ise yorum bölümünden iletebilirsiniz;
Eğer her iki tanımlamayı birden yapmanız gerekiyor ise /etc/docker/daemon.json dosyanız aşağıdaki gibi gözükmelidir;
{
"insecure-registries":["mustafaakseli.com:5000"],
"default-address-pools":
[
{"base":"172.26.0.0/16","size":24}
]
}
Boşuna denemeyin ben 5000 portunu ve bu domaini kullanmıyorum :) Bu yazı güncellenmeye devam edecektir.
İyi çalışmalar...