Score:1

นักเทียบท่า - สร้างสองคอนเทนเนอร์โดยมีรหัสเครือข่ายต่างกันสองรหัสแทนที่จะใช้เครือข่ายบริดจ์เริ่มต้น

ธง uz

เป้าหมายของฉันคือว่า เจนกินส์ ตู้คอนเทนเนอร์จะ "พูดคุย" กับ คำตอบ คอนเทนเนอร์เพื่อสร้าง เจนกินส์ ไฟล์สำหรับ เจนกินส์ ไปป์ไลน์

ฉันคาดหวังว่าคอนเทนเนอร์ทั้งสองจะ "เข้าร่วม" สะพาน เครือข่ายและรับ 2 ที่อยู่ IP ของรหัสเครือข่ายเดียวกัน แต่สร้างเครือข่ายเพิ่มอีก 2 เครือข่ายแทน และแต่ละคอนเทนเนอร์มี IP ของรหัสเครือข่ายต่างกัน

นอกจากนี้คาดว่าคอนเทนเนอร์ทั้งสองจะสามารถเข้าถึงอินเทอร์เน็ตได้

ดังนั้น ใน Windows 10 ของฉัน ฉันใช้ Docker Desktop ฉันมีไฟล์ docker-compose.yml 2 ไฟล์
หนึ่งสำหรับ เจนกินส์ คอนเทนเนอร์:

รุ่น: '3.7'
บริการ:
  เจนกินส์:
    ภาพ: jenkins/jenkins:lts
    สิทธิพิเศษ: จริง
    ผู้ใช้: ราก
    พอร์ต:
      - 8080:8080
      - 50,000:50,000
    container_name: เจนกินส์

อีกอย่างสำหรับ คำตอบ คอนเทนเนอร์:

รุ่น: '2'
บริการ:
  ใช้งานได้:
    container_name: ใช้งานได้
    ชื่อโฮสต์: ansible
    รูป: ansible
    ปริมาณ:
      - ~/product/ansible:/ansible
    working_dir: /แก้ไขได้
    สร้าง:
      บริบท: .
      นักเทียบท่าไฟล์: Dockerfile
    DNS:
      - 200.20.200.20

ฉันรันคำสั่งต่อไปนี้สำหรับแต่ละไฟล์ docker-compose.yml ดังนั้นฉันจึงมีสองเครื่องแยกกัน:

นักเทียบท่า-เขียนขึ้น --build

ฉันได้ตรวจสอบรายละเอียดเครือข่ายคอนเทนเนอร์ของฉันและพบว่าแต่ละคอนเทนเนอร์มีรหัสเครือข่ายที่แตกต่างกัน โปรดดูด้านล่าง:

PS > นักเทียบท่าตรวจสอบ -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ansible
172.18.0.2
PS > นักเทียบท่าตรวจสอบ -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' jenkins
172.19.0.2

ตรวจสอบส่วนเครือข่ายนักเทียบท่าของฉันพบว่ามีการสร้างเครือข่ายเพิ่มอีก 2 เครือข่าย สะพาน, เจ้าภาพ และ ไม่มี:

PS > เครือข่ายนักเทียบท่า ls
ขอบเขตไดรเวอร์ชื่อรหัสเครือข่าย
8cefaed24885 ansible_default บริดจ์ในเครื่อง
44bedcd1622dสะพานสะพานท้องถิ่น
61e1c7f7051e โฮสต์โฮสต์โลคัล
b5a7a7a424a4 jenkins_default บริดจ์ในเครื่อง
4e5d6c77cb5a ไม่มีค่าว่างในเครื่อง

แน่นอนการตรวจสอบ สะพาน เครือข่ายแสดงให้เห็นว่า คอนเทนเนอร์ คีย์ว่างเปล่า:

{
    "ชื่อ": "สะพาน",
    "รหัส": "44bedcd1622d820ce4e29a5cd545f244ba2d303102f1956fe76069a63e7c220e",
    "สร้างแล้ว": "2021-08-25T13:13:57.6577149Z",
    "ขอบเขต": "ท้องถิ่น",
    "คนขับ": "สะพาน",
    "เปิดใช้งาน IPv6": เท็จ
    "IPAM": {
        "ไดรเวอร์": "ค่าเริ่มต้น",
        "ตัวเลือก": null,
        "การกำหนดค่า": [
            {
                "เครือข่ายย่อย": "172.17.0.0/16",
                "เกตเวย์": "172.17.0.1"
            }
        ]
    },
    "ภายใน": เท็จ
    "แนบได้": เท็จ
    "ทางเข้า": เท็จ
    "ConfigFrom": {
        "เครือข่าย": ""
    },
    "ConfigOnly": เท็จ
    "คอนเทนเนอร์": {},
    "ตัวเลือก": {
        "com.docker.network.bridge.default_bridge": "จริง",
        "com.docker.network.bridge.enable_icc": "จริง",
        "com.docker.network.bridge.enable_ip_masquerade": "จริง",
        "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
        "com.docker.network.bridge.name": "docker0",
        "com.docker.network.driver.mtu": "1500"
    },
    "ป้ายกำกับ": {},
    "CreatedTime": 1629897237657
}

คำถามของฉันคือ:
ก) เหตุใดจึงสร้างเครือข่ายนักเทียบท่าอีกสองเครือข่ายเมื่อฉันวิ่ง นักเทียบท่า-เขียนขึ้น --build สั่งการ?
ข) ฉันจะทำให้คอนเทนเนอร์เหล่านั้นใช้งานได้อย่างไร สะพาน เครือข่ายและรับ IP ของรหัสเครือข่ายเดียวกัน (รหัสเครือข่ายสะพาน 172.17.x.x) เพื่อที่พวกเขาจะได้พูดคุยกัน?

Score:0
ธง ro

โซลูชันสำหรับการเชื่อมต่อหลายอินสแตนซ์ที่เขียนโดยนักเทียบท่าคือการใช้เครือข่ายภายนอก

สร้างเครือข่ายใหม่ก่อนด้วยคำสั่ง:

เครือข่ายนักเทียบท่าสร้างเครือข่ายของฉัน

จากนั้นเพิ่มทั้ง docker-compose.yml ต่อไปนี้:

เครือข่าย:
  my_network:
    ภายนอก: จริง

และในส่วนเครือข่ายของบริการ:

(...)
  เครือข่าย:
    - my_network
(...)

Jenkins docker-compose จะกลายเป็น:

รุ่น: '3.7'

เครือข่าย:
  my_network:
    ภายนอก: จริง

บริการ:
  เจนกินส์:
    ภาพ: jenkins/jenkins:lts
    สิทธิพิเศษ: จริง
    ผู้ใช้: ราก
    เครือข่าย:
      - my_network
    พอร์ต:
      - 8080:8080
      - 50,000:50,000
    container_name: เจนกินส์

ทำตามแนวคิดเดียวกันสำหรับ docker-compose.yml อื่น ๆ

uz flag
ขอบใจ. โปรดชี้แจง: a) มีวิธีใช้เครือข่าย *default bridge* หรือไม่ b) ไวยากรณ์สำหรับ docker-compose เวอร์ชัน ```: 3.7``` เท่ากับ ``` เวอร์ชัน 2.0``` หรือไม่
uz flag
ฉันจะรวม IP แบบคงที่ในโซลูชันของคุณได้อย่างไร
João Alves avatar
ro flag
ก) เครือข่ายบริดจ์เริ่มต้นมีให้บริการใน docker-compose.yml เดียวเท่านั้น หากคุณใส่บริการทั้งหมดลงในไฟล์นั้น บริการทั้งหมดจะแชร์เครือข่ายเดียวกัน b) แต่ละเวอร์ชันของ docker-compose yaml มีรูปแบบเฉพาะของมัน ซึ่งโดยปกติจะเป็นส่วนเสริม แต่มีข้อยกเว้นบางประการ เอกสารเกี่ยวกับหัวข้อนี้มีมากมายในไซต์นักเทียบท่า (https://docs.docker.com/compose/compose-file/compose-versioning/) - ไม่ใช่เรื่องปกติที่จะใช้ IP แบบคงที่ในนักเทียบท่า คุณสามารถแก้ไขที่อยู่ IP จาก DNS ตัวอย่างหนึ่ง: จากเจนกินส์: คอนเทนเนอร์ ansible คือ `ansible.my_network`

โพสต์คำตอบ

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