{"id":487071,"date":"2026-07-13T09:32:53","date_gmt":"2026-07-13T09:32:53","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=487071"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=487071","title":{"rendered":"Docker Gitlab + Gitlab Runners \u043d\u0430\u00a0Fedora 44"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u0434\u043e\u0440\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0437\u044c\u044f! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439\u00a0\u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0437\u0430 2\u00a0\u0447\u0430\u0441\u0430 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c Gitlab \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u00a0\u043d\u0435\u043c\u0443 Gitlab Runner \u0438\u0437\u2011\u043f\u043e\u0434 Docker, \u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0430\u00a0\u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 Fedora 44.<\/p>\n<p>\u0412\u0441\u0451 \u0442\u043e, \u0447\u0442\u043e\u00a0\u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u0432\u044b\u0437\u0432\u0430\u043d\u043e\u00a0\u0436\u0435\u043b\u0430\u043d\u0438\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u044b\u043a\u0430\u0442\u044c \u0438 \u0443\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u0438\u0437\u00a0\u0441\u0435\u0431\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 Gitlab \u043a\u0430\u043a\u00a0\u0434\u043b\u044f\u00a0DevOps, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f\u00a0QA. \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u044f \u043d\u0435\u00a0\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u043b \u0441\u0435\u0431\u044f \u0432\u00a0\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043e\u0442\u00a0\u0441\u0430\u043c\u043e\u0433\u043e Gitlab.<\/p>\n<p>\u0425\u043e\u0447\u0443 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u0437\u0430\u00a0\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438: Docker \u044f \u0437\u043d\u0430\u044e \u043d\u0430\u00a0\u0443\u0440\u043e\u0432\u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0432\u00a0Docker Compose. \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043f\u043e\u00a0\u0432\u0441\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b Docker \u0434\u043b\u044f\u00a0\u043f\u043e\u0434\u043d\u044f\u0442\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435\u00a0\u0440\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u044e, \u043a\u0430\u043a\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Docker: \u0435\u0441\u043b\u0438 \u0432\u044b \u044d\u0442\u043e \u0447\u0438\u0442\u0430\u0435\u0442\u0435, \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u0443\u00a0\u0432\u0430\u0441 \u043e\u043d \u0443\u0436\u0435 \u0435\u0441\u0442\u044c.<\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Gitlab<\/h3>\n<p>\u0421\u0430\u043c\u0430 \u043f\u043e\u00a0\u0441\u0435\u0431\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Gitlab \u043d\u0435\u00a0\u0438\u043c\u0435\u043b\u0430 \u043a\u0430\u043a\u0438\u0445\u2011\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0412\u0441\u0451 \u043f\u0440\u043e\u0448\u043b\u043e \u043f\u043e\u00a0\u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c\u0443 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044e, \u0437\u0430\u00a0\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u0434\u043b\u044f\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u044f \u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0443\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b.<\/p>\n<pre><code class=\"bash\">sudo useradd gitlab -m -Usudo usermod -aG wheel,docker gitlabsudo su gitlabcd ~<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043d\u0430\u00a0\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c: <code>sudo passwd gitlab<\/code><\/p>\n<p>\u0414\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u043b\u043e\u0433\u043e\u0432 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445 Gitlab \u0441\u043e\u0437\u0434\u0430\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438:<\/p>\n<pre><code class=\"bash\">mkdir -p \/home\/gitlab\/gitlab_env\/configmkdir -p \/home\/gitlab\/gitlab_env\/logsmkdir -p \/home\/gitlab\/gitlab_env\/data<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u0449\u0443\u044e \u0441\u0435\u0442\u044c \u0434\u043b\u044f\u00a0\u043d\u0438\u0445:<\/p>\n<pre><code class=\"bash\">docker network create gitlab-net<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0447\u0435\u0440\u0435\u0437:<\/p>\n<pre><code class=\"bash\">docker run --detach \\  --hostname gitlab.local \\  --network gitlab-net \\  --publish 7443:443 \\  --publish 7080:80 \\  --publish 7022:22 \\  --name gitlab \\  --restart always \\  --volume \/home\/gitlab\/gitlab_env\/config:\/etc\/gitlab:Z \\  --volume \/home\/gitlab\/gitlab_env\/logs:\/var\/log\/gitlab:Z \\  --volume \/home\/gitlab\/gitlab_env\/data:\/var\/opt\/gitlab:Z \\  gitlab\/gitlab-ee:latest<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 <code>--hostname gitlab.local<\/code>\u00a0\u2014 \u043d\u0430\u00a0\u0430\u0434\u0440\u0435\u0441 <code>gitlab.local<\/code> \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c. \u0414\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043c \u0447\u0435\u0440\u0435\u0437 Nginx\u2011\u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0445\u043e\u0441\u0442\u0430 \u0434\u043b\u044f\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0423\u0447\u0442\u0438\u0442\u0435 \u0442\u0430\u043a\u0436\u0435, \u0447\u0442\u043e\u00a0\u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432\u00a0\u0442\u043e\u0439\u00a0\u0436\u0435 \u0441\u0435\u0442\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a\u00a0\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u00a0\u0434\u043e\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u043c\u0435\u043d\u0438 <code>gitlab<\/code>.<\/p>\n<h4>gitlab.local, Nginx \u0438 \u0445\u043e\u0441\u0442<\/h4>\n<p>\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u043a\u0440\u043e\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u00a0\u0430\u0434\u0440\u0435\u0441 <code>gitlab.local<\/code>. \u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e\u00a0\u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c,\u00a0\u2014 \u044d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u00a0hosts \u0434\u043b\u044f\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438:<\/p>\n<pre><code class=\"bash\">sudo \/etc\/hosts\/<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u00a0\u0444\u0430\u0439\u043b\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043c <code>127.0.0.1<\/code> \u0438 <code>::1<\/code>\u00a0\u2014 \u0432\u00a0\u043a\u043e\u043d\u0435\u0446 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c <code>gitlab.local<\/code>.<\/p>\n<p>\u0424\u0430\u0439\u043b \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:<\/p>\n<pre><code>127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 gitlab.local::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 gitlab.local<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0417\u0430\u0447\u0435\u043c \u043c\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438: \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u043e\u00a0\u0430\u0434\u0440\u0435\u0441\u0443 <code>gitlab.local<\/code> \u0448\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0442\u044c.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0427\u0438\u0441\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u043d\u0435\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e, \u043a\u0430\u043a\u00a0\u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u043b\u0443\u0447\u0448\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0447\u0435\u043c \u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f.<\/p>\n<p>\u0414\u043b\u044f\u00a0\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Nginx:<\/p>\n<pre><code class=\"bash\">sudo dnf install nginx<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0414\u043b\u044f\u00a0\u043c\u0435\u043d\u044f \u0441\u0442\u0430\u043b\u043e \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435\u043c, \u0447\u0442\u043e\u00a0\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 nginx \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u00a0\u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code>drwxr-xr-x. 1 root root   444 \u0438\u044e\u043d 19 19:18 .drwxr-xr-x. 1 root root  5434 \u0438\u044e\u043b  5 22:40 ..drwxr-xr-x. 1 root root     0 \u0438\u044e\u043b  5 19:46 conf.ddrwxr-xr-x. 1 root root     0 \u043c\u0430\u044f 22 03:00 default.d-rw-r--r--. 1 root root  1077 \u043c\u0430\u044f 22 03:00 fastcgi.conf-rw-r--r--. 1 root root  1077 \u043c\u0430\u044f 22 03:00 fastcgi.conf.default-rw-r--r--. 1 root root  1007 \u043c\u0430\u044f 22 03:00 fastcgi_params-rw-r--r--. 1 root root  1007 \u043c\u0430\u044f 22 03:00 fastcgi_params.default-rw-r--r--. 1 root root  2837 \u043c\u0430\u044f 22 03:00 koi-utf-rw-r--r--. 1 root root  2223 \u043c\u0430\u044f 22 03:00 koi-win-rw-r--r--. 1 root root 38661 \u044f\u043d\u0432 16 03:00 mime.types-rw-r--r--. 1 root root  5349 \u043c\u0430\u044f 22 03:00 mime.types.default-rw-r--r--. 1 root root  1990 \u0438\u044e\u043d 19 19:18 nginx.conf-rw-r--r--. 1 root root  2630 \u043c\u0430\u044f 22 03:00 nginx.conf.default-rw-r--r--. 1 root root   636 \u043c\u0430\u044f 22 03:00 scgi_params-rw-r--r--. 1 root root   636 \u043c\u0430\u044f 22 03:00 scgi_params.default-rw-r--r--. 1 root root   664 \u043c\u0430\u044f 22 03:00 uwsgi_params-rw-r--r--. 1 root root   664 \u043c\u0430\u044f 22 03:00 uwsgi_params.default-rw-r--r--. 1 root root  3611 \u043c\u0430\u044f 22 03:00 win-utf<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u0430\u043c \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 <code>\/etc\/nginx\/conf.d<\/code>:<\/p>\n<pre><code class=\"bash\">sudo nano \/etc\/nginx\/conf.d\/docker_gitlab.conf<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0418 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0435\u0433\u043e:<\/p>\n<pre><code>upstream backend {    server 127.0.0.1:7080;}server {    listen 80;    server_name gitlab.local;    location \/ {        proxy_pass http:\/\/backend;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header X-Forwarded-Proto $scheme;    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c nginx:<\/p>\n<pre><code class=\"bash\">sudo systemctl restart nginx<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043c\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u043c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044e, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0430 <code>http:\/\/gitlab.local\/<\/code> \u043c\u044b \u043f\u043e\u043f\u0430\u0434\u0451\u043c \u043d\u0430\u00a0\u0432\u0435\u0431\u2011\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Gitlab \u043d\u0430\u00a0\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u0445\u043e\u0434\u0430 \u0438\u043b\u0438\u00a0\u0443\u0432\u0438\u0434\u0438\u043c:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b5f\/839\/89b\/b5f83989be763300cf3e5cc5f650f36c.png\" alt=\"Gitlab Wait\" title=\"Gitlab \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\" width=\"809\" height=\"523\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/b5f\/839\/89b\/b5f83989be763300cf3e5cc5f650f36c.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/b5f\/839\/89b\/b5f83989be763300cf3e5cc5f650f36c.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Gitlab \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f<\/figcaption><\/div>\n<\/figure>\n<h4>\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a\u00a0Runners<\/h4>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u0439\u0442\u0438 \u043d\u0430\u00a0Gitlab. \u0414\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442\u00a0root\u2011\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:<\/p>\n<pre><code class=\"bash\">docker exec gitlab cat \/etc\/gitlab\/initial_root_password<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u0437\u0430\u0439\u0442\u0438 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e\u0434\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c root; \u043d\u0430\u0441 \u043f\u043e\u043f\u0440\u043e\u0441\u044f\u0442 \u0432\u043d\u0435\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u00a0\u0432\u0435\u0431\u2011\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432\u00a0\u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438:<\/p>\n<figure class=\"\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ec4\/d59\/fcc\/ec4d59fcca799a409942f5fe22b9f043.png\" alt=\"Gitlab select project menu\" title=\"Gitlab \u043c\u0435\u043d\u044e\u0448\u0430. \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c\" width=\"273\" height=\"185\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/ec4\/d59\/fcc\/ec4d59fcca799a409942f5fe22b9f043.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/ec4\/d59\/fcc\/ec4d59fcca799a409942f5fe22b9f043.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Gitlab \u043c\u0435\u043d\u044e\u0448\u0430. \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043c<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/170\/f40\/929\/170f40929476677497e90c9087b3e057.png\" alt=\"Gitlab project list\" title=\"Gitlab \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432\" width=\"1365\" height=\"397\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/170\/f40\/929\/170f40929476677497e90c9087b3e057.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/170\/f40\/929\/170f40929476677497e90c9087b3e057.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Gitlab \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432<\/figcaption><\/div>\n<\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a\u00a0\u043c\u044b \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043a\u00a0\u0441\u0430\u043c\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0431\u043e\u043a\u043e\u0432\u043e\u0435 \u043c\u0435\u043d\u044e, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 CICD. \u0421\u043e\u0437\u0434\u0430\u0451\u043c Runner:<\/p>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/883\/2c6\/1b9\/8832c61b985d8aa28842f28e053b3086.png\" alt=\"Gitlab CICD setting select\" width=\"611\" height=\"695\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/883\/2c6\/1b9\/8832c61b985d8aa28842f28e053b3086.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/883\/2c6\/1b9\/8832c61b985d8aa28842f28e053b3086.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Gitlab CICD setting select<\/figcaption><\/div>\n<\/figure>\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/aa3\/457\/405\/aa3457405147555a7656579415723e27.png\" alt=\"Gitlab Runner select\" title=\"Gitlab \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0441 Runners\" width=\"1408\" height=\"507\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/aa3\/457\/405\/aa3457405147555a7656579415723e27.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/aa3\/457\/405\/aa3457405147555a7656579415723e27.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/p>\n<div><figcaption>Gitlab \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0441\u00a0Runners<\/figcaption><\/div>\n<\/figure>\n<p>\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00abCreate projet runner\u00bb \u0434\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c. \u0414\u043b\u044f\u00a0\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0433\u0430\u043b\u043e\u0447\u043a\u0443 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 <strong>Run untagged jobs<\/strong> (\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0435\u0437\u00a0\u0442\u0435\u0433\u043e\u0432) \u0438 \u0441\u043e\u0437\u0434\u0430\u043c runner, \u043d\u0430\u0436\u0430\u0432 \u043a\u043d\u043e\u043f\u043a\u0443 \u0432\u043d\u0438\u0437\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043d\u0430\u00a0\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u00a0\u043c\u0430\u043d\u0443\u0430\u043b\u043e\u043c, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u043a\u0435\u043d. \u041d\u0430\u00a0\u044d\u0442\u043e\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u0442\u0430\u043f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430\u0448\u0435\u0433\u043e Gitlab + Gitlab Runner \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f.<\/p>\n<h3>Gitlab Runner \u0432\u00a0Docker<\/h3>\n<p>\u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443: \u0438\u0437\u2011\u0437\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 Fedora \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f SELinux \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u043c\u044b \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0441\u00a0\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0435\u00a0\u0441\u043c\u043e\u0433 \u0440\u0435\u0448\u0438\u0442\u044c, \u043d\u0435\u00a0\u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0432 \u0437\u0430\u0449\u0438\u0442\u0443 \u0432\u00a0\u0446\u0435\u043b\u043e\u043c. \u0415\u0441\u043b\u0438 \u0443\u00a0\u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0434\u0435\u0438, \u043a\u0430\u043a\u00a0\u043c\u043e\u0436\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0438 \u043d\u0435\u00a0\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c SELinux, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0434\u0430\u0439\u0442\u0435 \u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u00a0\u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.<\/p>\n<p>\u041f\u043e\u043d\u0430\u0447\u0430\u043b\u0443 \u0443\u00a0\u043d\u0430\u0441 \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e: \u043d\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f\u00a0gitlab\u2011runner:<\/p>\n<pre><code class=\"bash\">mkdir -p \/home\/gitlab\/gitlab-runner\/configdocker run -d \\   --name gitlab-runner \\   --restart always \\   --network gitlab-net \\   -v \/home\/gitlab\/gitlab-runner\/config:\/etc\/gitlab-runner:Z \\   -v \/var\/run\/docker.sock:\/var\/run\/docker.sock:z \\   gitlab\/gitlab-runner<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u0431\u0435\u0433\u0443\u043d\u043a\u0430:<\/p>\n<pre><code class=\"bash\">docker exec -it gitlab-runner gitlab-runner register<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u00a0URL \u0432\u0432\u043e\u0434\u0438\u043c: <code>http:\/\/gitlab\/<\/code>\u00a0\u2014 \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Docker\u2011\u0441\u0435\u0442\u044c, \u0434\u0430\u043b\u0435\u0435 \u0442\u043e\u043a\u0435\u043d \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u00a0\u0436\u0435\u043b\u0430\u043d\u0438\u044e.<\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0432\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432\u00a0\u0441\u0430\u043c \u0444\u0430\u0439\u043b:<\/p>\n<pre><code class=\"bash\">sudo nano \/home\/gitlab\/gitlab-runner\/config\/config.toml<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0412\u00a0\u0441\u0435\u043a\u0446\u0438\u044e <code>[[runners]]<\/code> \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c <code>clone_url = \"http:\/\/gitlab\/\"<\/code>\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b runner \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u043c\u0443 \u043e\u0442\u0434\u0430\u0435\u0442 \u0441\u0430\u043c Gitlab \u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u043f\u043e\u00a0\u0430\u0434\u0440\u0435\u0441\u0430\u043c, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0442\u0438 Docker.<\/p>\n<p>\u0415\u0441\u043b\u0438 \u0443\u00a0\u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0435\u043a\u0446\u0438\u044f <code>[runners.docker]<\/code>, \u0432\u00a0\u043d\u0435\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c <code>network_mode = \"host\"<\/code>, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0441\u0435\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 gitlab\u2011runner \u0438 \u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c, \u0438 <code>extra_hosts = [\"gitlab:host-gateway\"]<\/code> \u0434\u043b\u044f\u00a0\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 IP\u2011\u0430\u0434\u0440\u0435\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e <code>host-gateway<\/code>. \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:<\/p>\n<pre><code>concurrent = 1check_interval = 0shutdown_timeout = 0[session_server]  session_timeout = 1800[[runners]]  name = \"684cccc2538a\"  url = \"http:\/\/gitlab\/\"  clone_url = \"http:\/\/gitlab\/\"  id = 3  token = \"your-token-here\"  token_obtained_at = 2026-07-05T21:25:19Z  token_expires_at = 0001-01-01T00:00:00Z  executor = \"docker\"  [runners.cache]    MaxUploadedArchiveSize = 0    [runners.cache.s3]      AssumeRoleMaxConcurrency = 0    [runners.cache.gcs]    [runners.cache.azure]  [runners.docker]    tls_verify = false    image = \"some-image:lastes\"    network_mode = \"host\"    extra_hosts = [\"gitlab:host-gateway\"]    privileged = false    disable_entrypoint_overwrite = false    oom_kill_disable = false    disable_cache = false    volumes = [\"\/cache\"]    volume_keep = false    shm_size = 0    network_mtu = 0<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0444\u0430\u0439\u043b\u0438\u043a <code>.gitlab-ci.yml<\/code>:<\/p>\n<pre><code class=\"yaml\"># .gitlab-ci.yml# \u041f\u0440\u043e\u0441\u0442\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 Runner# ==================== \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 Runner ====================runner-health-check:  stage: .pre  tags:    - your-runner-tag           # \u2190 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0442\u0435\u0433 \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u043d\u043d\u0435\u0440\u0430 (\u0438\u043b\u0438 \u0443\u0431\u0435\u0440\u0438\u0442\u0435, \u0435\u0441\u043b\u0438 untagged)  script:    - echo \"Runner work!\"    - echo \"CI_COMMIT_SHA $CI_COMMIT_SHA\"    - echo \"CI_PIPELINE_ID $CI_PIPELINE_ID\"    - echo \"Runner hostname $(hostname)\"    - uname -a    - cat \/etc\/os-release || echo \"OS info not available\"    - echo \"Docker allowed?\" &amp;&amp; (docker --version &amp;&amp; echo \"Docker work\" || echo \"Docker not found\")    - echo \"Check success complete!\"  artifacts:    paths:      - runner-check.log    when: always  after_script:    - echo \"Runner health check finished at $(date)\" &gt; runner-check.log<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f\u00a0\u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0436\u0438\u0432\u00a0\u043b\u0438 \u0443\u00a0\u043d\u0430\u0441 runner \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. \u0415\u0441\u043b\u0438 \u043e\u043d \u043f\u0440\u043e\u0448\u0451\u043b, \u0437\u043d\u0430\u0447\u0438\u0442, \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442. \u0415\u0441\u043b\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u043d\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441\u00a0SELinux. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0442\u0430\u043a\u00a0\u043b\u0438 \u044d\u0442\u043e, \u0432\u00a0\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 <code>sudo setenforce 0<\/code> \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<p>\u0412\u00a0\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u0443\u00a0\u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442: <code>runner-check.log<\/code> \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u0439, \u0447\u0442\u043e\u00a0\u0442\u0435\u0441\u0442 \u043f\u0440\u043e\u0439\u0434\u0435\u043d \u0443\u0441\u043f\u0435\u0448\u043d\u043e.<\/p>\n<h3>\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u0432\u044b\u0432\u043e\u0434<\/h3>\n<p>\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0443\u00a0\u043d\u0430\u0441 \u0435\u0441\u0442\u044c Gitlab \u0438 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 Runners \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430 pipeline \u043d\u0430\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435. \u0427\u0442\u043e\u00a0\u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f DevOps \u0438\u043b\u0438\u00a0QA\u2011\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u00a0\u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 Gitlab.<\/p>\n<p>\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 SELinux, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432\u00a0Fedora. \u041a\u00a0\u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u044f \u043d\u0435\u00a0\u043d\u0430\u0448\u0451\u043b \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441\u00a0\u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a <code>docker.sock<\/code>, \u0438 \u0431\u0435\u0437\u00a0\u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f SELinux \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u043b \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<pre><code>ERROR: Failed to remove network for buildERROR: Preparation failed: getting docker info: permission denied while trying to connect to the Docker daemon socket at unix:\/\/\/var\/run\/docker.sock: Get \"http:\/\/%2Fvar%2Frun%2Fdocker.sock\/v1.51\/info\": dial unix \/var\/run\/docker.sock: connect: permission denied (docker.go:1287:0s)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0448\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0438\u0442\u0435 \u0432\u044b \u0441\u043e \u0441\u0432\u043e\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u00a0\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c SELinux.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1058480\/\">https:\/\/habr.com\/ru\/articles\/1058480\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435\u0417\u0434\u0440\u0430\u0432\u0441\u0442\u0432\u0443\u0439\u0442\u0435, \u0434\u043e\u0440\u043e\u0433\u0438\u0435 \u0434\u0440\u0443\u0437\u044c\u044f! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u0445\u043e\u0447\u0443 \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u043e\u043f\u044b\u0442\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439\u00a0\u0431\u044b\u043b \u043f\u043e\u043b\u0443\u0447\u0435\u043d \u0437\u0430 2\u00a0\u0447\u0430\u0441\u0430 \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u043a\u0430\u043a\u00a0\u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c Gitlab \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u00a0\u043d\u0435\u043c\u0443 Gitlab Runner \u0438\u0437\u2011\u043f\u043e\u0434 Docker, \u0438 \u0432\u0441\u0451 \u044d\u0442\u043e \u043d\u0430\u00a0\u0434\u043e\u043c\u0430\u0448\u043d\u0435\u0439 Fedora 44.\u0412\u0441\u0451 \u0442\u043e, \u0447\u0442\u043e\u00a0\u0431\u044b\u043b\u043e \u0441\u0434\u0435\u043b\u0430\u043d\u043e, \u0432\u044b\u0437\u0432\u0430\u043d\u043e\u00a0\u0436\u0435\u043b\u0430\u043d\u0438\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0442\u044b\u043a\u0430\u0442\u044c \u0438 \u0443\u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e\u00a0\u0438\u0437\u00a0\u0441\u0435\u0431\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 Gitlab \u043a\u0430\u043a\u00a0\u0434\u043b\u044f\u00a0DevOps, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f\u00a0QA. \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u044f \u043d\u0435\u00a0\u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u043b \u0441\u0435\u0431\u044f \u0432\u00a0\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e\u0439 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043e\u0442\u00a0\u0441\u0430\u043c\u043e\u0433\u043e Gitlab.\u0425\u043e\u0447\u0443 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0438\u0437\u0432\u0438\u043d\u0438\u0442\u044c\u0441\u044f \u0437\u0430\u00a0\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0435 \u043e\u0448\u0438\u0431\u043a\u0438: Docker \u044f \u0437\u043d\u0430\u044e \u043d\u0430\u00a0\u0443\u0440\u043e\u0432\u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u043e\u0432 \u0432\u00a0Docker Compose. \u041f\u0440\u0438\u00a0\u044d\u0442\u043e\u043c \u043f\u043e\u00a0\u0432\u0441\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u0441\u0443\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b Docker \u0434\u043b\u044f\u00a0\u043f\u043e\u0434\u043d\u044f\u0442\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0438 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438.\u0422\u0430\u043a\u0436\u0435 \u0432\u00a0\u0441\u0442\u0430\u0442\u044c\u0435 \u043d\u0435\u00a0\u0440\u0430\u0441\u043f\u0438\u0441\u044b\u0432\u0430\u044e, \u043a\u0430\u043a\u00a0\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c Docker: \u0435\u0441\u043b\u0438 \u0432\u044b \u044d\u0442\u043e \u0447\u0438\u0442\u0430\u0435\u0442\u0435, \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e\u00a0\u0443\u00a0\u0432\u0430\u0441 \u043e\u043d \u0443\u0436\u0435 \u0435\u0441\u0442\u044c.\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Gitlab\u0421\u0430\u043c\u0430 \u043f\u043e\u00a0\u0441\u0435\u0431\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 Gitlab \u043d\u0435\u00a0\u0438\u043c\u0435\u043b\u0430 \u043a\u0430\u043a\u0438\u0445\u2011\u043b\u0438\u0431\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c. \u0412\u0441\u0451 \u043f\u0440\u043e\u0448\u043b\u043e \u043f\u043e\u00a0\u0441\u0430\u043c\u043e\u043c\u0443 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c\u0443 \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044e, \u0437\u0430\u00a0\u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u00a0\u0434\u043b\u044f\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0438 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432 \u044f \u0441\u0442\u0430\u0440\u0430\u044e\u0441\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0443\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0431\u0443\u0434\u0443\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b.sudo useradd gitlab -m -Usudo usermod -aG wheel,docker gitlabsudo su gitlabcd ~\u041c\u043e\u0436\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0437\u0430\u0434\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u0434\u043b\u044f\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c \u043d\u0430\u00a0\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c: sudo passwd gitlab\u0414\u043b\u044f\u00a0\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439, \u043b\u043e\u0433\u043e\u0432 \u0438 \u0434\u0430\u043d\u043d\u044b\u0445 Gitlab \u0441\u043e\u0437\u0434\u0430\u044e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438:mkdir -p \/home\/gitlab\/gitlab_env\/configmkdir -p \/home\/gitlab\/gitlab_env\/logsmkdir -p \/home\/gitlab\/gitlab_env\/data\u0422\u0430\u043a\u0436\u0435, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u0443\u044e \u043e\u0431\u0449\u0443\u044e \u0441\u0435\u0442\u044c \u0434\u043b\u044f\u00a0\u043d\u0438\u0445:docker network create gitlab-net\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0447\u0435\u0440\u0435\u0437:docker run &#8212;detach \\  &#8212;hostname gitlab.local \\  &#8212;network gitlab-net \\  &#8212;publish 7443:443 \\  &#8212;publish 7080:80 \\  &#8212;publish 7022:22 \\  &#8212;name gitlab \\  &#8212;restart always \\  &#8212;volume \/home\/gitlab\/gitlab_env\/config:\/etc\/gitlab:Z \\  &#8212;volume \/home\/gitlab\/gitlab_env\/logs:\/var\/log\/gitlab:Z \\  &#8212;volume \/home\/gitlab\/gitlab_env\/data:\/var\/opt\/gitlab:Z \\  gitlab\/gitlab-ee:latest\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 &#8212;hostname gitlab.local\u00a0\u2014 \u043d\u0430\u00a0\u0430\u0434\u0440\u0435\u0441 gitlab.local \u043d\u0430\u0441 \u0431\u0443\u0434\u0435\u0442 \u043f\u0435\u0440\u0438\u043e\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c. \u0414\u0430\u043d\u043d\u0443\u044e \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043c\u044b \u0440\u0435\u0448\u0438\u043c \u0447\u0435\u0440\u0435\u0437 Nginx\u2011\u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0443\u043a\u0430\u0437\u0430\u043d\u0438\u0435 \u0445\u043e\u0441\u0442\u0430 \u0434\u043b\u044f\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u0430. \u0423\u0447\u0442\u0438\u0442\u0435 \u0442\u0430\u043a\u0436\u0435, \u0447\u0442\u043e\u00a0\u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0432\u00a0\u0442\u043e\u0439\u00a0\u0436\u0435 \u0441\u0435\u0442\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u043a\u00a0\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u0431\u0443\u0434\u0435\u0442 \u043f\u043e\u00a0\u0434\u043e\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u043c\u0435\u043d\u0438 gitlab.gitlab.local, Nginx \u0438 \u0445\u043e\u0441\u0442\u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0437\u0430\u043a\u0440\u043e\u0435\u043c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0430\u00a0\u0430\u0434\u0440\u0435\u0441 gitlab.local. \u041f\u0435\u0440\u0432\u043e\u0435, \u0447\u0442\u043e\u00a0\u043c\u044b \u0441\u0434\u0435\u043b\u0430\u0435\u043c,\u00a0\u2014 \u044d\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0437\u0430\u043f\u0438\u0441\u044c \u0432\u00a0hosts \u0434\u043b\u044f\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438:sudo \/etc\/hosts\/\u0412\u00a0\u0444\u0430\u0439\u043b\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043c 127.0.0.1 \u0438 ::1\u00a0\u2014 \u0432\u00a0\u043a\u043e\u043d\u0435\u0446 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c gitlab.local.\u0424\u0430\u0439\u043b \u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0432\u0438\u0434:127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 gitlab.local::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 gitlab.local\u0417\u0430\u0447\u0435\u043c \u043c\u044b \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u0438: \u0447\u0442\u043e\u0431\u044b \u0432\u0441\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043f\u043e\u00a0\u0430\u0434\u0440\u0435\u0441\u0443 gitlab.local \u0448\u043b\u0438 \u0447\u0435\u0440\u0435\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u0435\u0442\u044c.\u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0432\u043d\u0443\u0442\u0440\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430. \u0427\u0438\u0441\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u043d\u0435\u00a0\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043d\u043e, \u043a\u0430\u043a\u00a0\u043f\u043e\u043a\u0430\u0437\u0430\u043b\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430, \u043b\u0443\u0447\u0448\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0447\u0435\u043c \u043c\u0443\u0447\u0438\u0442\u044c\u0441\u044f.\u0414\u043b\u044f\u00a0\u043d\u0430\u0447\u0430\u043b\u0430 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u043c Nginx:sudo dnf install nginx\u041f\u043e\u0441\u043b\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0414\u043b\u044f\u00a0\u043c\u0435\u043d\u044f \u0441\u0442\u0430\u043b\u043e \u0443\u0434\u0438\u0432\u043b\u0435\u043d\u0438\u0435\u043c, \u0447\u0442\u043e\u00a0\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 nginx \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u0442\u00a0\u043e\u0431\u044b\u0447\u043d\u043e\u0439 \u0438 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:drwxr-xr-x. 1 root root   444 \u0438\u044e\u043d 19 19:18 .drwxr-xr-x. 1 root root  5434 \u0438\u044e\u043b  5 22:40 ..drwxr-xr-x. 1 root root     0 \u0438\u044e\u043b  5 19:46 conf.ddrwxr-xr-x. 1 root root     0 \u043c\u0430\u044f 22 03:00 default.d-rw-r&#8212;r&#8212;. 1 root root  1077 \u043c\u0430\u044f 22 03:00 fastcgi.conf-rw-r&#8212;r&#8212;. 1 root root  1077 \u043c\u0430\u044f 22 03:00 fastcgi.conf.default-rw-r&#8212;r&#8212;. 1 root root  1007 \u043c\u0430\u044f 22 03:00 fastcgi_params-rw-r&#8212;r&#8212;. 1 root root  1007 \u043c\u0430\u044f 22 03:00 fastcgi_params.default-rw-r&#8212;r&#8212;. 1 root root  2837 \u043c\u0430\u044f 22 03:00 koi-utf-rw-r&#8212;r&#8212;. 1 root root  2223 \u043c\u0430\u044f 22 03:00 koi-win-rw-r&#8212;r&#8212;. 1 root root 38661 \u044f\u043d\u0432 16 03:00 mime.types-rw-r&#8212;r&#8212;. 1 root root  5349 \u043c\u0430\u044f 22 03:00 mime.types.default-rw-r&#8212;r&#8212;. 1 root root  1990 \u0438\u044e\u043d 19 19:18 nginx.conf-rw-r&#8212;r&#8212;. 1 root root  2630 \u043c\u0430\u044f 22 03:00 nginx.conf.default-rw-r&#8212;r&#8212;. 1 root root   636 \u043c\u0430\u044f 22 03:00 scgi_params-rw-r&#8212;r&#8212;. 1 root root   636 \u043c\u0430\u044f 22 03:00 scgi_params.default-rw-r&#8212;r&#8212;. 1 root root   664 \u043c\u0430\u044f 22 03:00 uwsgi_params-rw-r&#8212;r&#8212;. 1 root root   664 \u043c\u0430\u044f 22 03:00 uwsgi_params.default-rw-r&#8212;r&#8212;. 1 root root  3611 \u043c\u0430\u044f 22 03:00 win-utf\u041d\u0430\u043c \u0434\u043b\u044f\u00a0\u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b \u0432\u043d\u0443\u0442\u0440\u0438 \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u0438 \/etc\/nginx\/conf.d:sudo nano \/etc\/nginx\/conf.d\/docker_gitlab.conf\u0418 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0435\u0433\u043e:upstream backend {    server 127.0.0.1:7080;}server {    listen 80;    server_name gitlab.local;    location \/ {        proxy_pass http:\/\/backend;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_set_header X-Forwarded-Proto $scheme;    }}\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c nginx:sudo systemctl restart nginx\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u043c\u044b \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u043c \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u044e, \u0447\u0442\u043e\u00a0\u043f\u0440\u0438\u00a0\u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0432\u00a0\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435 \u043d\u0430 http:\/\/gitlab.local\/ \u043c\u044b \u043f\u043e\u043f\u0430\u0434\u0451\u043c \u043d\u0430\u00a0\u0432\u0435\u0431\u2011\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 Gitlab \u043d\u0430\u00a0\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0432\u0445\u043e\u0434\u0430 \u0438\u043b\u0438\u00a0\u0443\u0432\u0438\u0434\u0438\u043c:Gitlab \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f\u041f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0430 \u043a\u00a0Runners\u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u0439\u0442\u0438 \u043d\u0430\u00a0Gitlab. \u0414\u043b\u044f\u00a0\u044d\u0442\u043e\u0433\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u044c \u043e\u0442\u00a0root\u2011\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c:docker exec gitlab cat \/etc\/gitlab\/initial_root_password\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0443\u0432\u0438\u0434\u0435\u0442\u044c \u043d\u0430\u0448 \u043f\u0430\u0440\u043e\u043b\u044c \u0438 \u0437\u0430\u0439\u0442\u0438 \u0432\u00a0\u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u043f\u043e\u0434\u00a0\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c root; \u043d\u0430\u0441 \u043f\u043e\u043f\u0440\u043e\u0441\u044f\u0442 \u0432\u043d\u0435\u0441\u0442\u0438 \u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442.\u041a\u043e\u0433\u0434\u0430 \u043c\u044b \u043d\u0430\u0445\u043e\u0434\u0438\u043c\u0441\u044f \u043d\u0435\u043f\u043e\u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0432\u00a0\u0432\u0435\u0431\u2011\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0435, \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432\u00a0\u043d\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0441\u043e\u0437\u0434\u0430\u043b\u0438:Gitlab \u043c\u0435\u043d\u044e\u0448\u0430. \u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043a\u00a0\u043f\u0440\u043e\u0435\u043a\u0442\u0430\u043cGitlab \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432\u041f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e \u043a\u0430\u043a\u00a0\u043c\u044b \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043a\u00a0\u0441\u0430\u043c\u043e\u043c\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0443, \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0431\u043e\u043a\u043e\u0432\u043e\u0435 \u043c\u0435\u043d\u044e, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438 CICD. \u0421\u043e\u0437\u0434\u0430\u0451\u043c Runner:Gitlab CICD setting selectGitlab \u0432\u043a\u043b\u0430\u0434\u043a\u0430 \u0441\u00a0Runners\u041d\u0430\u0436\u0438\u043c\u0430\u0435\u043c \u00abCreate projet runner\u00bb \u0434\u043b\u044f\u00a0\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c. \u0414\u043b\u044f\u00a0\u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f \u0437\u0430\u0434\u0430\u0447\u0438 \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044e \u0433\u0430\u043b\u043e\u0447\u043a\u0443 \u043d\u0430\u043f\u0440\u043e\u0442\u0438\u0432 Run untagged jobs (\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0437\u0430\u0434\u0430\u0447\u0438 \u0431\u0435\u0437\u00a0\u0442\u0435\u0433\u043e\u0432) \u0438 \u0441\u043e\u0437\u0434\u0430\u043c runner, \u043d\u0430\u0436\u0430\u0432 \u043a\u043d\u043e\u043f\u043a\u0443 \u0432\u043d\u0438\u0437\u0443 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043c\u044b \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u043c \u043d\u0430\u00a0\u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0441\u00a0\u043c\u0430\u043d\u0443\u0430\u043b\u043e\u043c, \u0432\u00a0\u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0442\u043e\u043a\u0435\u043d. \u041d\u0430\u00a0\u044d\u0442\u043e\u043c \u043f\u0435\u0440\u0432\u044b\u0439 \u044d\u0442\u0430\u043f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430\u0448\u0435\u0433\u043e Gitlab + Gitlab Runner \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0441\u044f.Gitlab Runner \u0432\u00a0Docker\u0421\u0440\u0430\u0437\u0443 \u0441\u043a\u0430\u0436\u0443: \u0438\u0437\u2011\u0437\u0430 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0438 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u0430 Fedora \u0438 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f SELinux \u0432\u043d\u0443\u0442\u0440\u0438 \u043d\u0435\u0433\u043e \u043c\u044b \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0441\u00a0\u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u043d\u0435\u00a0\u0441\u043c\u043e\u0433 \u0440\u0435\u0448\u0438\u0442\u044c, \u043d\u0435\u00a0\u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0432 \u0437\u0430\u0449\u0438\u0442\u0443 \u0432\u00a0\u0446\u0435\u043b\u043e\u043c. \u0415\u0441\u043b\u0438 \u0443\u00a0\u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0438\u0434\u0435\u0438, \u043a\u0430\u043a\u00a0\u043c\u043e\u0436\u043d\u043e \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0438 \u043d\u0435\u00a0\u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0442\u044c SELinux, \u0442\u043e \u043f\u0440\u043e\u0448\u0443 \u0434\u0430\u0439\u0442\u0435 \u0437\u043d\u0430\u0442\u044c, \u043a\u0430\u043a\u00a0\u0438\u043c\u0435\u043d\u043d\u043e \u044d\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c.\u041f\u043e\u043d\u0430\u0447\u0430\u043b\u0443 \u0443\u00a0\u043d\u0430\u0441 \u0432\u0441\u0451 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e: \u043d\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0434\u043b\u044f\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0439 \u0438 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0434\u043b\u044f\u00a0gitlab\u2011runner:mkdir -p \/home\/gitlab\/gitlab-runner\/configdocker run -d \\   &#8212;name gitlab-runner \\   &#8212;restart always \\   &#8212;network gitlab-net \\   -v \/home\/gitlab\/gitlab-runner\/config:\/etc\/gitlab-runner:Z \\   -v \/var\/run\/docker.sock:\/var\/run\/docker.sock:z \\   gitlab\/gitlab-runner\u041f\u043e\u0441\u043b\u0435 \u0447\u0435\u0433\u043e \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u0431\u0435\u0433\u0443\u043d\u043a\u0430:docker exec -it gitlab-runner gitlab-runner register\u0412\u00a0URL \u0432\u0432\u043e\u0434\u0438\u043c: http:\/\/gitlab\/\u00a0\u2014 \u0442\u0430\u043a \u043a\u0430\u043a\u00a0\u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 Docker\u2011\u0441\u0435\u0442\u044c, \u0434\u0430\u043b\u0435\u0435 \u0442\u043e\u043a\u0435\u043d \u0438 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u043e\u00a0\u0436\u0435\u043b\u0430\u043d\u0438\u044e.\u0414\u0430\u043b\u0435\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a\u0438\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0432\u00a0\u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438. \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u0432\u00a0\u0441\u0430\u043c \u0444\u0430\u0439\u043b:sudo nano \/home\/gitlab\/gitlab-runner\/config\/config.toml\u0412\u00a0\u0441\u0435\u043a\u0446\u0438\u044e [[runners]] \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c clone_url = &#171;http:\/\/gitlab\/&#187;\u00a0\u2014 \u044d\u0442\u043e \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043b\u044f\u00a0\u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b runner \u043d\u0435\u00a0\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u0430\u0434\u0440\u0435\u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u043c\u0443 \u043e\u0442\u0434\u0430\u0435\u0442 \u0441\u0430\u043c Gitlab \u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u043b\u0441\u044f \u043f\u043e\u00a0\u0430\u0434\u0440\u0435\u0441\u0430\u043c, \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0435\u0442\u0438 Docker.\u0415\u0441\u043b\u0438 \u0443\u00a0\u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u0441\u0435\u043a\u0446\u0438\u044f [runners.docker], \u0432\u00a0\u043d\u0435\u0439 \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c network_mode = &#171;host&#187;, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u0441\u0435\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 gitlab\u2011runner \u0438 \u043c\u043e\u0433\u043b\u0438 \u043e\u0431\u0440\u0430\u0449\u0430\u0442\u044c\u0441\u044f \u043a\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f\u043c, \u0438 extra_hosts = [&#171;gitlab:host-gateway&#187;] \u0434\u043b\u044f\u00a0\u043f\u043e\u0434\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 IP\u2011\u0430\u0434\u0440\u0435\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 \u043a\u043b\u044e\u0447\u0435\u0432\u043e\u0435 \u0441\u043b\u043e\u0432\u043e host-gateway. \u0412 \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u0444\u0430\u0439\u043b \u0431\u0443\u0434\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c:concurrent = 1check_interval = 0shutdown_timeout = 0[session_server]  session_timeout = 1800[[runners]]  name = &#171;684cccc2538a&#187;  url = &#171;http:\/\/gitlab\/&#187;  clone_url = &#171;http:\/\/gitlab\/&#187;  id = 3  token = &#171;your-token-here&#187;  token_obtained_at = 2026-07-05T21:25:19Z  token_expires_at = 0001-01-01T00:00:00Z  executor = &#171;docker&#187;  [runners.cache]    MaxUploadedArchiveSize = 0    [runners.cache.s3]      AssumeRoleMaxConcurrency = 0    [runners.cache.gcs]    [runners.cache.azure]  [runners.docker]    tls_verify = false    image = &#171;some-image:lastes&#187;    network_mode = &#171;host&#187;    extra_hosts = [&#171;gitlab:host-gateway&#187;]    privileged = false    disable_entrypoint_overwrite = false    oom_kill_disable = false    disable_cache = false    volumes = [&#171;\/cache&#187;]    volume_keep = false    shm_size = 0    network_mtu = 0\u041f\u043e\u0441\u043b\u0435 \u0432\u0441\u0435\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0432\u00a0\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0444\u0430\u0439\u043b\u0438\u043a .gitlab-ci.yml:# .gitlab-ci.yml# \u041f\u0440\u043e\u0441\u0442\u0430\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u0438 Runner# ==================== \u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 Runner ====================runner-health-check:  stage: .pre  tags:    &#8212; your-runner-tag           # \u2190 \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u0442\u0435\u0433 \u0432\u0430\u0448\u0435\u0433\u043e \u0440\u0430\u043d\u043d\u0435\u0440\u0430 (\u0438\u043b\u0438 \u0443\u0431\u0435\u0440\u0438\u0442\u0435, \u0435\u0441\u043b\u0438 untagged)  script:    &#8212; echo &#171;Runner work!&#187;    &#8212; echo &#171;CI_COMMIT_SHA $CI_COMMIT_SHA&#187;    &#8212; echo &#171;CI_PIPELINE_ID $CI_PIPELINE_ID&#187;    &#8212; echo &#171;Runner hostname $(hostname)&#187;    &#8212; uname -a    &#8212; cat \/etc\/os-release || echo &#171;OS info not available&#187;    &#8212; echo &#171;Docker allowed?&#187; &amp;&amp; (docker &#8212;version &amp;&amp; echo &#171;Docker work&#187; || echo &#171;Docker not found&#187;)    &#8212; echo &#171;Check success complete!&#187;  artifacts:    paths:      &#8212; runner-check.log    when: always  after_script:    &#8212; echo &#171;Runner health check finished at $(date)&#187; &gt; runner-check.log\u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0434\u043b\u044f\u00a0\u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0436\u0438\u0432\u00a0\u043b\u0438 \u0443\u00a0\u043d\u0430\u0441 runner \u0432\u00a0\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435. \u0415\u0441\u043b\u0438 \u043e\u043d \u043f\u0440\u043e\u0448\u0451\u043b, \u0437\u043d\u0430\u0447\u0438\u0442, \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043d\u0435\u00a0\u0431\u0443\u0434\u0435\u0442. \u0415\u0441\u043b\u0438 \u043f\u043e\u044f\u0432\u0438\u043b\u0438\u0441\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u0447\u0430\u0449\u0435 \u0432\u0441\u0435\u0433\u043e \u043e\u043d\u0438 \u0441\u0432\u044f\u0437\u0430\u043d\u044b \u0441\u00a0SELinux. \u0427\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0442\u0430\u043a\u00a0\u043b\u0438 \u044d\u0442\u043e, \u0432\u00a0\u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0432\u0432\u0435\u0434\u0438\u0442\u0435 sudo setenforce 0 \u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.\u0412\u00a0\u043a\u043e\u043d\u0435\u0447\u043d\u043e\u043c \u0438\u0442\u043e\u0433\u0435 \u0443\u00a0\u043d\u0430\u0441 \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442: runner-check.log \u0433\u043e\u0432\u043e\u0440\u044f\u0449\u0438\u0439, \u0447\u0442\u043e\u00a0\u0442\u0435\u0441\u0442 \u043f\u0440\u043e\u0439\u0434\u0435\u043d \u0443\u0441\u043f\u0435\u0448\u043d\u043e.\u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0438 \u0432\u044b\u0432\u043e\u0434\u0412\u00a0\u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0432\u0441\u0435\u0445 \u044d\u0442\u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439 \u0443\u00a0\u043d\u0430\u0441 \u0435\u0441\u0442\u044c Gitlab \u0438 \u0442\u0430\u043a\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0435 Runners \u0434\u043b\u044f\u00a0\u0437\u0430\u043f\u0443\u0441\u043a\u0430 pipeline \u043d\u0430\u00a0\u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435. \u0427\u0442\u043e\u00a0\u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u043b\u044f\u00a0\u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u0433\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u044f DevOps \u0438\u043b\u0438\u00a0QA\u2011\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0439, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441\u00a0\u0440\u0430\u0431\u043e\u0442\u043e\u0439 \u0447\u0435\u0440\u0435\u0437 Gitlab.\u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-487071","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/487071","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=487071"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/487071\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=487071"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=487071"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=487071"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}