Сховище Docker не має файлу випуску під час запуску оновлення apt-get на Ubuntu


89

Я використовую Ubuntu 16.10 і нещодавно встановив Docker (v1.12.4) за допомогою збірки Xenial, дотримуючись інструкцій, наведених тут . Я не стикався з проблемами при створенні контейнерів, забезпеченні їх автоматичного перезапуску тощо.

Однак тепер кожного разу, коли я запускаю apt-get update, я отримую таке повідомлення про помилку:

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.

Я спробував виправити цю проблему, слідуючи поради знайшли тут і не можу здатися , щоб вирішити цю проблему.

Хтось раніше стикався з цим і виправляв? Якщо так, то що потрібно для вирішення цієї проблеми?


1
Будь ласка, подивіться, чи це допомагає - askubuntu.com/questions/768569/…
Рао

@Rao, на жаль, це не вирішує проблему. Я все ще отримую те саме повідомлення про помилку після видалення ключа, запису у вихідному списку, запуску apt-get update знову, а потім повторення кроків установки Docker.
Даніел Ігл,

@Rao, я придумав рішення і додав відповідь. Однак згадана вами стаття може бути корисною для інших, хто натрапляє на моє запитання, тому +1. Ура.
Даніел Ігл,

1
У моєму випадку відповіді нижче не допомогли. Моя проблема полягала в тому, що я використовував apt-cacher-ng, який не проксірував https-трафік. github.com/moby/moby/issues/22599#issuecomment-404675734
jamshid

Відповіді:


84

На Linux Mint офіційні інструкції для мене не працювали. Мені довелося зайти /etc/apt/sources.list.d/additional-repositories.listі змінитись serenaна xenial.


2
Тільки примітка, чомусь у цьому файлі для мене був рядок докера з trustyта ще один із serena. Можливо, я намагався пройти через той самий процес деякий час назад і забув про це. У кожному разі, мені довелося видалити trustyрядок, інакше він скаржився на невирішувані залежності.
lobati

3
Дякуємо за посилання на каталог sources.list.d. Виправлена ​​проблема з xenial Ubuntu із "sudo rm /etc/apt/sources.list.d/docker*". Тепер оновлення apt-get працює нарешті.
дев'ять п'ять

2
Те саме для Debian: замініть "debian 10 stable" на "debian stretch stable" у файлі "/etc/apt/sources.list.d/docker.list", і він повинен працювати.
peschanko

Мені довелося змінити свій наbionic
jpthesolver2

72

Для Linux Mint ця проблема фактично вказана на веб-сайті Docker :

Примітка: lsb_release -csПідкоманда нижче повертає ім'я вашого дистрибутива Ubuntu, наприклад xenial. Іноді у такому дистрибутиві, як Linux Mint, можливо, доведеться перейти $(lsb_release -cs)на батьківський дистрибутив Ubuntu. Наприклад, якщо ви використовуєте Linux Mint Rafaela, ви можете використовувати надійний.

amd64:

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

lsb_release -csКоманда надає сховище , для якого Docker не має підготовлений пакет - ви повинні змінити його на дружній.

Правильною командою для Linux Mint 18, яка базується на Ubuntu 16.04 Xenial, є

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

1
Команда, яку ви надали, така ж, як і та, яка існує на сайті докера. Однак це не працює для мене на ubuntu 16.04. Запис, згенерований у sources.list:, deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stableале все одно та сама проблема. Хотілося б, щоб хтось пояснив, чому він не може знайти Releaseвсередині https://download.docker.com/linux/ubuntu/dists/xenial/stable/binary-amd64/. Сумно: Після стількох років використання ubuntu я все ще не можу зрозуміти, як все працює із шляхами сховища.
Марінос,

Це вирішило мої проблеми з тим, що все рухається в новому дистрибутиві WLinux.
rainabba

22

Пляж Елліот правильно. Дякую Еліот.

Ось код з мого суті .

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

2
Обережно виконуйте ці команди, якщо не запускаєте xenial. Ця команда була б безпечнішоюadd-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
spuder

У деяких випадках (тобто Mint) lsb_release -csповернення, taraяке не має підтримуваного випуску, настільки конкретного перевизначення, xenialяк показано (або надійного), є корисним обхідним шляхом.
Strixy

Користувача, офіційно відомого як Пляж Елліотт, буде рухатись далі, іменуватиметься Войовничим шимпанзе
Воєнним шимпанзе

Ваш суть виправляє проблему "E: Пакет 'containerd.io' не має кандидата на встановлення" з Kubuntu eoan. Деякі люди вирішили це з біонікою, але це не спрацювало для мене, слідуючи вашій суті з xenial. Проблема виникає, коли ви використовуєте, $(lsb_release -cs)оскільки він не підтримується повністю. Інші повідомляють про використання такої «неправильної настройки» зламати без будь - яких проблем в протягом 4 місяців і підрахунку голосів ( stackoverflow.com/questions/60274857 / ... )
Leamsi

17

Як пропонується в офіційному документі Docker. Спробуйте запустити це:

  • sudo vi /etc/apt/sources.list

Потім видаліть / прокоментуйте будь-який ( deb [arch=amd64] https://download.docker.com/linux/ubuntu/ xenial stable) такий запис у останніх рядках файлу.

Потім у терміналі запустіть цю команду:

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

  • sudo apt-get update

У моєму випадку це спрацювало.


10

Тут я побачив цікавий допис від Ikraider, який вирішив мою проблему: https://github.com/docker/docker/issues/22599

Інструкції веб-сайту помилкові, ось що працює в 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

5

Користувачам Linux Mint 20 Ulyana потрібно змінити "ulyana" на "bionic" у

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

подобається так:

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

4

Я стикався з подібною проблемою на монетному дворі Linux, те, що я зробив, було виявлено версію Debian за допомогою,

$ cat /etc/debian_version buster/sid

потім замінив версію Debian в

$ sudo vi /etc/apt/sources.list.d/additional-repositories.list
deb [arch=amd64] https://download.docker.com/linux/debian    buster    stable

4

Попередження: Використовуйте наведені нижче дії на свій страх і ризик. Ви можете отримати різні результати, як зазначено в коментарях. Будьте обережні та створіть повну резервну копію перед цим.

Нижче наведено перелік кроків, використаних для вирішення проблеми:

  1. Видаліть Docker (це не призведе до видалення зображень, контейнерів, томів або налаштованих файлів конфігурації):

    sudo apt-get продувний докер-двигун

  2. Видаліть ключ Docker apt:

    sudo apt-key del 58118E89F3A912897C070ADBF76221572C52609D

  3. Видаліть файл docker.list:

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

  4. Видаліть файли кеш-пам’яті вручну:

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

  5. Видалити apt-transport-https та ca-сертифікати :

    sudo apt-get purge apt-transport-https ca-сертифікати

  6. Очистіть apt та виконайте автовидалення:

    sudo apt-get clean && sudo apt-get autoremove

  7. Перезавантажте Ubuntu:

    sudo reboot

  8. Запустіть apt-get update:

    sudo apt-get update

  9. Знову встановіть apt-transport-https та ca-сертифікати:

    sudo apt-get install apt-transport-https ca-сертифікати

  10. Додайте ключ apt:

> sudo apt-key adv \
       --keyserver hkp://ha.pool.sks-keyservers.net:80 \
       --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
  1. Додайте файл docker.list ще раз:
> echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" |
sudo tee /etc/apt/sources.list.d/docker.list
  1. Запустіть apt-get update:
> sudo apt-get update
  1. Встановити Docker:
> sudo apt-get install docker-engine

Звичайно, є багато змінних, і ваші результати можуть відрізнятися. Однак ці кроки охоплюють якомога більше областей, щоб забезпечити очищення потенційних проблемних місць, щоб імовірність успіху була вищою.

Оновлення 06.07.2017

Здається, новіші версії Docker використовують інший процес встановлення, який повинен усунути багато з цих проблем. Обов’язково перегляньте https://docs.docker.com/engine/installation/linux/ubuntu/ .


Після запуску перезавантаження екран мого входу відображається в Linux Mint
Sathishkumar Rakkiasamy

3
працює: sudo apt-get purge apt-transport-https ca-сертифікати - це жахлива ідея, я думаю, що я просто
зіпсував

@RicardoE, після запуску цього, що відбувається з твоєю системою?
Даніел Ігл,

1
Я використовую монетний двір Linux, і він в основному видалив усі речі з корицею та деякі інші програмні засоби / пакети, такі як google chrome
RicardoE

1
Я перевстановлюю все знову за допомогою, перевіряючи список у: /var/log/apt/history.log
RicardoE

3

У мене теж була подібна проблема. Хтось може виявити корисним те, що в мене вийшло.

Машина працює під Ubuntu 16.04 та має Docker CE. Переглянувши відповіді та посилання, подані тут, особливо за посиланням на веб-сайті Docker, наданим Елліот Біч, я відкрив свій /etc/apt/sources.list та вивчив його.

У файлі було як deb [arch=amd64] https://download.docker.com/linux/ubuntu (lsb_release -cs) stableі deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable.

Оскільки потрібен був другий, я просто прокоментував перший, зберег документ і тепер проблема вирішена. В якості тесту я повернувся до того самого документа, видалив знак коментаря і побіг sudo apt-get updateзнову. Випуск повернувся, коли я це зробив.

Отже, підсумовуємо: у мене не тільки було моє батьківське ім’я дистрибутива Ubuntu, як зазначено на веб-сайті Docker, але я також прокоментував рядок, що все ще містить (lsb_release -cs).


На Ubuntu 18.10 я прокоментував такий рядок: # deb [arch = amd64] download.docker.com/linux/ubuntu космічна стабільна
Сергій Г


1

Я все ще маю те саме питання. Здається, жодна з наведених відповідей не вирішує цього. У мене є ubuntu 16.04, і я виконую дії, описані в https://docs.docker.com/install/linux/docker-ce/ubuntu/

Я підозрюю, що це пов’язано з apt-getпомилкою щодо https. Інформація, що друкується, apt-getє якось оманливою.

Я думаю, що Failed to fetch..це також можна перекласти як:problem accessing resource from within an https connection

Як я прийшов до такого висновку:

Перш за все, я стою за корпоративним проксі, тому я встановив наступну конфігурацію:

/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;
};

Я виконав наступні тести з різними записами в sources.list

тестовий запис 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.

Невдача

тестовий запис 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

Успіху

тестовий запис 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.

Невдача


У вищезазначених випадках URL-адреса apt-get, Failed to fetchа також Release файл, насправді були доступні з browser/ wget/ curlза допомогою тієї ж конфігурації проксі.
Той факт, що apt-getпрацював лише з URL-адресою зворотного проксі-сервера, означає, що існує певна проблема з доступом до ресурсів із з'єднання https .
Я не знаю, що це за проблема, але apt-getповинен показувати більш інформативне повідомлення ( aptще менш багатослівне).

Примітка: випадок дротового штурму 1 показав, що проксі CONNECTбув успішним, і RST не надсилався, але, звичайно, файли неможливо прочитати.


0

Це те, що мені вдалося на 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


-1

Найкраща перевірка на цю проблему: (Якщо ви стоїте за проксі-сервером), (протестовано на ubuntu 18.04), (буде працювати і на інших ubuntu), (переважно помилка в: https_proxy = "http://192.168.0.251:808/)

  1. Перевірте ці файли:

    #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. Додайте стабільне репозиторій докера

    #sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 
    
  3. Запустіть apt-get update:

    #sudo apt-get update
    
  4. Перевірте Docker CE

    #apt-cache policy docker-ce
    
  5. встановити Docker

    #sudo apt-get install docker-ce
    
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.