การกำหนดค่า Docker เพื่อไม่ใช้ช่วง 172.17.0.0


21

เนื่องจากปัญหาเกี่ยวกับ Captive Port และช่วง Docker IP เริ่มต้นฉันพยายามทำให้ Docker ใช้ช่วง 198.18.0.0 แทนที่จะเป็น 172.17.0.0 ซึ่งปะทะกับ Captive Port ที่ใช้กับรถไฟที่ฉันอาศัยอยู่

ต่อไปนี้เอกสารฉันสร้าง/etc/docker/daemon.jsonและวางต่อไปในมัน

{
    "bip":"198.18.0.0/16"
}

สิ่งนี้ใช้ได้กับ docker0 แต่ดูเหมือนว่าจะไม่ได้รับผลกระทบใด ๆ ของเครือข่ายอื่น ๆ และการใช้นักเทียบท่าเขียนเครือข่ายแรกที่สร้างขึ้นคือ 172.17.0.0 ซึ่งสร้างความขัดแย้งขึ้นใหม่

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

คำตอบ:


27

เป็นไปได้ที่จะกำหนดช่วงเริ่มต้นใหม่

$ docker -v
Docker version 18.06.0-ce, build 0ffa825

แก้ไขหรือสร้างไฟล์กำหนดค่าสำหรับ docker daemon:

# nano /etc/docker/daemon.json

เพิ่มบรรทัด:

{
  "default-address-pools":
  [
    {"base":"10.10.0.0/16","size":24}
  ]
}

รีสตาร์ท dockerd:

# service docker restart

ตรวจสอบผลลัพธ์:

$ docker network create foo
$ docker network inspect foo | grep Subnet
                    "Subnet": "10.10.1.0/24"

มันใช้งานได้สำหรับนักเทียบท่าเขียนเช่นกัน ข้อมูลเพิ่มเติมที่นี่https://github.com/moby/moby/pull/29376 (รวมแล้ว)


10.10.0.0/16 ทับซ้อนกับเครือข่ายเริ่มต้นทั่วโลก คุณสามารถใช้ {"base": "192.168.0.0/16","size":24} โปรดดูgithub.com/moby/moby/blob/…
รูท G

11

มีสามสถานที่เทียบท่าจะสร้างเครือข่ายย่อย

  • บริดจ์เริ่มต้น
  • ผู้ใช้สร้างเครือข่ายบริดจ์
  • โหมด Swarm สร้างเครือข่ายโอเวอร์เลย์

สำหรับบริดจ์เริ่มต้น (เรียกว่า "บริดจ์") คุณสามารถระบุ BIP (ฉันเชื่อว่าเป็น Bridge IP ตรวจสอบให้แน่ใจว่าเป็น IP โฮสต์ไม่ใช่ IP เครือข่าย ) ในdaemon.jsonไฟล์ และสำหรับผู้ใช้ที่สร้างเครือข่ายบริดจ์คุณสามารถกำหนด subnet pool ให้เลือก (สมมติว่าผู้ใช้ไม่ได้ระบุ subnet ด้วยตนเอง) สำหรับสองคนนี้คุณ/etc/docker/daemon.jsonจะมีลักษณะดังนี้:

{
  "bip": "10.200.0.1/24",
  "default-address-pools":[
    {"base":"10.201.0.0/16","size":24},
    {"base":"10.202.0.0/16","size":24}
  ]
}

การตั้งค่ากลุ่มที่อยู่แต่ละรายการข้างต้นจะกำหนดช่วง CIDR และขนาดของเครือข่ายย่อยที่จะจัดสรรจากช่วงนั้น ดังนั้นข้างต้นกำหนดช่วงสองคลาส B ที่จัดสรรเป็นเครือข่ายคลาส C (/ 24) คุณต้องการอย่างน้อย 18.06 สำหรับกลุ่มที่อยู่เริ่มต้น คุณจะต้องโหลดนักโหลดดีมอนเพื่อให้การเปลี่ยนแปลงนี้มีผล ( systemctl reload docker) และการเปลี่ยนแปลงนี้จะแก้ไขเครือข่ายผู้ใช้ที่เพิ่งสร้างใหม่เท่านั้นดังนั้นคุณจะต้องหยุดคอนเทนเนอร์และลบเครือข่ายที่มีอยู่ในช่วงที่ไม่ถูกต้อง


ใน 18.09 นักเทียบท่าเพิ่มความสามารถในการระบุช่วงที่อยู่สำหรับโหมดจับกลุ่มที่สร้างเครือข่ายโอเวอร์เลย์ สิ่งนี้สามารถทำได้ในเวลาที่มีการสร้างฝูงเท่านั้นหวังว่าจะได้รับการปรับปรุงในอนาคตเพื่ออนุญาตให้docker swarm updateปรับพูลเหล่านี้:

$ docker swarm init \
  --default-addr-pool 10.202.0.0/16 \
  --default-addr-pool 10.203.0.0/16 \
  --default-addr-pool-mask-length 24

1
สรุปยอดเยี่ยมของตัวเลือกปัจจุบัน 2018/2019 นอกจากนี้หากใช้ Docker Desktop bipตัวเลือกในการตั้งค่า / การตั้งค่า GUI สำหรับdefault-address-poolsคุณสามารถแก้ไข daemon.json ด้วยตนเองใน GUI เดียวกันนั้นและสำหรับฝูงของdefault-addr-poolคุณยังคงเปลี่ยนพวกเขาด้วยinitคำสั่ง
Bret Fisher

1

กำหนดค่าเครือข่ายบริดจ์เริ่มต้น : "... ในการกำหนดค่าเครือข่ายบริดจ์เริ่มต้นคุณระบุตัวเลือกใน daemon.json ต่อไปนี้เป็นตัวอย่าง daemon.json พร้อมตัวเลือกหลายตัวที่ระบุระบุการตั้งค่าที่คุณต้องการปรับแต่ง ... "

ด้วยการเขียน: ระบุเครือข่ายที่กำหนดเอง : "... แทนที่จะเพียงแค่ใช้เครือข่ายแอพเริ่มต้นคุณสามารถระบุเครือข่ายของคุณเองด้วยคีย์เครือข่ายระดับบนสุดซึ่งจะช่วยให้คุณสร้างโทโพโลยีที่ซับซ้อนมากขึ้นและระบุไดรเวอร์เครือข่ายและตัวเลือกที่กำหนดเอง ใช้เพื่อเชื่อมต่อบริการกับเครือข่ายที่สร้างจากภายนอกซึ่งไม่ได้รับการจัดการโดย Compose … "


เป็นไปได้หรือไม่ที่จะเปลี่ยนช่วง IP ที่ใช้สำหรับเครือข่ายโดยนัยที่ใช้โดยนักเทียบท่าเขียนและคนที่ไม่มีช่วงกำหนดไว้อย่างชัดเจน?
jrtapsell

-1

มันอาจจะโหดร้ายนิดหน่อย แต่ฉันเพียงแค่ทำการsudo ifconfig docker0 downปิดอินเทอร์เฟซที่ขัดแย้งกับ wifi ที่ฉันพยายามใช้


คำถามเกี่ยวกับการใช้ช่วงอื่นไม่ใช่เกี่ยวกับการปิดเครือข่าย
RalfFriedl

@RalfFriedl นั่นเป็นเรื่องจริง แต่ในฐานะนักเดินทางบ่อยที่ใช้เครือข่าย wifi ที่แตกต่างกันฉันได้เห็นช่วงพอร์ตทุกประเภทกำลังขัดแย้งกัน ดังนั้นแทนที่จะค้นหาช่วงพอร์ตหนึ่งสามารถปิดเครือข่ายได้ชั่วคราว
Falko Menge
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.