2015-09-19 11 views
6

では見られない、私は正確に以下のように、簡単なDockerfileを持っている:のssh-キースキャンDockerfile

FROM ubuntu:14.04 

RUN apt-get update 
RUN apt-get -y upgrade 

RUN mkdir -p /root/.ssh 
RUN touch /root/.ssh/known_hosts 

RUN ssh-keyscan github.com >> /root/.ssh/known_hosts 

ランニングの結果:

docker build -no-cache -t testimage . 

は次のとおりです。

Step 5 : RUN ssh-keyscan github.com >> /root/.ssh/known_hosts 
---> Running in e11ef5962a11 
/bin/sh: 1: ssh-keyscan: not found 

答えて

14

あなたはでしょうまずsshをインストールする必要があります。

RUN apt-get -yq update && \ 
    apt-get -yqq install ssh 

次に、ssh-keyscanを含むさまざまなsshコマンドを使用できます。

これは私がsshd image Dockerfileで行ったことです。
sshdサーバでローカルにテストを行うために、add localhost to my .ssh/known_hostsに使用しました。 pjotr-dolphinによってcommented belowとして

あなただけssh-keyscan後であれば、openssh-clientはsshパッケージよりも小さなフットプリントを持っています。

+0

素晴らしい! sshがまだインストールされていないということは私には起こりませんでした。しかし、sshがドッカーに入っていることを考えると、反例があるように思えますが、それは理にかなっていると思います。ありがとう! – KevinArrrrrg

+1

@KevinArrrrrgはい、ドッカーエンジンホストから実行中のコンテナにアクセスするだけで、 'docker exec bash'で十分です。しかし、実行中のコンテナに別のマシンからアクセスするためには、sshは正当なリスナーであり、インストールする必要があります。 – VonC

+2

ssh-keyscanの後にのみ存在する場合、openssh-clientはsshパッケージよりも小さいフットプリントを持ちます。 –