Tidak dapat menginstal paket di dalam Docker image Ubuntu

289

Saya menginstal Ubuntu 14,04 gambar di buruh pelabuhan. Setelah itu, ketika saya mencoba menginstal paket di dalam gambar ubuntu, saya tidak dapat menemukan kesalahan paket:

apt-get install curl

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

Bagaimana cara memperbaiki kesalahan ini?

Pengembang
sumber

Jawaban:

621

Karena tidak ada cache paket dalam gambar, Anda perlu menjalankan:

apt-get update

sebelum menginstal paket, dan jika perintah Anda ada di Dockerfile, Anda perlu:

apt-get -y install curl

Untuk menekan output standar dari penggunaan perintah -qq. Misalnya

apt-get -qq -y install curl
ISanych
sumber
1
ini bekerja untuk saya, haruskah saya menjalankan -qq untuk semua waktu
Pengembang
6
-qq menekan output yang biasanya tidak Anda butuhkan di Dockerfile. Trik bagus lainnya - beri tahu debconf bahwa ia berfungsi di lingkungan non-interaktif: echo 'debconf debconf / frontend pilih Noninteractive' | debconf-set-
choices
7
Untuk beberapa alasan ini tidak berfungsi untuk saya, masih sama "E: Tidak dapat menemukan paket .." pesan
tblancog
"apt-get-update" dan "apt-get install curl" bekerja dengan baik!
Sindhu
Saya menemukan bahwa kesalahan ini juga terjadi di buruh pelabuhan ketika kehabisan ruang. Saya berlari docker image pruneuntuk membebaskan ruang dan itu diperbaiki untuk saya.
Jonathan Rys
123

Dari dokumen pada bulan Mei2017 2018 2019 2020

Selalu gabungkan RUN apt-get updatedengan apt-get installdalam RUNpernyataan yang sama , misalnya

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

(...)

Menggunakan apt-get updatesendirian dalam RUNpernyataan menyebabkan masalah caching dan apt-get installinstruksi selanjutnya gagal.

(...)

Menggunakan RUN apt-get update && apt-get install -ymemastikan Dockerfile Anda menginstal versi paket terbaru tanpa pengkodean lebih lanjut atau intervensi manual. Teknik ini dikenal sebagai "penghilang cache".

creimers
sumber
14

Tambahkan perintah berikut di Dockerfile:

RUN apt-get update
Gourav Singla
sumber
4

Pastikan Anda tidak memiliki kesalahan sintaks di Dockerfile Anda karena ini dapat menyebabkan kesalahan ini juga. Contoh yang benar adalah:

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

Itu kombinasi memperbaiki kesalahan sintaks dan menambahkan apt-get updateyang memecahkan masalah bagi saya.

Connor
sumber
1

Saya menemukan bahwa pemasangan volume lokal lebih dari / tmp dapat menyebabkan masalah izin ketika "apt-get update" berjalan, yang mencegah cache paket tidak terisi. Mudah-mudahan, ini bukan sesuatu yang dilakukan kebanyakan orang, tetapi itu sesuatu yang lain untuk dicari jika Anda melihat masalah ini.

Groboclown
sumber
-3

Anda perlu memperbarui daftar paket di Ubuntu Anda:

$ sudo apt-get update
$ sudo apt-get install <package_name>
banteng tanpa nama
sumber