Проблема в том, что ssh-keygen пока недоступен в вашем контейнере. Это можно легко решить, например, установив пакет openssl-client в базовый образ ubuntu.
Следующий файл Dockerfile делает именно это и помещает ключ в корневую папку контейнера.
FROM ubuntu:latest
RUN apt-get -y install openssh-client
RUN ssh-keygen -q -t rsa -N '' -f /id_rsa
НО ПРОЧИТАЙТЕ: Я настоятельно рекомендую не помещать ключи и сертификаты вообще в файловую систему контейнера! Это может привести к серьезным рискам безопасности, поскольку практически любой, кто получает образ контейнера, может аутентифицировать себя в службах, для которых действует ключ; он заставляет вас обращаться с образами контейнеров с той же осторожностью, что и с криптографическими ключами и сертификатами!
Следовательно, желательно хранить ключи вне контейнера. Этого легко добиться с помощью Docker VOLUMES; и вы просто монтируете том, содержащий ключи / контейнеры, в контейнер Docker при его запуске.
СОЗДАНИЕ КЛЮЧЕЙ ВНЕ КОНТЕЙНЕРА В следующем файле Docker вместо этого создается ключ после запуска контейнера, и его можно использовать для создания ключа вне файловой системы контейнера.
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.
person
eliasw
schedule
16.12.2014