Я думаю, что у меня все правильно, но когда я проверяю доступ к сокету в контейнере, используя любой из них
docker run -v /var/run/docker.sock:/var/run/docker.sock alpine cat /var/run/docker.sock
docker run -u $(id -u):$(getent group docker | cut -d: -f3) -v /var/run/docker.sock:/var/run/docker.sock alpine cat /var/run/docker.sock
docker run -u $(id -u) --group-add $(getent group docker | cut -d: -f3) -it -v /var/run/docker.sock:/var/run/docker.sock alpine cat /var/run/docker.sock
Я получаю кошку: невозможно открыть '/var/run/docker.sock': ошибка отказа в доступе.
Теперь на моем хосте эти проверки выглядят нормально (это те проверки, которые я нашел на разных сайтах):
> ls -la /var/run/docker.sock
srw-rw---- 1 root docker 0 Nov 2 12:22 /var/run/docker.sock
(правильный владелец/группа/разрешения)
> id
uid=1000(ondra) gid=1000(ondra) groups=1000(ondra),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),100(users),118(lpadmin),991(docker)
> getent group docker
docker
> groups
ondra adm cdrom sudo dip plugdev users lpadmin docker
(мой активный пользователь хоста ondra находится в группе докеров 991)
> curl --unix-socket /var/run/docker.sock http://localhost/containers/json
[]
(от текущего пользователя на хосте я могу получить доступ к сокету без проблем)
На стороне контейнера проверка идентификатора дает:
> docker run alpine id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel),11(floppy),20(dialout),26(tape),27(video)
> docker run -u $(id -u):$(getent group docker | cut -d: -f3) alpine id
uid=1000 gid=991 groups=991
> docker run -u $(id -u) --group-add $(getent group docker | cut -d: -f3) alpine id
uid=1000 gid=0(root) groups=0(root),991
Хост-система:
> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.3 LTS
Release: 24.04
Codename: noble
> docker --version
Docker version 26.1.3, build b72abbb
Подробнее здесь: https://stackoverflow.com/questions/798 ... ion-denied
Мобильная версия