GitLab CI පද්ධතියේ Docker භාවිතා කිරීමේදී බොහෝ සංවර්ධකයින් "Cannot connect to the Docker daemon at unix:///var/run/docker.sock" යන දෝෂය හමු වෙති. මෙය Docker client එකට job කන්ටේනර තුළ තිබිය යුතු සොකට් ගොනුව නොමැති නිසා සිදුවේ. ප්රධාන හේතුව DOCKER_HOST පරිසර විචල්යය සකස් නොකිරීමයි.
මෙම ගැටළුව සරලව විසඳීමට, Docker‑dind (Docker-in-Docker) සේවාව TCP පෝර්ට් එකක් (2376) හරහා සම්බන්ධ කර, DOCKER_HOST, DOCKER_TLS_CERTDIR, DOCKER_CERT_PATH, DOCKER_TLS_VERIFY වැනි විචල්යයන් නිවැරදිව සකස් කරන්නේ ප්රමාණවත් වේ. ඉන්පසු docker info සහ docker build වැනි විධාන සාර්ථකව ක්රියාත්මක වේ.
මෙම පියවරෙන් පසු, ගැටළුවේ තවත් දෙකක් පැහැදිලි වේ: (1) DOCKER_HOST සකස් නොකිරීම, (2) TLS සකස් කිරීමේ අසමත්භාවය, (3) Runner එකේ privileged mode අක්රිය කිරීම. Docker Engine 19.03 පසුගිය සංස්කරණ වල TLS ස්වයංක්රීයව සක්රිය වේ, එබැවින් DOCKER_TLS_CERTDIR, DOCKER_CERT_PATH, DOCKER_TLS_VERIFY වැනි විචල්යයන් සමඟ 2376 පෝර්ට් එක භාවිතා කළ යුතුය. TLS අවශ්ය නොවන අවස්ථාවල, DOCKER_TLS_CERTDIR හි අගය හිස් කර 2375 පෝර්ට් එක භාවිතා කළ හැක.
Runner එක privileged mode නොමැතිව තිබේ නම්, dind සේවාව Docker daemon එකක් ඇරඹීමට නොහැකි වන අතර, client එක නැවත socket අඩවියට යොමු වීමෙන් ඒම දෝෂය පෙන්වයි. එබැවින් config.toml ගොනුවේ privileged = true ලෙස සකස් කිරීම අත්යවශ්යයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
- ඉගෙනුම් සහ පුහුණු කිරීම: GitLab CI/CD සහ Docker‑dind පිළිබඳ වැදගත් තොරතුරු, ශ්රී ලාංකීය තාක්ෂණ ශිෂ්යයන්ට DevOps හැකියාවන් වර්ධනය කිරීමට මඟ පෙන්වයි.
- ව්යාපාරික කාර්යක්ෂමතාව: ස්ථානීය සමාගම් Docker‑based CI pipelines භාවිතා කර, නිෂ්පාදන සංස්කරණ වේගය වැඩි කර, දෝෂ අවදානම අඩු කරගත හැක.
- ආරක්ෂණ සහ අනුකූලතාවය: TLS සැකසීමේ නිවැරදි ක්රමය අනුගමනය කිරීමෙන්, දත්ත රහස්යතාවය සහ ආරක්ෂාව උචිත ලෙස රැකගත හැක.
මෙම සරල සැකසුම් මඟින් GitLab CI තුළ Docker භාවිතය තවත් නිරවද්ය හා වේගවත් කර ගැනීමට හැකියාව ලැබේ. ඔබේ CI pipeline එකේ මේ සලකුණු පිරික්සා, ගැටළුවක් පැන නැගුණාම ඉක්මනින් විසඳා ගැනීමට පුළුවන්.