当我时不时地和docker玩的时候,我挂在一个问题上,我不能再继续下去了。
我想创建一个公共“云”,用户可以在其中创建自己的容器。容器只是一个http应用程序,例如nextcloud。
最好的方法是将容器彼此隔离,并允许通过docker主机到互联网的通信,这样如果必要的话,我可以阻止每个防火墙的一些IP。
这应该同时适用于传入和传出连接。
我为此创建了一个设置,这里描述了:docker macvlan - no route to host (container),但甚至无法使基本设置正常工作。
为了更好地理解,我创建了一个图表:


在docker主机上运行的反向代理查找特定的http报头,并根据该报头将请求转发到所需的容器。
最大的问题是网络设置:我不知道docker、主机和其他什么需要配置才能让它工作。
linux下的网络不是我的强项。
编辑:也许我遇到了XY问题(https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)
发布于 2020-10-01 21:28:57
我做的事情可能有点太简单了,但我不认为你需要使用macvlan。每个容器的正常网络足以分隔所有容器。所有与主机的通信都将通过网关进行。
我只是做了几个有趣的测试:
设置:
rm -f addresses.txt
for i in $( seq 1 5 ) ; do
docker network create test$i
done
for i in $( seq 1 5 ) ; do
docker run -d --rm \
--name myspecialtest$i \
--network test$i \
alpine sleep 3600
docker exec -it myspecialtest$i ifconfig eth0 \
| grep -P -o 'inet addr:\d+\.\d+.\d+.\d+' \
| cut -d: -f2 >> addresses.txt
done测试:
for i in $( seq 1 5 ) ; do
for ipaddress in $( cat addresses.txt ); do
docker exec -it myspecialtest$i \
ping -w 5 $ipaddress
done
done清理:
for i in $( seq 1 5 ) ; do
docker container rm -f myspecialtest$i
docker network rm test$i
done正如您所看到的,容器将只能ping自身,而不能ping其他容器。
https://stackoverflow.com/questions/64155312
复制相似问题