2016-11-21 604 views
2

我試圖在docker中創建一個容器;它通常工作得很好,但我突然遇到了一個我知道如何解決的問題。無法在Docker容器中找到軟件包apt-get

FROM ubuntu:14.04 

RUN apt-get update && \ 
    apt-get upgrade -y \ 
    apt-get install -y openssh-server && \ 
    mkdir /var/run/sshd 

RUN echo root:root | chpasswd 
EXPOSE 22 
CMD ["/usr/sbin/sshd", "-D"] 

當它到達apt-get的更新將引發以下錯誤:

  • E:無法找到包apt-get的
  • E:無法找到軟件包安裝

如果圖像是基於標準的ubuntu 14.04,這可能會怎樣?

+0

嘗試運行sudo易於得到更新 –

+3

你缺乏2 &&在您的Dockerfile中 – user2915097

+0

Sudo的確是這個問題。不知道這是必需的。謝謝@charantej –

回答

5

你沒有結束你的apt-get的升級與&&所以它試圖在以下行安裝「包」命令。我喜歡把我的&&在每一行的開頭,因爲它更容易讓我看到發生這種情況時(並使得複製/粘貼更容易一些):

FROM ubuntu:14.04 

RUN apt-get update \ 
&& apt-get upgrade -y \ 
&& apt-get install -y \ 
     openssh-server \ 
&& mkdir /var/run/sshd 

RUN echo root:root | chpasswd 
EXPOSE 22 
CMD ["/usr/sbin/sshd", "-D"] 
+1

感謝您的回答。我的問題現在感覺就像我有史以來最大的腦力激盪。 –

0

這是有效的。

FROM ubuntu 
RUN apt-get update -y 
RUN apt-get upgrade -y 
RUN apt-get install -y openssh-server 
RUN mkdir /var/run/sshd 

RUN echo root:root | chpasswd 
EXPOSE 22 
CMD ["/usr/sbin/sshd", "-D"] 
+1

這隻能工作一次,然後幾個月後更新值將保持緩存和更改爲Dockerfile可能會導致意外的錯誤。請參閱[最佳實踐](https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#/apt-get),爲什麼不建議這樣做。 – BMitch

+0

@BMitch 謝謝,不知道。 – Xenwar

相關問題