簡體   English   中英

無法(apt-get)在 docker 中安裝軟件包

[英]Cannot (apt-get) install packages inside docker

我安裝了 ubuntu 14.04 虛擬機並運行 docker(1.11.2)。 我嘗試構建示例圖像(此處)。

泊塢窗文件:

FROM java:8 

# Install maven
RUN apt-get update  
RUN apt-get install -y maven
....

我收到以下錯誤:

Step 3: RUN apt-get update
 --> Using cache
 --->64345sdd332
Step 4: RUN apt-get install -y maven
 ---> Running in a6c1d5d54b7a
Reading package lists...
Reading dependency tree...
Reading state information...
E: Unable to locate package maven
INFO[0029] The command [/bin/sh -c apt-get install -y maven] returned a non-zero code:100

在此處輸入圖片說明

以下解決方案我嘗試過,但沒有成功。

  1. 在這里重新啟動docker

  2. 這里運行apt-get -qq -y install curl :同樣的錯誤 :(

如何查看詳細的錯誤信息? 有什么方法可以解決這個問題?

您可能需要在 docker 內部更新 os

嘗試先運行apt-get update ,然后apt-get install xxx

apt-get update的緩存結果可能非常陳舊。 根據 Docker 最佳實踐重新設計包拉取:

FROM java:8 

# Install maven
RUN apt-get update \
 && DEBIAN_FRONTEND=noninteractive \
    apt-get install -y maven \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/*  

基於我遇到的類似問題,您希望同時查看可能的網絡問題和可能的圖像相關問題。

  • 網絡問題:您已經在查看與代理相關的內容。 確保由 docker 自動完成的 iptables 設置沒有被您或其他應用程序無意中弄亂。 通常,如果另一個 docker 容器使用 net=host 選項運行,這可能會導致問題。

  • 圖像問題:您在容器中運行的發行版不是 Ubuntu 14.04,而是構建 java:8 的發行版。 如果您從 docker hub 上的官方庫中獲取了 java 圖像,那么您將擁有最初來自 Debian jessie 的圖像層次結構。 您可能希望查看此層次結構中的不同 Dockerfile,以找出 repo 設置不是您正在查看的位置。

對於這兩種情況,要對此進行調試,我建議您在最新映像中運行一個 shell,以查看映像中的實際網絡和存儲庫情況。 在你的情況下

docker run -ti --rm 64345sdd332 /bin/bash

在運行 install maven 命令之前為您提供一個 shell。

我目前在代理后面工作。 它無法下載某些依賴項。 為此,您必須在 docker 文件中提及代理配置。 參考

但是,現在我由於代理而面臨運行"mvn", "dependency:resolve"困難,maven 本身阻止下載一些依賴項並且構建失敗。

感謝小伙伴們的大力支持!

在單個 RUN 指令中執行“apt-get update”和“apt-get install”。 這樣做是為了確保安裝最新的軟件包。 如果 'apt-get install' 在單獨的 RUN 指令中,那么它會重用由 'apt-get update' 添加的層,這可能是很久以前創建的。

RUN apt-get update && \
    apt-get install -y <tool..eg: maven>

注意:RUN 指令通過在初始鏡像之上添加層來構建鏡像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM