2015-04-28 16 views
11

Używam obrazu nginx opartego na dockerfile/ubuntu. Na dołączenie do skorupy pojemnika Döcker zaBłąd dokowania: nie można zlokalizować pakietu git

docker exec -it <container_id> /bin/bash 

chcę zrobić git pull więc próbowałem instalacji git ale apt jest w stanie znaleźć pakiet:

[email protected]:/# apt-get install git 
Reading package lists... Done 
Building dependency tree  
Reading state information... Done 
E: Unable to locate package git 

Jak możemy zainstalować git z tego obrazu i dlaczego go brakuje?


kot /etc/apt/sources.list

deb http://httpredir.debian.org/debian wheezy main 
deb http://httpredir.debian.org/debian wheezy-updates main 
deb http://security.debian.org wheezy/updates main 
deb http://nginx.org/packages/mainline/debian/ wheezy nginx 

kota /etc/apt/sources.list.d/*

cat: /etc/apt/sources.list.d/*: No such file or directory 

apt cache madison git

N: Unable to locate package git 
+0

'root @ ....' jesteś już superużytkownikiem, więc sudo nie istnieje afaik. – Sean

+0

@SeanKenny dzięki, pozwól mi przeformułować pytanie – Nyxynyx

+1

pokaż 'cat/etc/apt/sources.list',' cat/etc/apt/sources.list.d/* 'i' apt-cache madison git' dla celów diagnostycznych. –

Odpowiedz

29

Dzieje się tak, ponieważ repozytorium apt nie zostało jeszcze zaktualizowane. Powszechną praktyką jest czyszczenie swoich repozytoriów apt i plików tmp po utworzeniu obrazu, który prawdopodobnie wykonuje Twój podstawowy obraz.

Aby rozwiązać ten problem, będziesz chciał uruchomić apt-get update przed zainstalowaniem git, jest to dobra praktyka, aby połączyć aktualizację i zainstalować polecenia w tym samym czasie do biustu pamięci podręcznej na aktualizację jeśli linia zainstalować zmienia:

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

Użycie -y wygodnie odpowiada automatycznie na wszystkie pytania.

+0

Dzięki, że działa! Btw, jak wyczyścimy pliki apt repo i tmp, jeśli chcemy zbudować nowy obraz? – Nyxynyx

+0

Na końcu twojego Dockerfile, coś takiego: 'RUN apt-get clean && rm -rf/var/lib/apt/lists/*/tmp/*/var/tmp/*' – Michael

+0

Po prostu uwaga tutaj, czyszczenie repozytoria nie pomagają w wielkości obrazu, chyba że wyczyścisz tę samą warstwę (polecenie), aby dodać pliki. btrfs będzie przechowywać warstwy ze wszystkimi plikami – Michael

Powiązane problemy