在这个问题之后,我编辑了网关容器以使用host
网络模式:
services:
gateway:
...
network_mode: "host"
然后docker compose up -d
给了我这个:
守护进程的错误响应:未能将接口veth701c890添加到沙箱:错误将接口"veth701c890“IP设置为172.26.0.11/16:无法在沙箱接口中编程地址172.26.0.11/16,因为它与现有路由{Ifindex: 4 Dst: 172.26.0.0/16 Src: 172.26.0.1 Gw:标志:[] Table: 254冲突:
我重新启动了码头,甚至服务器。不走运。
docker-compose.yml
看起来如下(只有gateway
容器已经发布了端口):
version: '3.4'
services:
gateway:
image: <ms-yarp>
environment:
- ASPNETCORE_URLS=https://+:443;http://+:80
ports:
- "80:80"
- "443:443"
volumes:
- ./tls/:/tls/
networks:
- mynet
restart: on-failure
orders:
image: <registry>/orders
environment:
- ASPNETCORE_URLS=http://+:80
networks:
- mynet
restart: on-failure
users:
image: <registry>/users
environment:
- ASPNETCORE_URLS=http://+:80
networks:
- mynet
restart: on-failure
smssender:
image: <registry>/smssender
environment:
- ASPNETCORE_URLS=http://+:80
networks:
- mynet
restart: on-failure
logger:
image: <registry>/logger
environment:
- ASPNETCORE_URLS=http://+:80
networks:
- mynet
restart: on-failure
notifications:
image: <registry>/notifications
environment:
- ASPNETCORE_URLS=http://+:80
networks:
- mynet
restart: on-failure
cacheserver:
image: <registry>/redis
networks:
- mynet
restart: on-failure
...
networks:
mynet:
发布于 2022-11-29 10:59:35
类似于这样的情况:(在windows WSL2上不能使用Desktop,至少我甚至不能运行文档中的nginx示例)
version: '3.4'
services:
gateway:
image: <ms-yarp>
environment:
- ASPNETCORE_URLS=https://+:443;http://+:80
network_mode: host
volumes:
- ./tls/:/tls/
restart: on-failure
orders:
image: <registry>/orders
environment:
- ASPNETCORE_URLS=http://+:80
ports:
- 8080:80
networks:
- mynet
restart: on-failure
users:
image: <registry>/users
environment:
- ASPNETCORE_URLS=http://+:80
ports:
- 8081:80
networks:
- mynet
restart: on-failure
smssender:
image: <registry>/smssender
environment:
- ASPNETCORE_URLS=http://+:80
ports:
- 8082:80
networks:
- mynet
restart: on-failure
logger:
image: <registry>/logger
environment:
- ASPNETCORE_URLS=http://+:80
ports:
- 8082:80
networks:
- mynet
restart: on-failure
notifications:
image: <registry>/notifications
environment:
- ASPNETCORE_URLS=http://+:80
ports:
- 8083:80
networks:
- mynet
restart: on-failure
cacheserver:
image: <registry>/redis
restart: on-failure
networks:
- mynet
在网关服务配置中,还需要更改
http://orders:80到http://localhost:8080
从http://users:80到http://localhost:8081等等
此外,还将8080到8083的停靠主机上的端口限制为只能从本地主机访问,而不能从internet访问。
您甚至可以将所有容器(网关除外)放到一个只能从运行网关容器的对接主机访问的不同的对接主机上,并将网关中的配置从http://orders:80更改为http://otherdockerhost:80等等。
但是,由于这种对接组合是不可行的,您将需要使用docker run
命令“手动”创建容器(或者有两个单独的组合项目,一个用于网关,一个用于其他服务),因此这里需要更严重的容器编排工具,比如kubernetes (您可以尝试码头群、游牧人或任何其他容器调度器,但这些并不受欢迎,所以如果您对kubernetes和码头群都不熟悉,或者其他您从kubernetes开始的更好的方法,您也会从这个项目和您的个人承运人那里获得长远的利益)。
https://stackoverflow.com/questions/74596620
复制相似问题