簡體   English   中英

將 /32 ip 地址分配給容器 docker compose Ubuntu 20.04

[英]Assigning /32 ip addr to containers with docker compose Ubuntu 20.04

您可能很快就會注意到,我既不是 a.network 也不是 docker 大師。 我感謝所有的幫助!

我正在嘗試使用 docker-compose 在兩個不同的 docker 容器中運行兩個應用程序。我設法使用 host.network 運行 1 個應用程序。 非常成功,至少完成了我目標的一半。 每個容器都需要映射到特定的 IP 地址。 如果你想知道為什么,那是因為容器中的服務將被特定端口上 www 上的其他應用程序訪問。 但是每個容器都使用相同的端口進行此通信。 為了讓您更直觀地了解所需的設置,這里有一個視覺效果:

所需的網絡設置

對於服務 AI,將容器鏈接到 host.network。 我的 docker-compose.yml 看起來像這樣:

version: "3.8"
services:
  shell:
    image: "${MAIN_IMAGE}"
    container_name: mnm_shell
    network_mode: host
    pid: host
    volumes:
      - "mnms:/home/mnms"
    entrypoint: [ "bash" ]
    env_file:
      - "./.env"

經過大量研究,我找到了許多描述如何使用私有地址 su.net 制作 macvlan 的文章,但我沒有找到任何描述如何將一個(或多個)/32.networks 鏈接到特定容器的文章。

歡迎任何幫助、指導和示例。 提前致謝!

自您發布以來已經 6 個月了,希望您仍然會發現它有用。

您可以通過創建使用macvlan驅動程序的自定義 docker.network 來完成您的要求。 docker相關參考: https://docs.docker.com.network.network-tutorial-macvlan/#bridge-example

首先創建.network:

docker network create -d macvlan \
  --subnet=50.50.50.0/24 \
  --gateway=50.50.50.1 \
  -o parent=eth0 \
  my-macvlan-network

創建后,您可以在 docker-compose 文件中引用它。 我在這里改編了你原來的例子:

version: "3.8"

networks:
  my-macvlan-network:
    external: true

services:
  shell:
    image: "${MAIN_IMAGE}"
    container_name: mnm_shell
    networks:
      macvlan1:
        ipv4_address: 50.50.50.201
    volumes:
      - "mnms:/home/mnms"
    entrypoint: [ "bash" ]
    env_file:
      - "./.env"

注意: host .networking 已被刪除。

有幾點需要注意:

我在帶有 PiHole 和 Gitea 容器的 linux 主機上使用這種技術。 Pihole 需要端口 53 (DNS) 而 gitea 需要端口 22 (SSH)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM