[英]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
以下解決方案我嘗試過,但沒有成功。
如何查看詳細的錯誤信息? 有什么方法可以解決這個問題?
您可能需要在 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.