2015-09-19 14 views
6

Ho una semplice Dockerfile, esattamente come di seguito:ssh-KeyScan non si trovano in 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 

Il risultato della corsa:

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 

risposta

14

Lo faresti è necessario installare ssh prima.

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

Poi, i vari comandi SSH, tra ssh-keyscan, sarebbero disponibili.

Questo è quello che ho fatto nel mio sshd image Dockerfile.
L'ho usato su add localhost to my .ssh/known_hosts per fare qualche test localmente sul server sshd.

Come commented below da pjotr-dolphin:

Se siete solo dopo ssh-keyscan, openssh-client ha dimensioni più piccole di pacchetto ssh.

+0

Ottimo! Non mi è venuto in mente che ssh non fosse già installato. Ma dato che ssh nella docker sembra essere una anti-pratica, suppongo abbia senso. Grazie! – KevinArrrrrg

+1

@KevinArrrrrg sì, per accedere semplicemente a un contenitore in esecuzione dall'host del motore docker, è sufficiente una 'docket exec bash'. Ma per accedere a un contenitore in esecuzione da un'altra macchina, ssh è un ascoltatore legittimo, che però deve essere installato. – VonC

+2

Se si è solo dopo ssh-keyscan, openssh-client ha un ingombro inferiore rispetto al pacchetto ssh. –

Problemi correlati