Docker Repository ไม่มีไฟล์รีลีสในการรัน apt-get update บน Ubuntu


94

ฉันใช้อูบุนตู 16.10 และเมื่อเร็ว ๆ นี้มีการติดตั้งหาง (v1.12.4) โดยใช้ Xenial สร้างโดยทำตามคำแนะนำที่พบที่นี่ ฉันไม่พบปัญหาใด ๆ ในการสร้างคอนเทนเนอร์ทำให้แน่ใจว่ารีสตาร์ทโดยอัตโนมัติ ฯลฯ

อย่างไรก็ตามทุกครั้งที่ฉันเรียกใช้การอัปเดต apt-getฉันได้รับข้อความแสดงข้อผิดพลาดต่อไปนี้:

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 อีกครั้งจากนั้นทำตามขั้นตอนการติดตั้ง Docker ซ้ำ
Daniel Eagle

@Rao ฉันคิดหาวิธีแก้ปัญหาและเพิ่มคำตอบ อย่างไรก็ตามบทความที่คุณกล่าวถึงอาจเป็นประโยชน์ต่อผู้อื่นที่ทำให้คำถามของฉันสะดุดดังนั้น +1 ไชโย
Daniel Eagle

1
ในกรณีของฉันคำตอบด้านล่างไม่ได้ช่วย ปัญหาของฉันคือฉันใช้ apt-cacher-ng ที่ไม่ได้พร็อกซีทราฟฟิก https github.com/moby/moby/issues/22599#issuecomment-404675734
jamshid

คำตอบ:


86

บน Linux Mint คำแนะนำอย่างเป็นทางการใช้ไม่ได้กับฉัน ผมต้องไปลง/etc/apt/sources.list.d/additional-repositories.listและเปลี่ยนไปserenaxenial


2
โปรดทราบว่าด้วยเหตุผลบางประการจึงมีสายนักเทียบท่าtrustyและอีกสายหนึ่งserenaอยู่ในไฟล์นั้นสำหรับฉัน บางทีฉันอาจจะลองทำตามขั้นตอนเดียวกันนี้บ้างแล้วก็ลืมมันไป ไม่ว่าอย่างไรก็ตามฉันต้องลบtrustyบรรทัดมิฉะนั้นจะบ่นเกี่ยวกับการอ้างอิงที่ไม่สามารถแก้ไขได้
โลบาติ

3
ขอบคุณสำหรับการอ้างอิงไดเร็กทอรี source.list.d แก้ไขปัญหา xenial ของ Ubuntu ด้วย "sudo rm /etc/apt/sources.list.d/docker*" ตอนนี้การอัปเดต apt-get ใช้งานได้ในที่สุด
nine9five

2
เช่นเดียวกันสำหรับ Debian: แทนที่ "debian 10 stable" เป็น "debian stretch stable" ในไฟล์ "/etc/apt/sources.list.d/docker.list" และควรใช้งานได้
peschanko

ฉันต้องเปลี่ยนของฉันเป็นbionic
jpthesolver2

74

สำหรับ 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คำสั่งให้พื้นที่เก็บข้อมูลที่หางไม่มีแพคเกจที่เตรียมไว้ - คุณจะต้องเปลี่ยนไป 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/เศร้า: หลังจากใช้อูบุนตูมาหลายปีฉันยังคิดไม่ออกว่าสิ่งต่าง ๆ ทำงานกับพา ธ ที่เก็บอย่างไร
Marinos

สิ่งนี้ช่วยแก้ปัญหาของฉันในการเคลื่อนย้ายสิ่งต่างๆบน WLinux distro ใหม่ด้วย
rainabba

23

เอลเลียตบีชถูกต้อง ขอบคุณ Elliot

นี่คือรหัสจากฉันสรุปสาระสำคัญ

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ตามที่แสดง (หรือ trusty) เป็นวิธีแก้ปัญหาที่มีประโยชน์
Strixy

ผู้ใช้ที่รู้จักกันอย่างเป็นทางการในชื่อ Elliott Beach จะก้าวไปข้างหน้าเรียกว่า Warlike Chimpanzee
Warlike Chimpanzee

ส่วนสำคัญของคุณแก้ไขปัญหา "E: Package" containerd.io "ไม่มีตัวเลือกการติดตั้ง" กับ Kubuntu eoan บางคนแก้ไขด้วยไบโอนิก แต่มันไม่ได้ผลสำหรับฉันทำตามส่วนสำคัญของคุณด้วย xenial ทำ ปัญหาเกิดขึ้นเมื่อคุณใช้งาน$(lsb_release -cs)เนื่องจากไม่ได้รับการสนับสนุนอย่างเต็มที่ คนอื่น ๆ รายงานโดยใช้การแฮ็ก "การกำหนดค่าผิด" โดยไม่มีปัญหาใด ๆ เป็นเวลา 4 เดือนและจะเพิ่มขึ้น
เรื่อย ๆ

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

มันใช้ได้ในกรณีของฉัน


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

9

ผู้ใช้ 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

ฉันประสบปัญหาที่คล้ายกันในลินุกซ์มิ้นต์สิ่งที่ฉันทำคือพบว่าเวอร์ชัน 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 purge docker-engine

  2. ลบคีย์ Docker apt:

    sudo apt-key เดล 58118E89F3A912897C070ADBF76221572C52609D

  3. ลบไฟล์ docker.list:

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

  4. ลบไฟล์ apt cache ด้วยตนเอง:

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

  5. ลบapt-transport-httpsและca-certificate :

    sudo apt-get purge apt-transport-https ca-ใบรับรอง

  6. ทำความสะอาด apt และทำการย้ายอัตโนมัติ:

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

  7. รีบูต Ubuntu:

    sudo รีบูต

  8. เรียกใช้การอัปเดต apt-get:

    อัปเดต sudo apt-get

  9. ติดตั้ง apt-transport-https และ ca-certificate อีกครั้ง:

    sudo apt-get ติดตั้ง apt-transport-https ca-certificate

  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:
> sudo apt-get update
  1. ติดตั้ง Docker:
> sudo apt-get install docker-engine

จริงอยู่ที่มีตัวแปรมากมายและผลลัพธ์ของคุณอาจแตกต่างกันไป อย่างไรก็ตามขั้นตอนเหล่านี้ครอบคลุมพื้นที่ต่างๆให้มากที่สุดเพื่อให้แน่ใจว่ามีการขัดจุดปัญหาที่อาจเกิดขึ้นเพื่อให้โอกาสในการประสบความสำเร็จสูงขึ้น

Update 7/6/2017

ดูเหมือนว่า Docker เวอร์ชันใหม่กว่ากำลังใช้กระบวนการติดตั้งที่แตกต่างออกไปซึ่งจะช่วยขจัดปัญหาเหล่านี้ได้ ให้แน่ใจว่าได้ตรวจสอบhttps://docs.docker.com/engine/installation/linux/ubuntu/


หลังจากรีบูตหน้าจอการเข้าสู่ระบบของฉันปรากฏใน Linux Mint
Sathishkumar Rakkiasamy

4
การรัน: sudo apt-get purge apt-transport-https ca-certificate เป็นความคิดที่แย่มากฉันคิดว่าฉันเพิ่งทำให้ระบบปฏิบัติการของฉัน
แย่ลง

@RicardoE หลังจากรันแล้วเกิดอะไรขึ้นกับระบบของคุณ?
Daniel Eagle

1
ฉันใช้ linux mint และโดยทั่วไปมันจะถอนการติดตั้งสิ่งอบเชยทั้งหมดและซอฟต์แวร์ / แพ็คเกจอื่น ๆ เช่น Google chrome
RicardoE

1
ฉันติดตั้งทุกอย่างใหม่อีกครั้งโดยตรวจสอบรายการใน: /var/log/apt/history.log
RicardoE

3

ฉันก็มีปัญหาที่คล้ายกัน อาจมีคนพบว่าสิ่งที่เป็นประโยชน์สำหรับฉัน

เครื่องใช้ Ubuntu 16.04 และมี Docker CE หลังจากดูคำตอบและลิงค์ที่ให้ไว้ที่นี่โดยเฉพาะจากลิงค์จากเว็บไซต์ Docker ที่ให้โดย Elliot Beach ฉันเปิด /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


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ทำงานเพียงด้วย http URL พร็อกซีย้อนกลับแสดงให้เห็นว่ามีบางปัญหาการเข้าถึงทรัพยากรจากภายในการเชื่อมต่อ https
ฉันไม่รู้ว่าปัญหานี้คืออะไร แต่apt-getควรแสดงข้อความที่ให้ข้อมูลมากกว่านี้ ( aptเป็นข้อมูลที่ละเอียดกว่า)

หมายเหตุ: wireharking case 1 แสดงให้เห็นว่า proxy 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

ตรวจสอบปัญหานี้ให้ดีที่สุด: (หากคุณใช้พร็อกซี), (ทดสอบบนอูบุนตู 18.04), (จะทำงานบนอูบุนตูอื่นด้วย), (ส่วนใหญ่เกิดข้อผิดพลาดใน: 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. เพิ่ม Docker Stable repo

    #sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 
    
  3. เรียกใช้การอัปเดต apt-get:

    #sudo apt-get update
    
  4. ตรวจสอบ Docker CE

    #apt-cache policy docker-ce
    
  5. ติดตั้ง Docker

    #sudo apt-get install docker-ce
    
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.