2015-04-02 72 views
2

我正在嘗試在我的ubuntu:14.04映像中安裝'sl'軟件包。這裏是我的Dockerfile的內容:使用Docker在ubuntu映像中安裝庫

FROM ubuntu:14.04 
MAINTAINER xyz <[email protected]> 
RUN echo 'Going to install sl now' 
RUN apt-get install -y sl 

這是我使用來構建圖像的命令:

sudo docker build -t xyz/ubuntu:14.04 . 

但我收到此錯誤信息:

Sending build context to Docker daemon 2.048 kB 
Sending build context to Docker daemon 
Step 0 : FROM ubuntu:14.04 
---> d0955f21bf24 
Step 1 : MAINTAINER xyz <[email protected]> 
---> Using cache 
---> a6e08926e788 
Step 2 : RUN echo 'Going to install sl now' 
---> Using cache 
---> 1bf0bc6b3092 
Step 3 : RUN apt-get install -y sl 
---> Running in f7e57167443f 
Reading package lists... 
Building dependency tree... 
Reading state information... 
E: Unable to locate package sl 
INFO[0004] The command [/bin/sh -c apt-get install -y sl] returned a non-zero code: 100 

我哪裏錯了?

回答

3

你需要運行apt-get update例如:

RUN apt-get update && apt-get install -y sl 

你也可以收拾後自己節省一點磁盤空間:

RUN apt-get update && apt-get install -y sl && rm -r /var/lib/apt/lists/* 
+0

謝謝...它的工作原理。但你能解釋最後的命令嗎?我們爲什麼要刪除列表? – gonephishing 2015-04-03 07:02:11

+0

正如我所說的「節省一點磁盤空間」。我們不再需要它們,所以它們無緣無故地膨脹了圖像。 – 2015-04-03 08:10:30

+0

它不會被自動刪除,因爲當我嘗試運行另一個Dockerfile來在同一圖像上安裝「樹」包時,它給出了相同的錯誤,直到我添加了apt-get更新部分 – gonephishing 2015-04-03 17:49:26

1

您需要在您的本地Ubuntu的存儲庫更新指標在安裝任何其他包之前。要做到這一點,正確的做法是:

RUN apt-get update 
RUN apt-get install -y <package-name> 

阿德里安在他的回答中提到刪除下載的列表可以用來保存在磁盤上的一些空間。當您將圖像推回集線器時,這特別有用。