2015-09-19 15 views
6

Mam prosty Dockerfile, dokładnie tak, jak poniżej:ssh-keyscan nie znaleziono w 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 

Wynik biegu:

docker build -no-cache -t testimage . 

jest:

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

Odpowiedz

14

byś musisz najpierw zainstalować ssh.

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

Następnie różne polecenia ssh, w tym ssh-keyscan, byłyby dostępne. To jest to, co zrobiłem w moim sshd image Dockerfile.
Użyłem go do add localhost to my .ssh/known_hosts, aby wykonać test lokalnie na serwerze sshd.

Jak commented below przez pjotr-dolphin:

Jeśli jesteś tylko po ssh-keyscan, openssh-client ma mniejszą powierzchnię niż pakiet ssh.

+0

Świetnie! Nie przyszło mi do głowy, że ssh nie jest jeszcze zainstalowany. Ale biorąc pod uwagę, że ssh w dockingu wydaje się być anty-praktyką, przypuszczam, że ma to sens. Dzięki! – KevinArrrrrg

+1

@KevinArrrrrg tak, aby uzyskać dostęp do uruchomionego kontenera z hosta silnika dokera, wystarczy 'docker exec bash'. Ale aby uzyskać dostęp do działającego kontenera z innego komputera, ssh jest prawowitym słuchaczem, który musi być zainstalowany. – VonC

+2

Jeśli jesteś tylko po ssh-keyscan, klient openssh ma mniejszą powierzchnię niż pakiet ssh. –