При работе с GitLab CI/CD может возникнуть ситуация, когда вы сталкиваетесь с ошибкой "Permission Denied при доступе к docker.sock". Она указывает на проблемы с доступом к Docker-демону, которые могут быть из-за неправильной конфигурации или настроек окружения. В данной статье рассмотрим причины этой ошибки и как её можно исправить.
Ошибка может выглядеть так:
$ docker compose -f docker-compose.yml down
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.config-hash%22%3Atrue%2C%22com.docker.compose.oneoff%3DFalse%22%3Atrue%2C%22com.docker.compose.projec%22%3Atrue%7D%7D": dial unix /var/run/docker.sock: connect: permission denied
Она указывает на недостаток прав доступа. Убедитесь, что GitLab Runner имеет доступ к Docker Daemon. Для этого можно добавить пользователя, под которым запускается GitLab Runner, в группу docker:
sudo usermod -aG docker user-name
Перезапустите GitLab Runner, чтобы изменения вступили в силу:
sudo systemctl restart gitlab-runner
Также перезапустите Docker:
sudo systemctl restart docker
Убедитесь, что GitLab Runner настроен на использование shell executor и запускает команды от имени правильного пользователя.
[[runners]]
name = "Your Runner"
url = "https://gitlab.com/"
token = "YOUR_TOKEN"
executor = "shell"
Убедитесь, что владелец и группа владельцев файла docker.sock
позволяют доступ текущему пользователю или группе, от которой запущена команда Docker Compose.
ls -l /var/run/docker.sock
Результат должен выглядеть примерно так:
srw-rw---- 1 root docker 0 Jun 29 10:00 /var/run/docker.sock
0 комментариев