В репозитории 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
@Rao, к сожалению, это не решает проблему. Я все еще получаю то же сообщение об ошибке после удаления ключа, записи в списке источников, повторного запуска apt-get update, а затем повторения шагов по установке Docker.
Daniel Eagle
@Rao, разгадал решение и добавил ответ. Тем не менее, упомянутая вами статья может быть полезной для других, наткнувшихся на мой вопрос, так что +1. Ура.
Daniel Eagle
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строку, иначе она жаловалась на неразрешимые зависимости.
лобати
3
Спасибо за ссылку на каталог sources.list.d. Исправлена ​​проблема Ubuntu xenial с "sudo rm /etc/apt/sources.list.d/docker*". Теперь, наконец, работает apt-get update.
nine9five 01
2
То же самое для Debian: замените «debian 10 stable» на «debian stretch stable» в файле «/etc/apt/sources.list.d/docker.list», и он должен работать.
Песчанко
Мне пришлось поменять свой наbionic
jpthesolver2
72

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

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

amd64:

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

Команда lsb_release -csдает репозиторий, для которого у Docker нет подготовленного пакета - вы должны изменить его на xenial.

Правильная команда для 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 я до сих пор не могу понять, как все работает с путями к репозиториям.
Marinos An
Это также решило мои проблемы с переходом на новый дистрибутив 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
В некоторых случаях (например, монетный двор) lsb_release -csвозвращается tara, не поддерживаемая версия, поэтому конкретное переопределение xenialпоказанного (или надежного) является полезным обходным путем.
Strixy
Пользователь, формально известный как Elliott Beach, в дальнейшем будет называться Warlike Chimpanzee
Воинственный шимпанзе
Ваша суть устраняет проблему «E: Пакет 'containerd.io' не имеет кандидата на установку» с Kubuntu eoan. Некоторые люди решили это с помощью bionic, но у меня это не сработало, если следовать вашей сути с xenial. Проблема возникает при использовании, $(lsb_release -cs)потому что он не полностью поддерживается. Другие сообщают об использовании такого взлома «неправильной конфигурации» без каких-либо проблем в течение 4 месяцев и подсчета ( stackoverflow.com/questions/60274857/… )
Leamsi
17

Как это также предлагается в официальном документе докеров. Попробуйте запустить это:

  • 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

В моем случае это сработало.

Parneeti Sood
источник
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 mint, что я сделал, было обнаружено, что версия 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 очистить docker-engine

  2. Удалите ключ Docker apt:

    sudo apt-key del 58118E89F3A912897C070ADBF76221572C52609D

  3. Удалите файл docker.list:

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

  4. Удалите файлы кэша apt вручную:

    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

  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
Сатишкумар Раккиасами
3
работает: sudo apt-get purge apt-transport-https ca-сертификаты - ужасная идея, я думаю, что только что
испортил
@RicardoE, после запуска, что происходит с вашей системой?
Дэниел Игл
1
Я использую linux mint, и он в основном удалил весь материал с корицей и некоторые другие программы / пакеты, такие как 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 cosmic stable
Sergei G
2

У меня сработало редактирование файла /etc/apt/sources.list.d/additional-repositories.listи добавление deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial stable, этот пост был очень полезным https://github.com/typora/typora-issues/issues/2065

ПРАЙМ-тайм
источник
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-адресом обратного прокси-сервера http, означает, что существует некоторая проблема с доступом к ресурсам изнутри https-соединения .
Я не знаю, что это за проблема, но apt-getдолжно показать более информативное сообщение ( aptеще менее подробное).

Примечание: случай 1 wireharking показал, что прокси-сервер 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

GilbertS
источник
-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. установить докер

    #sudo apt-get install docker-ce
    
Абхишек Джангид
источник