docker Ubuntuイメージ内にパッケージをインストールできない


289

ドッカーにUbuntu 14.04イメージをインストールしました。その後、ubuntuイメージ内にパッケージをインストールしようとすると、パッケージエラーが見つかりません。

apt-get install curl

Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package curl

このエラーを修正する方法は?

回答:


621

これは、イメージにパッケージキャッシュがないためです。実行する必要があります。

apt-get update

パッケージをインストールする前に、コマンドがDockerfileにある場合は、次のものが必要です。

apt-get -y install curl

コマンドからの標準出力を抑制するには、を使用します-qq。例えば

apt-get -qq -y install curl

1
これは私にとってはうまくいきます。-qqをいつでも実行する必要があります
Developer

6
-qq Dockerfileで通常必要としない出力を抑制します。もう1つの便利なトリック-非インタラクティブ環境で機能していることをdebconfに伝えます。debconf-set-selections
ISanych

7
何らかの理由でこれは私にとっては機能しませんが、同じ「E:パッケージを見つけることができません..」というメッセージ
tblancog

「apt-get-update」と「apt-get install curl」は正常に機能しました。
シンドゥ

このエラーは、Dockerがスペース不足になったときにも発生することがわかりました。私はdocker image pruneスペースを空けるために走りました、そしてそれは私のためにそれを修正しました。
ジョナサン・リス

123

以下からのドキュメントの中で5月2017年 2018年 2019年 2020

常に組み合わせるRUN apt-get updateapt-get install同じで RUN、たとえば、声明

RUN apt-get update && apt-get install -y package-bar

(...)

ステートメントapt-get updateで単独で使用すると、RUNキャッシュの問題が発生し、後続のapt-get install命令が失敗します。

(...)

を使用RUN apt-get update && apt-get install -yすると、コーディングや手動による介入なしで、Dockerfileが最新のパッケージバージョンを確実にインストールできます。この手法は「キャッシュの無効化」と呼ばれます。



4

Dockerfileに構文エラーがないことを確認してください。これにより、このエラーも発生する可能性があります。正しい例は次のとおりです。

RUN apt-get update \
    && apt-get -y install curl \
    another-package

構文エラーの修正と追加の組み合わせでapt-get update問題が解決しました。


1

ローカルボリュームを/ tmpにマウントすると、「apt-get update」の実行時に権限の問題が発生し、パッケージキャッシュにデータが入力されないことがわかりました。うまくいけば、これはほとんどの人が行うことではありませんが、この問題が発生した場合に探す必要があるものです。


-3

Ubuntuのパッケージリストを更新する必要があります。

$ sudo apt-get update
$ sudo apt-get install <package_name>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.