В java, \n
всегда генерирует символ \u000A
linefeed. Чтобы получить правильный разделитель строк для конкретной платформы, используйте %n
.
Поэтому используйте \n
, когда вы уверены, что вам нужен символ \u000A
linefeed, например, в сети. Во всех других ситуациях используйте %n
API-интерфейс демона Docker может быть связан с использованием конечных точек HTTP и по умолчанию прослушивает сокет UNIX. Это означает, что вы можете общаться с ним, как с любым обычным HTTP-сервером, с небольшой дополнительной обработкой, когда это сокет.
Вы получаете сообщение об ошибке, поскольку, отправляя запрос в сокет, вы запрашиваете неверный путь. Синтаксис запроса:
PROTOCOL://unix:SOCKET_PATH:ENDPOINT_PATH
Для вашего кода это означает:
const data = await got('unix:/var/run/docker.sock:/var/run/docker.sock')
// protocol = http (default by library)
// socket path = /var/run/docker.sock
// endpoint path = /var/run/docker.sock
Чтобы исправить проблему, вам следует запросить действительную конечную точку API Docker Engine ( документация для v1.39 ) в качестве пути HTTP. Пример списка контейнеров:
await got('unix:/var/run/docker.sock:/containers/json')
Если у вас есть curl
под рукой, вы можете проверить это из вашей оболочки:
$ curl --unix-socket /var/run/docker.sock http://containers/json