docker compose kurulumlarda çok fazla kullanılıyor pratikte çokta işe yarıyor ama zaman zaman hataya düşebiliyor, bir işlem yapıyorsunuz ve çakışmalara, aynı ağ adlarını almaya başlıyor.
Bu durumda docker güncellemelerinde ve/veya sistem güncellemelerinden sonra ortaya çıkıyor. Ağların ve konteyner’ların başlamasına engel oluyor.
Örnek bir hata mesajı
Sep 01 18:30:15 debian docker compose[2281641]: Removing network mertcan_default
Sep 01 18:30:15 debian docker compose[2281641]: network mertcan_default is ambiguous (2 matches found based on name)
Sep 01 18:30:16 debian systemd[1]: mertcan_default.service: Control process exited, code=exited, status=1/FAILURE
Aşağıdaki gibi yazdığımız ufacık bir python kodu ile sistemden başa bela olan bu ağları otomatik kaldırma işlemi yapabilirsiniz.
import subprocess
import json
import logging
logger = logging.getLogger(__name__)
output = subprocess.check_output(["docker", "network", "ls", "--format", "{{json .}}"])
networks = set() # use a set to avoid duplicates
for line in output.decode("utf-8").splitlines():
# check line is not empty
if not line:
logger.debug("Empty line found in docker network ls output (ignoring)")
continue
network = json.loads(line)
if network["Name"] in networks:
logger.info("Removing duplicate network: %s", network["Name"])
subprocess.check_call(["docker", "network", "rm", network["Name"]])
networks.add(network["Name"])