Docker build“ ไม่สามารถแก้ไข 'archive.ubuntu.com'” apt-get ไม่สามารถติดตั้งอะไรได้


101

ฉันพยายามเรียกใช้ Docker build ในไฟล์ต่างๆซึ่งก่อนหน้านี้ใช้งานได้ก่อนหน้านี้ซึ่งตอนนี้ใช้งานไม่ได้แล้ว

ทันทีที่ไฟล์ Docker รวมบรรทัดใด ๆ ที่จะติดตั้งซอฟต์แวร์มันจะล้มเหลวโดยมีข้อความแจ้งว่าไม่พบแพ็คเกจ

RUN apt-get -y install supervisor nodejs npm

ข้อความทั่วไปที่ปรากฏในบันทึกคือ

Could not resolve 'archive.ubuntu.com'

มีความคิดว่าทำไมซอฟต์แวร์ใด ๆ จึงไม่ติดตั้ง?


สิ่งนี้จะเกิดขึ้นเมื่อเครื่องถูกตัดการเชื่อมต่อจากเน็ต ... ฉันเคยเห็นว่าเกิดขึ้นบนแล็ปท็อป linux พร้อมการติดตั้งนักเทียบท่าใหม่หากฉันเพียง แต่ออก newgrp dockerแทนที่จะทำการล็อกอินแบบเต็มจากนั้นเข้าสู่ระบบหลังจากให้ตัวเองsudo usermod -aG docker myuserid... มันเป็นเคสขอบสำหรับ ไม่ว่าจะเกิดขึ้นแน่นอน
Scott Stensland

คำตอบ:


250

uncommenting DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"ใน/etc/default/dockerขณะที่แมตต์ Carrierปัญหาไม่ไม่ทำงานสำหรับฉัน ไม่ได้ใส่เซิร์ฟเวอร์ DNS ของ บริษัท ของฉันไว้ในไฟล์นั้น แต่มีอีกวิธีหนึ่ง (อ่านต่อ)

ขั้นแรกให้ตรวจสอบปัญหา:

$ docker run --rm busybox nslookup google.com   # takes a long time
nslookup: can't resolve 'google.com'   # <--- appears after a long time
Server:    8.8.8.8
Address 1: 8.8.8.8

หากคำสั่งดูเหมือนจะหยุดทำงาน แต่ในที่สุดก็เกิดข้อผิดพลาด "ไม่สามารถแก้ไข" google.com "ได้แสดงว่าคุณมีปัญหาเช่นเดียวกับฉัน

nslookupคำสั่ง queries เซิร์ฟเวอร์ DNS 8.8.8.8 เพื่อเปิดที่อยู่ข้อความของ 'google.com' เป็นที่อยู่ IP กระแทกแดกดัน 8.8.8.8 เป็นเซิร์ฟเวอร์ DNS สาธารณะของ Google หากnslookupล้มเหลวบริษัท ของคุณอาจบล็อกเซิร์ฟเวอร์ DNS สาธารณะเช่น 8.8.8.8 (ซึ่งฉันถือว่าเป็นเพราะเหตุผลด้านความปลอดภัย)

คุณคิดว่าการเพิ่มเซิร์ฟเวอร์ DNS ของ บริษัท ของคุณเข้าไปDOCKER_OPTSใน/etc/default/dockerนั้นน่าจะเป็นการหลอกลวง แต่ไม่ว่าด้วยเหตุผลใดก็ไม่ได้ผลสำหรับฉัน ฉันอธิบายสิ่งที่ได้ผลสำหรับฉันด้านล่าง

วิธีแก้ปัญหา :

บนโฮสต์ (ฉันใช้ Ubuntu 16.04) ค้นหาที่อยู่เซิร์ฟเวอร์ DNS หลักและรอง:

$ nmcli dev show | grep 'IP4.DNS'
IP4.DNS[1]:              10.0.0.2
IP4.DNS[2]:              10.0.0.3

ใช้ที่อยู่เหล่านี้สร้างไฟล์/etc/docker/daemon.json:

$ sudo su root
# cd /etc/docker
# touch daemon.json

ใส่สิ่งนี้ใน/etc/docker/daemon.json:

{                                                                          
    "dns": ["10.0.0.2", "10.0.0.3"]                                                                           
}     

ออกจากรูท:

# exit

ตอนนี้รีสตาร์ทนักเทียบท่า:

$ sudo service docker restart

การยืนยัน :

ตรวจสอบว่าการเพิ่ม/etc/docker/daemon.jsonไฟล์ช่วยให้คุณสามารถแก้ไข 'google.com' ในที่อยู่ IP ได้:

$ docker run --rm busybox nslookup google.com
Server:    10.0.0.2
Address 1: 10.0.0.2
Name:      google.com
Address 1: 2a00:1450:4009:811::200e lhr26s02-in-x200e.1e100.net
Address 2: 216.58.198.174 lhr25s10-in-f14.1e100.net

ข้อมูลอ้างอิง :

ฉันใช้วิธีแก้ปัญหาของฉันจากบทความของ Robin Winslow ซึ่งสมควรได้รับเครดิตทั้งหมดสำหรับการแก้ปัญหานี้ ขอบคุณโรบิน!

"แก้ไขการกำหนดค่า DNS เครือข่ายของ Docker" โรบินวินสโลว์ สืบค้นเมื่อ 2016-11-09. https://robinwinslow.uk/2016/06/23/fix-docker-networking-dns/


3
ฉันได้รับข้อผิดพลาดว่าไม่สามารถเริ่มบริการได้หลังจากการเปลี่ยนแปลง นี่เป็นเพราะฉันแก้ไข DOCKER_OPTS ใน / etc / default / docker และ /etc/init.d/docker การย้อนกลับการเปลี่ยนแปลงช่วยแก้ปัญหาการเริ่มต้นของบริการนักเทียบท่า
Twiebie

7
สิ่งนี้ใช้ได้ผลสำหรับฉัน (ในเครือข่ายของ บริษัท ) ในขณะที่โซลูชันที่ยอมรับไม่ได้
David Ebbo

1
สิ่งนี้ใช้ได้ผลสำหรับฉันเช่นกันในขณะที่วิธีแก้ปัญหาที่ยอมรับไม่ได้ ฉันใช้ nslookup เพื่อรับ IP เซิร์ฟเวอร์ DNS ของฉันแม้ว่าจะไม่ใช่ nmcli
Necro

2
daemon.json ก็ใช้ได้เช่นกัน! และคุณสามารถตรวจสอบได้ว่า บริษัท ของคุณบล็อก 8.8.8.8 ด้วยคำสั่งนี้หรือไม่nslookup google.com 8.8.8.8ในกรณีของฉันฉันจึงได้รับข้อผิดพลาดนี้connection timed out; no servers could be reached
ROTOGG

3
ฉันคิดว่าเหตุผลที่ใช้/etc/default/dockerไม่ได้สำหรับบางคนคือ (อ้างความคิดเห็นจากไฟล์)# THIS FILE DOES NOT APPLY TO SYSTEMD
Jakub Bochenski

88

หลังจากปวดหัวมากฉันพบคำตอบ Could not resolve 'archive.ubuntu.com'สามารถแก้ไขได้โดยทำการเปลี่ยนแปลงต่อไปนี้:

  1. ยกเลิกการใส่ข้อคิดเห็นในบรรทัดต่อไปนี้ /etc/default/docker
    DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"

  2. เริ่มบริการ Docker ใหม่ sudo service docker restart

  3. ลบภาพใด ๆ ที่แคชการตั้งค่า DNS ที่ไม่ถูกต้อง

  4. สร้างอีกครั้งและปัญหาควรได้รับการแก้ไข

เครดิตไปที่Andrew SB


7
คุณยังสามารถเพิ่ม --no-cache = true ได้หากคุณไม่ต้องการทำ # 3 ด้านบน
jschorr

8
สิ่งนี้ไม่ได้ผลสำหรับฉันและฉันไม่รู้ว่าทำไม ฉันต่อสู้กับเรื่องนี้มาหลายสัปดาห์แล้ว
Corey Ogburn

2
ฉันใช้ linux mint ดังนั้นจึงไม่มี boot2docker / etc / default / docker ถูกสร้างขึ้นและมีแฟล็ก DOCKER_OPTS ด้านบน ฉันได้เริ่มบริการใหม่ล้างรูปภาพและคอนเทนเนอร์ทั้งหมดแล้ว แต่ก็ยังไม่มีอะไร
Corey Ogburn

2
@CoreyOgburn ฉันจะลอง --no-cache = true ตามที่ jschorr กล่าวไว้ข้างต้น เช่นdocker build --no-cache=true ...
Matt Carrier

6
ฉันวิ่งdocker build --no-cache=true -t docker-whale .แต่ดูเหมือนจะไม่มีอะไรแตกต่างออกไป
Corey Ogburn

46

ฉันพบปัญหาเดียวกัน แต่ neiter uncommenting / etc / default / docker dns รายการหรือแก้ไข/etc/resolv.confใน build container หรือ/etc/docker/daemon.jsonช่วยให้ฉัน

แต่หลังจากที่ฉันสร้างด้วยตัวเลือก --network = host การแก้ไขก็ทำได้ดีอีกครั้ง

docker build --network=host -t my-own-ubuntu-like-image .

บางทีนี่อาจจะช่วยใครบางคนได้อีกครั้ง


ฉันได้รับข้อผิดพลาดอื่นเป็นเวลานาน "ไม่สามารถเชื่อมต่อกับ archive.ubuntu.com:80 (xxxx) - เชื่อมต่อ (111: การเชื่อมต่อถูกปฏิเสธ)" และพบว่าขณะนี้การใช้โฮสต์ --network = ได้รับการแก้ไขแล้ว ปัญหาของฉัน
Eric Arseneau

หลังจากแก้ไขปัญหามากมายนี่เป็นสิ่งเดียวที่ใช้ได้ผลสำหรับฉัน
math0ne

15

ฉันเชื่อว่าคำตอบของ Matt Carrierเป็นทางออกที่ถูกต้องสำหรับปัญหานี้ อย่างไรก็ตามหลังจากใช้งานแล้วฉันยังคงสังเกตเห็นพฤติกรรมเดิม: could not resolve 'archive.ubuntu.com'.

สิ่งนี้ทำให้ฉันพบในที่สุดว่าเครือข่ายที่ฉันเชื่อมต่ออยู่นั้นบล็อก DNS สาธารณะ วิธีแก้ไขปัญหานี้คือกำหนดค่าคอนเทนเนอร์ Docker ของฉันให้ใช้เซิร์ฟเวอร์ชื่อเดียวกับที่โฮสต์ของฉัน (เครื่องที่ฉันใช้ Docker) ใช้อยู่

ฉันทดสอบอย่างไร:

  1. เนื่องจากฉันทำงานผ่านเอกสาร Docker ฉันจึงมีอิมเมจตัวอย่างติดตั้งอยู่ในเครื่องของฉันแล้ว ฉันสามารถเริ่มคอนเทนเนอร์ใหม่เพื่อเรียกใช้อิมเมจนั้นและสร้างเซสชันทุบตีใหม่ในคอนเทนเนอร์นั้น:docker run -it docker/whalesay bash
  2. คอนเทนเนอร์มีการเชื่อมต่ออินเทอร์เน็ตหรือไม่: ping 172.217.4.238(google.com)
  3. คอนเทนเนอร์สามารถแก้ไขชื่อโฮสต์ได้หรือไม่ ping google.com

ในกรณีของฉันครั้งแรกpingส่งผลให้เกิดการตอบสนอง แต่อย่างที่สองไม่ได้

ฉันแก้ไขอย่างไร:

เมื่อฉันพบว่า DNS ไม่ทำงานในคอนเทนเนอร์ฉันยืนยันว่าฉันสามารถทำซ้ำพฤติกรรมเดียวกันบนโฮสต์ได้ nslookup google.comแก้ไขได้ดีบนโฮสต์ แต่nslookup google.com 8.8.8.8หรือnsloookup google.com 8.8.4.4หมดเวลา

ต่อไปฉันพบเนมเซิร์ฟเวอร์ที่โฮสต์ของฉันใช้โดยเรียกใช้nm-tool(บน Ubuntu 14.04) ในหลอดเลือดดำของการตอบรับอย่างรวดเร็วผมเริ่มขึ้นภาพตัวอย่างอีกครั้งและเพิ่มที่อยู่ IP ของเซิร์ฟเวอร์ชื่อไปยังแฟ้ม resolv.conf sudo vi /etc/resolv.confคอนเทนเนอร์ที่: เมื่อบันทึกแล้วฉันลอง ping อีกครั้ง ( ping google.com) และครั้งนี้ได้ผล!

โปรดทราบว่าการเปลี่ยนแปลงที่เกิดขึ้นกับ resolv.conf ของคอนเทนเนอร์จะไม่เกิดขึ้นอย่างต่อเนื่องและจะหายไปเมื่อรีสตาร์ทคอนเทนเนอร์ ในกรณีของฉันวิธีแก้ปัญหาที่เหมาะสมกว่าคือเพิ่มที่อยู่ IP ของเนมเซิร์ฟเวอร์ของเครือข่ายของฉันไปยัง/etc/default/dockerไฟล์ของโฮสต์


2
คำสั่งที่เป็นรูปธรรมเพื่อรับเนมเซิร์ฟเวอร์ที่อยู่: nmcli device show <interfacename> | grep IP4.DNS(Ubuntu> = 15) และnmcli dev list iface <interfacename> | grep IP4(Ubuntu <15) เครดิต: มาร์ตี้ผัด
r0estir0bbe

นี่คือคำตอบที่กว้างขวางมากขึ้น ฉันมักจะมีปัญหาเมื่อเปลี่ยนไปใช้เครือข่ายสำนักงานหรือเมื่อมีการเปลี่ยนแปลงเครือข่าย การเพิ่มเซิร์ฟเวอร์ DNS ของ บริษัท ของคุณช่วยแก้ปัญหาการค้นหา
gvd

1
คำแนะนำมาก! เป็นเรื่องยากที่จะหาคำตอบที่แสดงวิธีการตรวจสอบปัญหาจากนั้นให้การแก้ไข (และยืนยันว่าการแก้ไขได้ผล) การแก้ปัญหาที่ยอดเยี่ยม!
Matthew Kraus

เฮ้คุณช่วยฉันหน่อยได้ไหม ฉันมีปัญหาเดียวกัน แต่โฮสต์ของฉันเป็นเครื่อง windows ที่ฉันพยายามเรียกใช้คอนเทนเนอร์นักเทียบท่าและพยายามกำหนดค่าอิมเมจ Ubuntu ที่นั่น เมื่อคุณพูดถึงเนมเซิร์ฟเวอร์ที่นี่หมายถึงที่อยู่เซิร์ฟเวอร์ DNS ของเครื่อง windows ของฉันหรือไม่? และในนั้นจะเป็นตัวหลักหรือตัวรอง?
CodeHunter

นี่เป็นปัญหาที่พบบ่อยเนื่องจากองค์กรของฉันบล็อก DNS สาธารณะและการตั้งค่า DNS ขององค์กรใน / etc / default / docker ภายใต้ DOCKER_OPTS ใช้งานได้และแก้ไขปัญหาได้แล้ว ทุกคนทักคำตอบนี้ ...
skm

7

หลังจากเพิ่ม local dns ip ไปยังไฟล์นักเทียบท่าเริ่มต้นมันเริ่มทำงานให้ฉัน ... โปรดดูขั้นตอนด้านล่าง ...

$ nm-tool # (will give you the dns IP)

DNS: 172.168.7.2

$ vim /etc/default/docker # (uncomment the DOCKER_OPTS and add DNS IP)
DOCKER_OPTS="--dns 172.168.7.2 --dns 8.8.8.8 --dns 8.8.4.4"

$ rm `docker ps --no-trunc -aq` # (remove all the containers to avoid DNS cache)

$ docker rmi $(docker images -q) # (remove all the images)

$ service docker restart #(restart the docker to pick up dns setting)

ตอนนี้ไปข้างหน้าและสร้างนักเทียบท่า ... :)


7

สำหรับใครก็ตามที่กำลังมีปัญหานี้เช่นกันฉันแก้ไขปัญหาของฉันด้วยการแก้ไข/etc/default/dockerไฟล์ตามคำตอบและคำถามอื่น ๆ ที่แนะนำ อย่างไรก็ตามฉันไม่รู้ว่าจะใช้ IP ใดเป็น DNS

หลังจากนั้นไม่นานฉันก็รู้ว่าฉันต้องทำงานifconfig dockerบนโฮสต์เพื่อแสดง IP สำหรับอินเทอร์เฟซเครือข่ายนักเทียบท่า

docker0   Link encap:Ethernet  Endereço de HW 02:42:69:ba:b4:07  
          inet end.: 172.17.0.1  Bcast:0.0.0.0  Masc:255.255.0.0
          endereço inet6: fe80::42:69ff:feba:b407/64 Escopo:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Métrica:1
          pacotes RX:8433 erros:0 descartados:0 excesso:0 quadro:0
          Pacotes TX:9876 erros:0 descartados:0 excesso:0 portadora:0
          colisões:0 txqueuelen:0 
          RX bytes:484195 (484.1 KB) TX bytes:24564528 (24.5 MB)

มันอยู่172.17.0.1ในกรณีของฉัน หวังว่านี่จะช่วยทุกคนที่มีปัญหานี้เช่นกัน


7
มันจะมีประโยชน์ถ้าคุณระบุวิธีที่คุณแก้ไขไฟล์นักเทียบท่าของคุณ
physincubus

1
บน Ubuntu 18.04:ifconfig docker0
automorphic

6

ฉันพบคำตอบนี้หลังจากใช้ Googleing ฉันใช้ Windows ดังนั้นคำตอบข้างต้นบางคำจึงใช้ไม่ได้กับระบบไฟล์ของฉัน

โดยทั่วไปเรียกใช้:

docker-machine ssh default
echo "nameserver 8.8.8.8" > /etc/resolv.conf

ซึ่งเพียงแค่เขียนทับเซิร์ฟเวอร์ชื่อที่มีอยู่ที่ใช้กับ8.8.8.8ฉันเชื่อ มันได้ผลสำหรับฉัน!

จากความคิดเห็นบางส่วนคุณอาจต้องรูท sudo -iต้องการทำเช่นนั้นปัญหา


สิ่งนี้ใช้ไม่ได้สำหรับฉันใน Windows 10 เพราะsshไม่มีอยู่?
Seanny123

@ Seanny123 เป็นเวลานานแล้วที่ฉันได้ทำอะไรกับสิ่งนี้ แต่ฉันก็ใช้ Windows 10 เช่นกัน ฉันอาจเคยใช้Docker Toolboxรุ่นเก่าในเวลานั้น? มิฉะนั้นคุณอาจจำเป็นต้องเปิดใช้งาน SSH ไคลเอ็นต์ของ ฉันอาจจะเริ่มต้นด้วยสิ่งนั้น
Engineero

1
สิ่งนี้ได้ผลสำหรับฉันหลังจากที่ฉันกลายเป็นรูทเพื่อทำเช่นนั้นsudo -iเมื่อคุณเข้ามา
MediaVince

5

ฉันแค่ต้องการเพิ่มคำตอบที่ล่าช้าสำหรับทุกคนที่พบปัญหานี้จากเครื่องมือค้นหา

อย่าทำอย่างนี้:ผมใช้จะมีตัวเลือกใน / etc / default / iptables=falseนักเทียบท่าในการตั้งค่า นี่เป็นเพราะ ufw ไม่ทำงาน (ทุกอย่างถูกเปิดแม้ว่าจะอนุญาตให้ใช้เพียง 3 พอร์ต) ดังนั้นฉันจึงทำตามคำตอบของคำถามนี้แบบสุ่ม: ไฟร์วอลล์ที่ไม่ซับซ้อน (UFW) ไม่ได้ปิดกั้นสิ่งใดเมื่อใช้ Dockerและสิ่งนี้ซึ่งเชื่อมโยงใน ความคิดเห็น

ฉันมีความเข้าใจน้อยมากเกี่ยวกับกฎ iptables / nat / การกำหนดเส้นทางโดยทั่วไปด้วยเหตุนี้ฉันจึงอาจทำบางสิ่งที่ไร้เหตุผล

ปรากฎว่าฉันอาจกำหนดค่าไม่ถูกต้องและฆ่าการแก้ปัญหา DNS ภายในคอนเทนเนอร์ของฉัน เมื่อฉันรันเทอร์มินัลคอนเทนเนอร์แบบโต้ตอบ:docker run -i -t ubuntu:14.04 /bin/bash

ฉันได้ผลลัพธ์เหล่านี้:

root@6b0d832700db:/# ping google.com
ping: unknown host google.com

root@6b0d832700db:/# cat /etc/resolv.conf
search online.net
nameserver 8.8.8.8
nameserver 8.8.4.4

root@6b0d832700db:/# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=56 time=1.76 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=56 time=1.72 ms

การคืนค่าการกำหนดค่า ufw ทั้งหมดของฉัน (before.rules) การปิดใช้งาน ufw และการลบ iptables = false จาก / etc / default / docker เรียกคืนฟังก์ชันการแก้ปัญหา DNS ของคอนเทนเนอร์

ตอนนี้ฉันรอคอยที่จะเปิดใช้งานฟังก์ชัน ufw อีกครั้งโดยทำตามคำแนะนำเหล่านี้แทน


3

ฉันมีปัญหาเดียวกันและลองทำตามขั้นตอนที่กล่าวถึง แต่ดูเหมือนจะไม่มีผลจนกว่าจะรีเฟรชการตั้งค่าเครือข่าย

ขั้นตอน:

  1. ดังที่ได้กล่าวเพิ่มเพื่อDOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --ip-masq=true"/etc/default/docker
  2. ล้างเนื้อหาในตาราง PREROUTING ด้วยตนเองโดยใช้ไฟล์iptables -t nat -F POSTROUTING. หลังจากเรียกใช้สิ่งนี้ให้รีสตาร์ทนักเทียบท่าและจะเริ่มต้นตาราง nat ด้วยช่วง IP ใหม่

3

ปัญหาเดียวกันสำหรับฉัน (บน Ubuntu Xenial)

  • docker run --dns ... สำหรับตู้คอนเทนเนอร์ทำงาน
  • การอัพเดตอ็อพชัน docker daemon สำหรับdocker build(docker-compose ฯลฯ ) ไม่ทำงาน

หลังจากวิเคราะห์บันทึกนักเทียบท่าแล้ว ( journalctl -u docker.service) หากพบคำเตือนเกี่ยวกับ resolvconf ที่ไม่ถูกต้อง

หลังจากนั้นฉันพบว่าเนมเซิร์ฟเวอร์ขององค์กรของเราถูกเพิ่มในอินเตอร์เฟสเครือข่าย แต่ไม่ได้อยู่ใน resolvconf

ใช้โซลูชันนี้ฉันจะกำหนดค่า DNS แบบคงที่ในอินเทอร์เฟซได้อย่างไร (askubuntu)ได้แก่ การเพิ่มเนมเซิร์ฟเวอร์ใน/etc/resolvconf/resolv.conf.d/tail

หลังจากอัปเดต resolvconf (หรือรีบูต)

bash docker run --rm busybox nslookup google.com

ทำงานได้ทันที

งานสร้างนักเทียบท่าเขียนทั้งหมดของฉันใช้งานได้แล้ว


2

วันนี้ฉันมีปัญหาเดียวกันฉันเพิ่งเพิ่มบรรทัดด้านล่างไปที่ / etc / default / docker

DOCKER_OPTS="--dns 172.18.20.13 --dns 172.20.100.29 --dns 8.8.8.8"

จากนั้นฉันรีสตาร์ทแล็ปท็อปของฉัน

ในกรณีของฉันการรีสตาร์ท Docker daemon นั้นไม่เพียงพอสำหรับฉันฉันต้องรีสตาร์ทแล็ปท็อปเพื่อให้ใช้งานได้


2

ก่อนที่จะใช้เวลามากเกินไปในการแก้ปัญหาอื่น ๆ ให้รีสตาร์ท Dockerแล้วลองอีกครั้ง

แก้ไขปัญหาให้ฉันโดยใช้ Docker Desktop สำหรับ Windows บน Windows 10


การรีสตาร์ทด้วยสิทธิ์ของผู้ดูแลระบบช่วยแก้ปัญหาในกรณีของฉันได้
vein

1

ฉันได้พยายามสำหรับบางเวลาที่มีในตอนนี้เช่นกัน Ubuntu 16.04 x64แต่ที่นี่มันเป็นสิ่งที่แก้ไขได้สำหรับฉันใน ฉันหวังว่ามันจะช่วยประหยัดเวลาของใครบางคนด้วย

  1. ใน/etc/NetworkManager/NetworkManager.conf: แสดงความคิดเห็น #dns=dnsmasq

  2. สร้าง (หรือแก้ไข) /etc/docker/daemon.json:

{
    "dns": ["8.8.8.8"]
}
  1. รีสตาร์ท Docker ด้วย: sudo service docker restart

ดูเหมือนจะเป็นวิธีแก้ปัญหาเดียวกันกับstackoverflow.com/a/40516974/2308683
OneCricketeer

ไม่จริง การแก้ไขใน NetworkManager.conf สร้างความแตกต่างให้กับกรณีของฉัน
palamunder

ฉันสงสัยอย่างยิ่งว่าการปิดใช้งานระบบ dnsmasq แบบกว้างเป็นทางออกที่ดีที่สุดสำหรับ Docker โดยเฉพาะ
OneCricketeer

ฉันกำลังแบ่งปันสิ่งที่ได้ผลสำหรับฉันหลังจากต่อสู้กับปัญหานี้มา 2 วัน
palamunder

สิ่งนี้ไม่ได้ผลสำหรับฉัน
desmond13

0

ในระบบของฉัน ( macOS High Sierra 10.13.6มีDocker 2.1.0.1) นี่เป็นเพราะพร็อกซีของ บริษัท

ฉันแก้ไขได้สองขั้นตอน:

  1. กำหนดการตั้งค่าพร็อกซีด้วยตนเองใน Preferences>Proxies
  2. เพิ่มการตั้งค่าเดียวกันใน config.json ของคุณภายใน~/.docker/config.jsonเช่น:

     "proxies":
    {
      "default":
      {
        "httpProxy": "MYPROXY",
        "httpsProxy": "MYPROXY",
        "noProxy": "MYPROXYWHITELIST"
      }
    }
    
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.