![](/img/trans.png)
[英]I can not see running docker compose containers on 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 已被刪除。
有幾點需要注意:
macvlan
IP,但是您的 docker 主機不能。 請參閱以下鏈接以了解解決該問題的方法: https://github.com/sarunas-zilinskas/docker-compose-macvlan#enable-host-to-container.networking我在帶有 PiHole 和 Gitea 容器的 linux 主機上使用這種技術。 Pihole 需要端口 53 (DNS) 而 gitea 需要端口 22 (SSH)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.