
如果树莓派上已安装正常工作的Docker,可忽略此步骤。
以下是使用Docker安装脚本的命令。最后一条命令中,将<your-user>替换为树莓派用户名(通常为pi)。
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo usermod -aG docker <your-user>
启动新终端使最后一条命令生效。可能还需重启设备以正确启动Docker服务。
使用以下命令启动容器:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e INCLUDE_AIRCAST=TRUE \ psychlist/docker-airconnect-arm
使用以下命令更新容器:
docker pull psychlist/docker-airconnect-arm && \ docker rm --force airconnect && \ docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e INCLUDE_AIRCAST=TRUE \ psychlist/docker-airconnect-arm
本项目提供优秀AirConnect [1]工具的Docker容器版本,适用于树莓派,针对Sonos扬声器优化。容器镜像基于Alpine Linux,总大小约90MB。
docker-airconnect-arm容器运行AirConnect的airupnp-arm服务,为所有Sonos扬声器和设备启用AirPlay功能。默认配置仅包含无原生AirPlay 2功能的Sonos播放器,避免创建重复的AirPlay目标。
AirConnect兼容Sonos S1和S2软件版本,也支持“分离的”S1/S2 Sonos系统。
Docker容器还配置了供Sonos控制器应用显示的图标。
尽管此Docker镜像主要针对和优化Sonos环境,也可额外包含aircast-arm服务,为ChromeCast设备提供AirPlay功能。要在容器中启用AirCast,启动容器时设置环境变量INCLUDE_AIRCAST=TRUE。详见下方使用示例。
镜像已在以下树莓派型号上测试:
可能在其他支持Docker的ARM设备上工作。
Docker镜像名称为Docker Hub上的psychlist/docker-airconnect-arm [3]。
欢迎反馈和建议:可通过[4]提交issue。
树莓派上需有正常工作的Docker环境,且与目标扬声器在同一网络。需互联网访问以下载Docker镜像。
容器启动命令如下:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ psychlist/docker-airconnect-arm
要包含AirCast支持,在docker run命令中设置INCLUDE_AIRCAST环境变量为TRUE:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e INCLUDE_AIRCAST=TRUE \ psychlist/docker-airconnect-arm
若后续需更新镜像版本:(1) 拉取新镜像,(2) 删除容器,(3) 启动新容器实例。此操作会中断当前AirPlay流:
docker pull psychlist/docker-airconnect-arm docker rm --force airconnect docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ psychlist/docker-airconnect-arm
若启动容器时出现类似WARNING: The requested image's platform (linux/arm/v7) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested的警告,可在docker run命令中指定platform参数抑制警告:
docker run -d \ --platform=linux/arm/v7 \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e INCLUDE_AIRCAST=TRUE \ psychlist/docker-airconnect-arm
容器默认配置适用于大多数Sonos安装。可通过启动容器时传入可选环境变量覆盖配置。
若在Docker命令行中设置SUPPRESS_FLUSH=TRUE(如本页面示例),airupnp服务将以--noflush选项运行,显著提升从Apple应用流式传输时AirConnect的响应性(切换曲目、调整播放位置)。
此选项在Sonos扬声器上效果良好,但可能不适用于其他类型扬声器。
若不使用此选项,从Docker命令行中移除-e SUPPRESS_FLUSH=TRUE即可。
若树莓派有多个网络接口(如同时使用有线和无线接口),可通过BIND_IP环境变量指定AirConnect绑定的接口。
例如,在docker run命令中添加:-e BIND_IP=192.168.0.50,其中IP地址为所选接口的分配地址。
容器默认仅包含无原生AirPlay 2支持的Sonos设备,具体包括:Play:1、Play:3、Play:5(第一代)、PlayBar、ZP80、Connect (ZP90)、ZP100和Connect:Amp (ZP120)。网络上发现的其他Sonos和非Sonos UPnP设备将被忽略。
可使用INC_MODELNUMBERS、EXC_MODELNUMBERS和EXC_MODELNAMES环境变量覆盖此行为。
设置INC_MODELNUMBERS=NONE可禁用特定设备型号的包含;或设为要包含的设备型号列表。
当INC_MODELNUMBERS=NONE时,使用EXC_MODELNUMBERS和EXC_MODELNAMES指定要排除的设备型号和名称列表。
通过docker run命令的-e选项提供环境变量。例如,仅包含Playbar和Play:1扬声器:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e INC_MODELNUMBERS=S9,S1,S12 \ psychlist/docker-airconnect-arm
或包含所有UPnP设备,除第二代Play:5:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e INC_MODELNUMBERS=NONE \ -e EXC_MODELNUMBERS=S6 \ psychlist/docker-airconnect-arm
注意,需设置-e INC_MODELNUMBERS=NONE才能使其他选项生效。
使用ARTWORK环境变量指定自定义图片URL,替换默认图标。图片需通过HTTP/S供扬声器和控制器访问。例如:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e ARTWORK=https://raw.githubusercontent.com/pwt/docker-airconnect-arm/master/airconnect-logo.png \ -e SUPPRESS_FLUSH=TRUE \ psychlist/docker-airconnect-arm
其他可用配置参数:
CODEC, METADATA, LATENCY, DRIFT, MAX_PLAYERS, MAIN_LOG, UPNP_LOG, UTIL_LOG, RAOP_LOG
例如,将编解码器设为MP3 @ 320kb/s,延迟设为500ms/500ms:
docker run -d \ --net=host \ --name=airconnect \ --restart=unless-stopped \ -e SUPPRESS_FLUSH=TRUE \ -e CODEC='mp3:320' \ -e LATENCY='500:500:f' \ psychlist/docker-airconnect-arm
更多配置值信息参见AirConnect文档[1](Config File Parameters部分)。
为在x86主机上构建ARM镜像,Dockerfile利用Balena [2] Alpine Linux基础镜像提供的crossbuild功能,支持在x86环境下构建ARM镜像。(若在原生ARM主机上直接构建,注释或移除两条cross-build RUN语句。)
[1] https://github.com/philippe44/AirConnect
[2] https://hub.docker.com/u/balenalib/
[3] https://hub.docker.com/r/psychlist/docker-airconnect-arm
[4] https://github.com/pwt/docker-airconnect-arm/issues/5
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务