2015-09-19 16 views
6

Tôi có một Dockerfile đơn giản, chính xác như sau:ssh-keyscan không tìm thấy trong 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 

Kết quả của việc chạy:

docker build -no-cache -t testimage . 

là:

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

Trả lời

14

Bạn sẽ cần cài đặt ssh trước.

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

Sau đó, các lệnh ssh khác nhau, bao gồm ssh-keyscan, sẽ khả dụng.

Đó là những gì tôi đã làm trong số sshd image Dockerfile.
Tôi đã sử dụng nó để add localhost to my .ssh/known_hosts để thực hiện một số thử nghiệm cục bộ trên máy chủ sshd.

Như commented below bởi pjotr-dolphin:

Nếu bạn chỉ sau ssh-keyscan, openssh-client có dấu chân nhỏ hơn gói ssh.

+0

Tuyệt vời! Nó đã không xảy ra với tôi rằng ssh đã không được cài đặt. Nhưng cho rằng ssh vào docker có vẻ là một thực hành chống, tôi cho rằng điều đó có ý nghĩa. Cảm ơn! – KevinArrrrrg

+1

@KevinArrrrrg có, chỉ cần truy cập vào thùng chứa đang chạy từ máy chủ lưu trữ của trình docker, một 'docker exec bash' là đủ. Nhưng để truy cập vào một thùng chứa đang chạy từ một máy khác, ssh là một trình lắng nghe hợp pháp, bạn phải cài đặt nó. – VonC

+2

Nếu bạn chỉ sau ssh-keyscan, openssh-client có dấu chân nhỏ hơn gói ssh. –