#macos #docker #ssh #docker-compose #macos-big-sur
Вопрос:
Я использую docker-compose и у меня есть контейнер, который извлекается из некоторых частных репозиториев git, поэтому мне нужно перенаправить SSH-агент хоста в этот контейнер. При разработке на машине с Ubuntu 20.04 я использую эту конфигурацию, и она работает просто идеально:
services:
the_service:
...
environment:
# NOTE set to a path where we mount host's ssh auth socket
SSH_AUTH_SOCK: /ssh-agent
volumes:
# NOTE mount host's ssh auth socket to be able to access private git repo
# from within container. this way container uses host's ssh keys.
- ${SSH_AUTH_SOCK}:/ssh-agent
- ./fe:/app
...
Но на машине с mac OS Big Sur я получаю ошибку внутри контейнера при извлечении: permission denied (public key) check if you have correct access rights
. Я провел некоторое расследование и обнаружил, что при выполнении ssh-add -l
внутри контейнера я получаю ошибку connection refused
. Если я правильно понимаю, пересылка сокета SSH завершается сбоем и ssh-add
не может подключиться к агенту SSH.
Единственное решение, которое мне удалось найти, — это смонтировать /run/host-services/ssh-auth.sock
вместо пути, содержащегося в переменной SSH_AUTH_SOCK
среды, но проблема в том, что /run
в моей Mac OS нет каталога…
Как решить эту проблему? Может ли кто-нибудь подтвердить, что перенаправление SSH-сокета в docker на mac OS Big Sur работает?
Комментарии:
1. Оказывается, монтирование
/run/host-services/ssh-auth.sock
работает, потому что, хотя путь не существует в файловой системе хоста, он действует как своего рода волшебная инструкция для docker, и затем он знает, что делать.