Разрешить nginx читать docker.носок

Чтобы отслеживать мои контейнеры docker, я решил предоставить удаленный API docker через nginx по следующему правилу:

server {
    listen 1234;
    server_name xxx.xxx.xxx.xxx;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://unix:/var/run/docker.sock;
    }
}

Но в nginx.errorфайле, я получаю следующую ошибку:

connect() to unix:/var/run/docker.sock failed (13: Permission denied

Причина в том, что докер.носок находится во владении dockerгруппы, в то время как nginx работает в www-dataгруппе.

Как лучше всего решить эту проблему?

3 ответа

  1. Причина в том, что докер.носок находится в собственности docker group
    в то время как nginx работает в группе www-данных.

    Как лучше всего решить эту проблему?

    Для этой проблемы вы можете добавить userпод которым nginxработает в dockerгруппу.

    usermod -a -G www-data,docker user
    
  2. Вы можете открыть http сокет в Демоне, добавив следующий текст в ExecStart в файле конфигурации демона:

    -H <ip address>:2375
    

    Расположение файла конфигурации можно найти в выходных данных команды:

    systemctl status docker 
    
  3. Можно установить разрешение для сокета docker:

    sudo chmod a+r /var/run/docker.sock