Ответ 1
Проблема в том, что ssh-keygen пока недоступен в вашем контейнере. Это можно легко решить, например, установив пакет openssl-client на базовое изображение ubuntu.
Следующий файл Docker делает именно это и помещает ключ в корневую папку контейнера
FROM ubuntu:latest
RUN apt-get -y install openssh-client
RUN ssh-keygen -q -t rsa -N '' -f /id_rsa
НО ПРОЧИТАЙТЕ ЭТО: Мой сильный совет - не размещать ключи, сертификаты вообще в файловой системе контейнера вообще! Это может привести к сильным угрозам безопасности, поскольку по существу каждый, кто получает изображение контейнера, может аутентифицироваться в сервисах, для которых действителен ключ; он заставляет вас обрабатывать изображения контейнеров с такой же осторожностью, что и для криптографических ключей и сертификатов.
Следовательно, желательно хранить ключи вне контейнера. Этого можно легко достичь, используя Docker VOLUMES; и вы просто устанавливаете клавиши хранения/контейнеры с томом в контейнер Docker при его запуске.
СОЗДАНИЕ КЛЮЧЕЙ ВНЕ КОНТЕЙНЕРА Следующий Dockerfile вместо этого создает ключ после запуска контейнера и может использоваться для создания ключа вне файловой системы контейнера.
FROM ubuntu:latest
RUN apt-get -y install openssh-client
CMD ssh-keygen -q -t rsa -N '' -f /keys/id_rsa
Сначала создайте контейнер со следующей командой:
docker build -t keygen-container .
Запуск контейнера с помощью
docker run -v /tmp/:/keys keygen-container
создаст ключ на хосте в/tmp.