netstat показывает подключенный сокет с путем к нему, но путь не существует

Я внутри контейнера докера и побежал netstat -x | grep dockerкоторый получил меня:

unix  3      [ ]         STREAM     CONNECTED     62288711 /var/run/docker.sock
unix  3      [ ]         STREAM     CONNECTED     59416957 /var/run/docker.sock
unix  3      [ ]         STREAM     CONNECTED      52070 /var/run/dockershim.sock
unix  3      [ ]         STREAM     CONNECTED      52071 /var/run/dockershim.sock
unix  3      [ ]         STREAM     CONNECTED      51987 /var/run/docker.sock
unix  3      [ ]         STREAM     CONNECTED     63299168 /var/run/docker.sock
unix  3      [ ]         STREAM     CONNECTED      52649 /var/run/docker.sock
unix  3      [ ]         STREAM     CONNECTED      42851 /var/run/docker/libcontainerd/docker-containerd.sock

Но когда я хочу получить доступ /var/run/docker.sock или даже /var/run я получил

ls: /var/run/: нет такого файла или каталога

Является ли это каким-то механизмом безопасности, например, возможностью, которую отбрасывают? Интересно, почему netstat может указывать на такой путь, пока его нет даже там? Есть ли другой способ получить доступ к этому сокету, так как он должен быть каким-то образом?

1 ответ

Решение

Выполнение этой команды в Docker-контейнере показывает вам информацию о сокетах во всей системе (не только внутри вашего контейнера). Эта информация доступна для процессов контейнера через /proc/net/unix и другие подобные файлы, которые использует netstat. Следовательно /var/run/... в выводе netstat указан глобальный путь в вашей системе, недоступный для этого конкретного контейнера.

Другие вопросы по тегам