問題は、コンテナーで 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 コンテナにマウントするだけです。
コンテナ外でのキーの作成 次の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 にキーを作成します。