Docker sanallaştırma sistemi, varsayılan ayarlarda 172.17.0.0/12 ağlarını kullanır. Sistemde bu ağlardaki adresleri kullanan başka cihazlar (sunucu, bilgisayar vs.) varsa Docker ayarlarını değiştirebilirsiniz. Bu durumda, olası ağ çakışmalarını önlenebilir. Örneğin 172.21.122.23 adresinde çalışan bir varitabanı sunucusu varsa ve kendi bilgisayarınız bu sunucuya ulaşabildiği halde docker container erişemiyorsa, bu durumda çakışma olma ihtimali yüksektir.
Docker mevcut ağ ayarlarının görüntülenmesi
Docker üzerinde hangi ağların kullanıldığını öğrenmek için aşağıdaki komut kullanılır:
docker network list
Komut çıktısında NAME sütunu, kullanılan ağların adlarını gösterir.
NETWORK ID NAME DRIVER SCOPE
24a38927e118 bridge bridge local
b92a38ed491b elk_net bridge local
1d9237551d88 microservice bridge local
f57c6099ef24 host host local
dbb6fb4096c5 none null local
Kullanılan adres alanı (address space) hakkında bilgi almak için aşağıdaki komut kullanılır.
docker network inspect elk_net | grep Subnet
"Subnet": "172.19.0.0/16"
docker network inspect bridge | grep Subnet
"Subnet": "172.19.0.0/16"
Görüldüğü üzere Subnet ayarları tüm network’ler için 172.19.0.0/16 şeklindedir.
Docker mevcut ağ ayarlarının değiştirilmesi
Mevcut ağ ayarlarının değiştirilmesi için windows ve linux işletim sistemlerinde deamon.json dosyalarında düzenleme yapılması gerekmektedir.
Linux dosya konumu: /etc/docker/daemon.json
Windows dosya konumu: C:/Users/YourUserName/.docker/daemon.json
Adım-1
Dosyaya aşağıdaki komutların girilmesi
{
"live-restore": true,
"bip": "10.10.0.1/16",
"default-address-pools": [{
"base": "10.0.0.0/8",
"size": 16
}]
}
Adım-2
Tüm container’ların kaldırılması.
docker rm -f `docker ps -q -a`
Adım-3
Kullanılmayan Docker objelerinin silinmesi.
docker system prune
docker network prune
Adım-4
Docker’ın yeniden başlatılması.
Windows sistemde docker desktop yeniden başlatılır. Linux sistemlerde aşağıdaki komut çalıştırlabilir.
systemctl restart docker
Bu işlemlerin ardından adres alanı (address space) bilgilerine tekrar bakıldığında aşağıdaki gibi değiştiği görülür.
docker network inspect bridge | grep Subnet
"Subnet": "10.10.0.0/16"
Bu durumda network değişikliği tamamlanmış olacaktır. Artık 172’li ip çakışma durumları ortadan kalkacaktır.