Repozytorium Docker nie ma pliku wydania podczas uruchamiania aktualizacji apt-get w systemie Ubuntu

89

Używam Ubuntu 16.10 i ostatnio zainstalowanego Dockera (v1.12.4) przy użyciu kompilacji Xenial, postępując zgodnie z instrukcjami tutaj . Nie napotkałem żadnych problemów z tworzeniem kontenerów, zapewnianiem ich automatycznego restartu itp.

Jednak teraz za każdym razem, gdy uruchamiam aktualizację apt-get , pojawia się następujący komunikat o błędzie:

W: The repository 'https://apt.dockerproject.org/repo ubuntu-xenial Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: Failed to fetch https://apt.dockerproject.org/repo/dists/ubuntu-xenial/main/binary-amd64/Packages
E: Some index files failed to download. They have been ignored, or old ones used instead.

Próbowałem rozwiązać problem, postępując zgodnie z poradami tutaj i nie wydaje się, aby rozwiązać ten problem.

Czy ktoś wcześniej to napotkał i naprawił? Jeśli tak, co jest potrzebne, aby rozwiązać ten problem?

Daniel Eagle
źródło
1
Sprawdź, czy to pomoże - askubuntu.com/questions/768569/…
Rao
@Rao niestety to nie rozwiązuje problemu. Nadal pojawia się ten sam komunikat o błędzie po usunięciu klucza, wpisie listy źródeł, ponownym uruchomieniu apt-get update, a następnie powtórzeniu kroków instalacji platformy Docker.
Daniel Eagle,
@Rao, znalazłem rozwiązanie i dodałem odpowiedź. Jednak wspomniany artykuł może być korzystny dla innych, którzy natkną się na moje pytanie, więc +1. Twoje zdrowie.
Daniel Eagle,
1
W moim przypadku poniższe odpowiedzi nie pomogły. Mój problem polegał na tym, że używałem apt-cacher-ng, który nie pośredniczył w ruchu https. github.com/moby/moby/issues/22599#issuecomment-404675734
jamshid

Odpowiedzi:

84

W Linux Mint oficjalne instrukcje nie działały dla mnie. Musiałem wejść /etc/apt/sources.list.d/additional-repositories.listi zmienić serenasię xenial.

Salami
źródło
2
Tylko uwaga, z jakiegoś powodu w tym pliku była dla mnie linia dokera, trustya druga z serena. Może jakiś czas temu próbowałem przejść przez ten sam proces i zapomniałem o tym. W każdym razie musiałem usunąć trustylinię, w przeciwnym razie narzekała na nierozwiązywalne zależności.
lobati
3
Dzięki za odniesienie do katalogu sources.list.d. Naprawiono problem z Xenialem w Ubuntu z „sudo rm /etc/apt/sources.list.d/docker*”. Teraz aktualizacja apt-get wreszcie działa.
nine9five
2
To samo dla Debiana: zamień „debian 10 stabilny” na „debian stretch stabilny” w pliku „/etc/apt/sources.list.d/docker.list” i powinno działać.
peschanko
Musiałem zmienić mój nabionic
jpthesolver2
72

W przypadku Linux Mint ten problem jest faktycznie wymieniony w pliku witrynie Docker :

Zanotuj lsb_release -cs poniższe polecenie podrzędne zwraca nazwę dystrybucji Ubuntu, na przykład xenial. Czasami w dystrybucji takiej jak Linux Mint może być konieczna zmiana $(lsb_release -cs)na nadrzędną dystrybucję Ubuntu. Na przykład, jeśli używasz Linux Mint Rafaela, możesz użyć zaufanego.

amd64:

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Plik lsb_release -csKomenda daje repozytorium dla których Docker nie ma przygotowaną paczkę - należy go zmienić na xenial.

Prawidłowe polecenie dla Linux Mint 18 opartego na Ubuntu 16.04 Xenial to

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   xenial \
   stable"
Wojowniczy szympans
źródło
1
Podane polecenie jest takie samo, jak to, które istnieje w witrynie Dockera. Jednak to nie działa dla mnie na Ubuntu 16.04. Wpis wygenerowany w sources.listto: deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stableAle wciąż ten sam problem. Chciałbym, żeby ktoś mógł wyjaśnić, dlaczego nie może znaleźć się w Releaseśrodku https://download.docker.com/linux/ubuntu/dists/xenial/stable/binary-amd64/. Smutne: Po tylu latach używania Ubuntu nadal nie mogę dowiedzieć się, jak działają ścieżki repozytorium.
Marinos An
To rozwiązało również moje problemy z wprowadzaniem zmian w nowej dystrybucji WLinux.
rainabba
22

Plaża Elliot ma rację. Dzięki, Elliot.

Oto kod z mojej istoty .

sudo apt-get remove docker docker-engine docker.io

sudo apt-get update

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
xenial \
stable"

sudo apt-get update

sudo apt-get install docker-ce

sudo docker run hello-world
Christopher Govender
źródło
2
Ostrożnie uruchamiaj te polecenia, jeśli nie używasz Xenialu. To polecenie byłoby bezpieczniejszeadd-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
spuder
W niektórych przypadkach (np. Mint) lsb_release -cszwroty, taraktóre nie mają obsługiwanej wersji, więc specjalnie nadpisywanie, xenialjak pokazano (lub sprawdzone), jest użytecznym obejściem.
Strixy
Użytkownik, formalnie znany jako Elliott Beach, będzie dalej nazywany Warlike Szympans
Wojowniczy Szympans
Twoje sedno rozwiązuje problem „E: Pakiet 'containerd.io' nie ma kandydata do instalacji” w Kubuntu eoan. Niektórzy rozwiązali to z bionikiem, ale to nie zadziałało dla mnie, podążając za twoim sednem z xenialem. Problem pojawia się, gdy używasz, $(lsb_release -cs)ponieważ nie jest w pełni obsługiwany. Inni zgłaszają, że używali takiego hacka „błędnej konfiguracji” bez żadnych problemów przez 4 miesiące i licząc ( stackoverflow.com/questions/60274857/… )
Leamsi,
17

Jak zasugerowano również w oficjalnym dokumencie dockera. Spróbuj uruchomić to:

  • sudo vi /etc/apt/sources.list

Następnie usuń / skomentuj dowolny ( deb [arch=amd64] https://download.docker.com/linux/ubuntu/ xenial stable) taki wpis w ostatnich liniach pliku.

Następnie w terminalu uruchom to polecenie:

  • sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu/ bionic stable"

  • sudo apt-get update

W moim przypadku zadziałało.

parneeti sood
źródło
10

Widziałem tutaj interesujący post od Ikraidera, który rozwiązał mój problem: https://github.com/docker/docker/issues/22599

Instrukcje na stronie są błędne, oto, co działa w 16.04:

curl -s https://yum.dockerproject.org/gpg | sudo apt-key add
apt-key fingerprint 58118E89F3A912897C070ADBF76221572C52609D
sudo add-apt-repository "deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -cs) main"
sudo apt-get update
sudo apt-get install docker-engine=1.13.0-0~ubuntu-xenial
Nicolas D.
źródło
5

Użytkownicy Linux Mint 20 Ulyana muszą zmienić „ulyana” na „bionic” w

/etc/apt/sources.list.d/additional-repositories.list

tak:

deb [arch=amd64] https://download.docker.com/linux/ubuntu    bionic    stable
Alex Paramonov
źródło
4

Miałem podobny problem w mennicy Linuksa, co zrobiłem, okazało się, że wersja Debiana używa,

$ cat /etc/debian_version buster/sid

następnie zastąpił wersję Debiana w

$ sudo vi /etc/apt/sources.list.d/additional-repositories.list
deb [arch=amd64] https://download.docker.com/linux/debian    buster    stable
Abhijeet Farakate
źródło
4

Ostrzeżenie: wykonaj poniższe czynności na własne ryzyko. Możesz otrzymać różne wyniki, jak wskazano w komentarzach. Przed wykonaniem tej czynności należy zachować ostrożność i mieć pełną kopię zapasową.

Poniżej znajduje się lista czynności, które należy wykonać, aby rozwiązać problem:

  1. Usuń Docker (nie spowoduje to usunięcia obrazów, kontenerów, woluminów ani niestandardowych plików konfiguracyjnych):

    sudo apt-get purge docker-engine

  2. Usuń klucz apt Docker:

    sudo apt-key del 58118E89F3A912897C070ADBF76221572C52609D

  3. Usuń plik docker.list:

    sudo rm /etc/apt/sources.list.d/docker.list

  4. Ręcznie usuń pliki pamięci podręcznej apt:

    sudo rm /var/lib/apt/lists/apt.dockerproject.org_repo_dists_ubuntu-xenial_*

  5. Usuń apt-transport-https i certyfikaty ca :

    sudo apt-get purge apt-transport-https ca-Certificates

  6. Czysty apt i wykonaj autoraove:

    sudo apt-get clean && sudo apt-get autorove

  7. Uruchom ponownie Ubuntu:

    sudo reboot

  8. Uruchom aktualizację apt-get:

    sudo apt-get update

  9. Zainstaluj ponownie apt-transport-https i ca-Certificates:

    sudo apt-get install apt-transport-https ca-certyfikaty

  10. Dodaj klucz apt:

> sudo apt-key adv \
       --keyserver hkp://ha.pool.sks-keyservers.net:80 \
       --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
  1. Dodaj ponownie plik docker.list:
> echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" |
sudo tee /etc/apt/sources.list.d/docker.list
  1. Uruchom aktualizację apt-get:
> sudo apt-get update
  1. Zainstaluj Docker:
> sudo apt-get install docker-engine

To prawda, istnieje wiele zmiennych, a Twoje wyniki mogą się różnić. Jednak te kroki obejmują jak najwięcej obszarów, aby upewnić się, że potencjalne miejsca problemowe zostaną usunięte, a prawdopodobieństwo sukcesu będzie większe.

Aktualizacja 7/6/2017

Wygląda na to, że nowsze wersje Dockera używają innego procesu instalacji, co powinno wyeliminować wiele z tych problemów. Koniecznie sprawdź https://docs.docker.com/engine/installation/linux/ubuntu/ .

Daniel Eagle
źródło
Po uruchomieniu restartu mój ekran logowania pojawia się w Linux Mint
Sathishkumar Rakkiasamy
3
działa: sudo apt-get purge apt-transport-https ca-Certificates to okropny pomysł, myślę, że właśnie schrzaniłem mój system operacyjny: C
RicardoE
@RicardoE, po uruchomieniu tego, co się dzieje z twoim systemem?
Daniel Eagle
1
Używam linux mint i zasadniczo odinstalowałem całą zawartość cynamonu i kilka innych programów / pakietów, takich jak Google Chrome
RicardoE
1
Ponownie instaluję wszystko ponownie, sprawdzając listę w: /var/log/apt/history.log
RicardoE
3

Miałem też podobny problem. Ktoś może uznać to, co zadziałało, za pomocne.

Maszyna działa pod kontrolą Ubuntu 16.04 i ma Docker CE. Po przejrzeniu odpowiedzi i linków podanych tutaj, szczególnie z linku ze strony Docker podanego przez Elliot Beach, otworzyłem mój /etc/apt/sources.list i sprawdziłem go.

Plik zawierał zarówno deb [arch=amd64] https://download.docker.com/linux/ubuntu (lsb_release -cs) stablei deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable.

Ponieważ potrzebowaliśmy drugiego, po prostu skomentowałem pierwszy, zapisałem dokument i teraz problem został rozwiązany. W ramach testu wróciłem do tego samego dokumentu, usunąłem znak komentarza i pobiegłemsudo apt-get update ponownie. Problem powrócił, kiedy to zrobiłem.

Podsumowując: nie tylko miałem nazwę dystrybucji nadrzędnej Ubuntu, jak podano na stronie Docker, ale także zakomentowałem linię zawierającą (lsb_release -cs).

Simeon
źródło
W Ubuntu 18.10 skomentowałem tę linię: # deb [arch = amd64] download.docker.com/linux/ubuntu cosmic stable
Sergei G
2

Edytowanie pliku /etc/apt/sources.list.d/additional-repositories.listi dodawanie deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable działało dla mnie, ten post był bardzo pomocny https://github.com/typora/typora-issues/issues/2065

Godziny największej oglądalności
źródło
1

Nadal mam ten sam problem. Żadna z powyższych odpowiedzi nie wydaje się rozwiązać tego problemu. Mam ubuntu 16.04 i postępuję zgodnie z instrukcjami opisanymi na https://docs.docker.com/install/linux/docker-ce/ubuntu/

Podejrzewam, że jest to związane z apt-getbłędem dotyczącym https. Informacje, które są drukowane, apt-getsą trochę mylące.

Myślę, że Failed to fetch..można to również przetłumaczyć jako:problem accessing resource from within an https connection

Jak doszedłem do tego wniosku:

Przede wszystkim jestem za korporacyjnym proxy, więc ustawiłem następującą konfigurację:

/etc/apt/apt.conf

Acquire::http::proxy "http://squidproxy:8080/";
Acquire::https::proxy "http://squidproxy:8080/";
Acquire::ftp::proxy "ftp://squidproxy:8080/";

Acquire::https::CaInfo     "/etc/ssl/certs/ca-certificates.pem";

/etc/apt/apt.conf.d/99proxy

Acquire::http::Proxy {
    localhost DIRECT;
    localhost:9020 DIRECT;
    localhost:9021 DIRECT;
};

Wykonałem następujące testy z różnymi wpisami w sources.list

wpis testowy 1:

deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable

sudo apt-get update

W: The repository 'https://download.docker.com/linux/ubuntu xenial Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration     details.
E: Failed to fetch     https://download.docker.com/linux/ubuntu/dists/xenial/stable/binary-amd64/Packages  
E: Some index files failed to download. They have been ignored, or old ones used instead.

Niepowodzenie

wpis testowy 2:

deb [arch=amd64] http://localhost:9020/linux/ubuntu xenial stable

/etc/apache2/sites-enabled/apt-proxy.conf

# http to https reverse proxy configuration.
Listen 9020
<VirtualHost *:9020>
SSLProxyEngine On
# pass from squid proxy
ProxyRemote https://download.docker.com/ http://squidproxy:8080
ProxyPass / https://download.docker.com/
ProxyPassReverse / https://download.docker.com/
ErrorLog ${APACHE_LOG_DIR}/apt-proxy-error.log
CustomLog ${APACHE_LOG_DIR}/apt-proxy-access.log combined
</VirtualHost>

sudo apt-get update

Hit:1 ..
Hit:2 ..
  ...                                                              
Hit:7 http://localhost:9020/linux/ubuntu xenial InRelease                
Get:8 ...
Fetched 323 kB in 0s (419 kB/s)
Reading package lists... Done

Sukces

wpis testowy 3:

deb [arch=amd64] https://localhost:9021/linux/ubuntu xenial stable

/etc/apache2/sites-enabled/apt-proxy.conf

# https to https revere proxy
Listen 9021
<VirtualHost *:9021>
# serve on https
SSLEngine on
SSLCertificateFile      /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
SSLProxyEngine On
# pass from squid proxy
ProxyRemote https://download.docker.com/ http://squidproxy:8080
ProxyPass / https://download.docker.com/
ProxyPassReverse / https://download.docker.com/
ErrorLog ${APACHE_LOG_DIR}/apt-proxy-error.log
CustomLog ${APACHE_LOG_DIR}/apt-proxy-access.log combined
</VirtualHost>

sudo apt-get update

W: The repository 'https://localhost:9021/linux/ubuntu xenial Release' does not have a Release file.
N: Data from such a repository can't be authenticated and is therefore potentially dangerous to use.
N: See apt-secure(8) manpage for repository creation and user configuration details.
E: Failed to fetch https://localhost:9021/linux/ubuntu/dists/xenial/stable/binary-amd64/Packages  
E: Some index files failed to download. They have been ignored, or old ones used instead.

Niepowodzenie


W powyższych przypadkach adres URL, do którego apt-get, Failed to fetcha także Release plik, były faktycznie dostępne z browser/ wget/ curlprzy użyciu tej samej konfiguracji proxy.
Fakt, że apt-getdziałał tylko z adresem URL zwrotnego serwera proxy http, sugeruje, że istnieje pewien problem z dostępem do zasobów z poziomu połączenia https .
Nie wiem, na czym polega ten problem, ale apt-getpowinienem pokazać komunikat bardziej informacyjny ( aptjest jeszcze mniej szczegółowy).

Uwaga: przypadek 1 programu wiresharking wykazał, że serwer proxy się CONNECTpowiódł i nie wysłano żadnego RST, ale oczywiście nie można było odczytać plików.

Marinos An
źródło
0

To właśnie zadziałało dla mnie w LinuxMint 19.

curl -s https://yum.dockerproject.org/gpg | sudo apt-key add
apt-key fingerprint 58118E89F3A912897C070ADBF76221572C52609D
sudo add-apt-repository "deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -cs) main"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

Gilbert S.
źródło
-1

Najlepiej sprawdzić ten problem: (jeśli korzystasz z serwera proxy), (testowane na systemie ubuntu 18.04), (będzie działać również na innych urządzeniach ubuntu), (głównie błąd: https_proxy = "http://192.168.0.251:808/)

  1. Sprawdź te pliki:

    #sudo cat /etc/environment :
    http_proxy="http://192.168.0.251:808/"
    https_proxy="http://192.168.0.251:808/"
    ftp_proxy="ftp://192.168.0.251:808/"
    socks_proxy="socks://192.168.0.251:808/"
    #sudo cat /etc/apt/apt.conf :
    Acquire::http::proxy "http://192.168.0.251:808/";
    Acquire::https::proxy "http://192.168.0.251:808/";
    Acquire::ftp::proxy "ftp://192.168.0.251:808/";
    Acquire::socks::proxy "socks://192.168.0.251:808/";
    
  2. Dodaj stabilne repozytorium Dockera

    #sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 
    
  3. Uruchom aktualizację apt-get:

    #sudo apt-get update
    
  4. Sprawdź Docker CE

    #apt-cache policy docker-ce
    
  5. zainstaluj Docker

    #sudo apt-get install docker-ce
    
Abhishek Jangid
źródło