#docker
#docker
Вопрос:
Я хотел бы использовать контекст docker для связи с сервером через ssh. У меня есть несколько разных ключей ssh на моем локальном компьютере. Как мне указать контексту использовать определенный ключ? Я пробовал:
docker context create test --docker "host=ssh://<username>@<ip-of-server>,key=C:/path/to/key"
но без кубиков, он всегда запрашивает пароль. Есть ли способ указать контексту docker, какой ключ ssh использовать?
Комментарии:
1. Вы активировали созданный контекст?
docker context ls
тогдаdocker context use <context-name>
?2. Да, иначе он не запрашивал бы мой пароль при выполнении команд, верно? Примером является
docker --context=test service ls
Ответ №1:
Ключ, который вы пытаетесь использовать в приведенном вами примере, относится к ключу TLS.
Docker использует ваш локальный SSH-агент. Любые ключи, загруженные в ваш агент, будут доступны для подключения:
- если его еще нет, установите SSH-агент;
- сгенерируйте пару ключей SSH;
- добавьте закрытый ключ к агенту SSH на компьютере, с которого вы хотите выполнять команды docker;
- добавьте открытый ключ на целевой хост-машине Docker в
<username-home>/.ssh/authorized_keys
- теперь попробуйте обычный SSH на целевом хосте Docker (
ssh <username>@<ip-of-server>
). Примите отпечаток пальца. Если у вас не запрашивают пароль, docker также не будет запрашивать его.
Создайте и активируйте контекст docker, затем запустите фиктивную команду docker:
docker context create test --docker "host=ssh://<username>@<ip-of-server>"
docker context use test
docker ps
Комментарии:
1. Это немного более раздражает, чем просто возможность указать атрибут -i для использования, но это сработало. Спасибо!
2. Справедливости ради, вы также можете настроить ключ (и многие другие параметры) в
~/.ssh/config
или/etc/ssh/ssh_config
(или их эквивалентах Windows, если вы не используете Linux): ssh.com/ssh/config . Это будет работать с Docker CLI, но не с docker-compose или vscode docker plugin (и, возможно, другими), хотя разработчики говорят, что в конечном итоге они это реализуют.3. У меня это не сработало > Предупреждение: переменная среды DOCKER_HOST переопределяет активный контекст. Чтобы использовать «test», либо установите флаг global —context, либо снимите значение переменной среды DOCKER_HOST
4. У меня это тоже не сработало — я получаю «Не удается подключиться к демону Docker в docker.example.com . Запущен ли демон docker?» сообщение об ошибке при попытке подключения по SSH