Statik IP adresleri, kapsayıcılar veya hizmetler durdurulup başlatıldığında değişmez, bu da onları kalıcı ağ iletişimi için kullanışlı hale getirir. Docker kapsayıcılarına statik IP adresleri atamak, onları daha erişilebilir hale getirmenin kolay bir yoludur.
Neden Statik IP Kullanmalısınız?
İki tür “statik IP” vardır; bir sunucu içinde dahili ağ için kullanılan özel IP adresleri ve genellikle internet üzerinden sunucunun dışına bağlanmak için kullanılan genel IP adresleri.
Bir kapsayıcı için genel bir IP adresi ayarlamanız gerekiyorsa, bağlantı noktası bağlantılarını kullanmak isteyeceksiniz. Ana bilgisayardan erişilebilmesi için Docker kapsayıcısındaki bağlantı noktalarını “yayınlayabilirsiniz”. Daha gelişmiş ağ kurulumları olsa da, bu açık ara farkla en kolay ve en yaygın olanıdır. Örneğin, ana bilgisayardaki 80 numaralı bağlantı noktasını (HTTP) bir NGINX kapsayıcısına işaret edecek şekilde bağlama:
docker run --publish=80:8080 nginx
Statik bir özel IP adresi yapmak istiyorsanız, bir tane kullanmanız gerekip gerekmediğini düşünmelisiniz. Çoğu zaman, bir kapsayıcıyla diğerinden veya ana bilgisayardan konuşmak için statik bir IP isteyeceksiniz. Çoğu durumda, Docker’ın yerleşik ağı bunu halledebilir.
Docker varsayılan bir ağla birlikte gelir, ancak kendinizinkini yaparsanız, o ağda başlatıldığında kapsayıcılara takma adlar verebilirsiniz. Bu takma ad, kapsayıcının özel IP’sine otomatik olarak çözümlenecektir. Örneğin, buradaki NGINX kabı, bağlantı dizesiyle MongoDB örneğine erişebilir. mongodb://mongohost:27017
.
docker network create example docker run --net example --name nginx -d nginx docker network connect example --alias mongohost mongodb
Daha fazla bilgi edinmek için Docker’ın kullanıcı tanımlı köprü ağlarıyla ilgili belgelerini okuyabilirsiniz.
Bununla birlikte, kapsayıcılara doğrudan ana bilgisayardan erişmek gibi özel bir IP adresini manuel olarak belirtmek isteyeceğiniz pek çok zaman vardır. Bunu yapmak için yine de özel bir Docker ağı kullanmanız gerekecek, ancak kurulumu kolaydır.
Statik IP’leri Ayarlama
İlk olarak, bir Docker ağı kurmanız gerekecek ve biz IP adresini önemsediğimiz için sabit bir alt ağ belirlemeniz gerekecek:
docker network create --subnet=172.20.0.0/16 customnetwork
İLGİLİ: Alt Ağlar Nelerdir ve Ağımı Nasıl Etkilerler?
Ardından, ağı aşağıdakilerle belirterek bir kapsayıcı çalıştırabilirsiniz. --net
bayrak ve ile IP’yi belirterek -ip
bayrak:
docker run --net customnetwork --ip 172.20.0.10 -d container
İle kapta kontrol ederek adresin doğru olduğunu doğrulayabilirsiniz. exec -t bin/bash
veya Docker kapsayıcı listesini inceleyerek:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' name_or_id
Docker Compose’u Kullanma
Docker Compose, önceden tanımlanmış ayarlarla birden çok kapsayıcıyı başlatmak için kullanılan bir araçtır. Bu, belirli alt ağlara sahip ağların kurulmasını içerir ve aşağıdakileri kullanarak sabit IP’lere sahip ağlara kapsayıcılar ekleyebilirsiniz. ipv4_address
burada gösterilen yapılandırma bloğu:
version: '2' services: webserver: image: nginx container_name: web-server networks: customnetwork: ipv4_address: 172.20.0.10 networks: customnetwork: ipam: config: - subnet: 172.20.0.0/16