- 更新**
当我对被拒绝的服务sudo docker ps --no-trunced SERVICE_NAME
运行该命令时,我得到以下信息:network sandbox join failed: subnet sandbox join failed for "10.0.2.0/24": error creating vxlan interface: operation not supported
.
我从网上查到这是一个内核问题,但是我的内核版本已经是5.15
了,对于arm64来说是最新的,有什么替代品吗?
我是相当新的docker,最近我想设置一个traefik容器代理所有容器内的docker,使TLS可以使用。
我学习了Basic Traefik configuration tutorial上的教程
这是我的Docker合成文件:
version: "3.7"
services:
traefik:
image: traefik:v2.6
command:
# Entrypoints configuration
- --entrypoints.web.address=:80
# Docker provider configuration
- --providers.docker=true
# Makes sure that services have to explicitly direct Traefik to expose them
- --providers.docker.exposedbydefault=false
# Default docker network to use for connections to all containers
- --providers.docker.network=bridge
# Logging levels are DEBUG, PANIC, FATAL, ERROR, WARN, and INFO.
- --log.level=info
ports:
- 80:80
networks:
- bridge
restart: unless-stopped
# https://github.com/traefik/whoami
whoami:
image: traefik/whoami:v1.7.1
labels:
# Explicitly instruct Traefik to expose this service
- traefik.enable=true
# Router configuration
## Listen to the `web` entrypoint
- traefik.http.routers.whoami_route.entrypoints=web
## Rule based on the Host of the request
- traefik.http.routers.whoami_route.rule=Host(`whoami.MY_DOMAIN.com`)
- traefik.http.routers.whoami_route.service=whoami_service
# Service configuration
## 80 is the port that the whoami container is listening to
- traefik.http.services.whoami_service.loadbalancer.server.port=80
networks:
- bridge
networks:
bridge:
external:
name: bridge
最初我使用driver: overlay
的网络,这似乎是swarm的要求,但它不起作用,所以我恢复到bridge
。
我没有按照教程使用套接字代理来降低复杂性,而且traefik实验室的用户指南也没有使用套接字代理,所以我想这是可以的。
在Portainer 2.14.2上成功部署了堆栈之后,我在终端上键入了以下命令:curl http://whoami.MY_DOMAIN.com
,此域已在其中注册,则结果为:curl: (7) Failed to connect to whoami.MY_DOMAIN.com port 80 after 8 ms: Connection refused
.
并且portainer界面还显示:
由于某些未知原因,日志不可用,从portainer界面看,whoami似乎正在运行,但traefik似乎离线,或拒绝所有连接。
有谁知道我为什么和如何解决这个问题吗?提前非常感谢!
还有一件事,底层系统:
OS: Ubuntu 22.04.1 LTS (GNU/Linux 5.15.0-1013-raspi aarch64)
Device: Raspberry Pi 4B
CPU architecture: Aarch64
RAM: 4GB
3条答案
按热度按时间1cklez4t1#
Traefik需要访问Docker守护进程(在主机上运行),以便监视container的启动或停止。
在教程中,您(部分地)遵循了通过为traefik容器提供到套接字代理的链接来实现链接的方法,由于您忽略了这一部分,现在Traefik无法与docker对话。
从教程中:
如果不喜欢代理解决方案(实际上还不错),可以使用安全性较低的选项,将主机
/var/run/docker.sock
Map到容器内的同一路径。您还可以在官方文档中看到这方面的示例
lp0sw83n2#
对于我刚才提到的堆栈服务被拒绝或无法启动的问题:
network sandbox join failed: subnet sandbox join failed for "10.0.2.0/24": error creating vxlan interface: operation not supported
我能够让它工作后,应用以下修复:
1.使用
modprobe vxlan
检查内核中是否存在vxlan
驱动程序1.如果
vxlan
不存在(这是Raspberry Pi上Ubuntu的常见情况),请详细了解Mail archive1.从这个邮件归档中,他们认为一个名为
linux-modules-extra-raspi
的软件包包含了Raspberry Pi上Ubuntu所有缺失的模块。1.使用
sudo aptitude install linux-modules-extra-raspi -y
安装此软件包1.逐个
modprobe vxlan
插入驱动程序vxlan
(我不知道是否需要此步骤,如果不正确,请更正)kq0g1dla3#
在主机上安装Linux kernel extra modules for version 5.15.0 on ARMv8 SMP为我解决了
network sandbox join failed
错误(RPi3B,Ubuntu Server 22.04):灵感源自this