本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

用于运行Samba或AFP(netatalk)的Docker镜像,提供与macOS兼容的Time Machine备份服务。
以下标签支持amd64、armv7l和arm64架构,将根据系统架构自动拉取正确的镜像:
latest、smb
注意:afp标签在新功能更新方面已被弃用,且仅支持amd64架构。
smb标签还包含每日生成的唯一清单,格式为smb-YYYYMMDD(例如smb-20210730),可在Docker Hub查看。这些标签每日生成,本质上是smb标签清单的时间点快照,可固定使用。请注意,这些标签在Docker Hub上仅保留6个月,且不会接收安全修复。若无需固定特定镜像摘要,建议直接使用smb标签。
这些标签将显式拉取指定架构的镜像,与多架构标签的镜像完全一致。
amd64latest-smb-amd64、smb-amd64 - 基于alpine:latest的SMB镜像afp、afp-amd64 - 基于debian:jessie的AFP镜像
armv7llatest-smb-armv7l、smb-armv7l - 基于alpine:latest的armv7l架构SMB镜像arm64latest-smb-arm64、smb-arm64 - 基于alpine:latest的arm64架构SMB镜像警告:强烈建议迁移到SMB镜像,因为AFP已被Apple弃用,且SMB稳定性更高。2020年10月15日起,latest标签默认指向SMB变体。
拉取镜像命令:
docker pull mbentley/timemachine:smb
注意:若修改TM_USERNAME值,持久化卷的路径会随之改变。详见持久化数据路径。
--net=host启用Avahi发现(推荐)通过--net=host允许Avahi广播发现,常用环境变量设为默认值:
docker run -d --restart=always \ --name timemachine \ --net=host \ -e TM_USERNAME="timemachine" \ -e TM_GROUPNAME="timemachine" \ -e PASSWORD="timemachine" \ -e TM_UID="1000" \ -e TM_GID="1000" \ -e SET_PERMISSIONS="false" \ -e VOLUME_SIZE_LIMIT="0" \ -v /主机备份路径:/opt/timemachine \ --tmpfs /run/samba \ mbentley/timemachine:smb
暴露端口但不使用Avahi,需手动在Finder中映射共享:
docker run -d --restart=always \ --name timemachine \ --hostname timemachine \ -p 137:137/udp \ -p 138:138/udp \ -p 139:139 \ -p 445:445 \ -e TM_USERNAME="timemachine" \ -e TM_GROUPNAME="timemachine" \ -e PASSWORD="timemachine" \ -e TM_UID="1000" \ -e TM_GID="1000" \ -e SET_PERMISSIONS="false" \ -e VOLUME_SIZE_LIMIT="0" \ -v /主机备份路径:/opt/timemachine \ --tmpfs /run/samba \ mbentley/timemachine:smb
镜像兼容Kubernetes。参考timemachine-k3s.yaml示例,可在单节点k3s集群(如树莓派4)上部署TimeMachine服务器。
--net=host模式下发现功能最佳,可广播服务。若不使用该模式,需暴露上述端口并手动在Finder中映射共享(打开Finder→点击"共享"→通过smb://主机名或IP/TimeMachine连接)。--net=host仅在主机未运行Samba或Avahi时可用!也可通过SMB_PORT修改Samba端口。
若容器无法启动且日志显示Failed to start message bus: Failed to bind socket,可能是nofile资源限制过低。需在docker run或compose文件中调整nofile限制:
--ulimit nofile=65536:65536
armv7l镜像启动失败运行armv7l镜像时若出现以下错误:
s6-svscan: warning: unable to iopause: Operation not permitted
原因是libseccomp2包版本问题,解决方法:
为容器禁用seccomp(有安全风险):
--security-opt seccomp=unconfined
安装backport版本的libseccomp2:
wget [***] sudo dpkg -i libseccomp2_2.5.1-1~bpo10+1_armhf.deb
若主机已运行Samba/Avahi(如树莓派OS默认mDNS响应器),--net=host会导致冲突。解决方法:
在主机编辑/etc/avahi/avahi-daemon.conf:
enable-reflector=yescache-entries-max=0(避免设备名称重复)然后在容器中设置ADVERTISED_HOSTNAME为主机mDNS主机名(不含.local后缀)。
创建macvlan网络(假设子网192.168.1.0/24,网关192.168.1.1,主机网卡eth0):
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macvlan1
在docker run中添加:
--network macvlan1 --ip 192.168.1.x
services: timemachine: hostname: timemachine mac_address: "AA:BB:CC:DD:EE:FF" networks: timemachine: ipv4_address: 192.168.1.x networks: timemachine: driver: macvlan driver_opts: parent: eth0 ipam: config: - subnet: 192.168.1.0/24 gateway: 192.168.1.1
持久化存储需支持扩展文件属性(xattr),NFS等远程文件系统可能不支持。镜像会检查/opt/${TM_USERNAME}中的测试文件xattr支持并警告。默认timemachine用户UID/GID为1000:1000。
修改TM_USERNAME后,容器内数据路径会变为/opt/<TM_USERNAME>,需确保卷映射正确,否则数据会存储在容器内。
timemachinetimemachine| 变量 | 默认值 | 描述 |
|---|---|---|
ADVERTISED_HOSTNAME | 未设置 | Avahi广播的主机名(不含.local),用于Avahi反射器场景 |
CUSTOM_SMB_AUTH | no | 设置为yes时,Samba使用NTLM加密密码认证 |
CUSTOM_SMB_CONF | false | 设为true时,需挂载自定义/etc/samba/smb.conf |
CUSTOM_SMB_PROTO | SMB2 | Samba协议版本,参考Samba协议列表 |
CUSTOM_USER | false | 设为true时,需挂载/etc/passwd、/etc/group、/etc/shadow并创建数据目录 |
DEBUG_LEVEL | 1 | nmbd和smbd调试级别 |
EXTERNAL_CONF | 未设置 | 多用户配置目录(含.conf文件),详见多用户和共享 |
HIDE_SHARES | no | 设为yes时,仅显示用户可访问的共享 |
MIMIC_MODEL | TimeCapsule8,119 | 模拟的Time Capsule型号 |
TM_USERNAME | timemachine | 运行用户名称 |
TM_GROUPNAME | timemachine | 运行用户组名称 |
TM_UID | 1000 | 用户UID |
TM_GID | 1000 | 用户组GID |
PASSWORD | timemachine | 用户密码 |
SET_PERMISSIONS | false | 设为true时,入口脚本会设置/opt/<username>权限 |
SHARE_NAME | TimeMachine | 共享名称 |
SMB_INHERIT_PERMISSIONS | no | 设为yes时,新文件权限继承父目录 |
SMB_NFS_ACES | no | fruit:nfs_aces值,控制NFS ACEs支持 |
SMB_METADATA | stream | fruit:metadata值,控制OS X元数据流存储位置 |
SMB_PORT | 445 | Samba服务端口 |
SMB_VFS_OBJECTS | fruit streams_xattr | vfs objects值 |
VOLUME_SIZE_LIMIT | 0 | 备份最大容量(0为无限制),支持单位(如1 T),参考Samba文档 |
WORKGROUP | WORKGROUP | Samba工作组名称 |
IGNORE_DOS_ATTRIBUTES | false | 设为true时,Samba忽略DOS属性 |
通过EXTERNAL_CONF指定包含用户配置文件(.conf后缀)的目录,每个文件定义一个用户及共享。
EXTERNAL_CONF文件创建foo.conf定义用户foo:
TM_USERNAME=foo TM_GROUPNAME=foogroup PASSWORD=foopass SHARE_NAME=foo VOLUME_SIZE_LIMIT="1 T" TM_UID=1000 TM_GID=1000
EXTERNAL_CONF运行示例docker run -d --restart=always \ --name timemachine \ --net=host \ --ulimit nofile=65536:65536 \ -e EXTERNAL_CONF="/users" \ -v /主机备份路径:/opt \ -v /用户配置目录:/users \ --tmpfs /run/samba \ mbentley/timemachine:smb
通过Docker secrets传递密码,示例compose配置:
version: "3.3" services: timemachine: environment: - PASSWORD_FILE=/run/secrets/password secrets: - password secrets: password: file: ./password.txt
docker compose -f timemachine-compose.yml up -d
--net=host启用Avahi发现docker run -d --restart=always \ --net=host \ --name timemachine \ -e CUSTOM_AFP_CONF="false" \ -e CUSTOM_USER="false" \ -e LOG_LEVEL="info" \ -e MIMIC_MODEL="TimeCapsule6,106" \ -e TM_USERNAME="timemachine" \ -e TM_GROUPNAME="timemachine" \ -e TM_UID="1000" \ -e TM_GID="1000" \ -e PASSWORD="timemachine" \ -e SET_PERMISSIONS="false" \ -e SHARE_NAME="TimeMachine" \ -e VOLUME_SIZE_LIMIT="0" \ -v /主机备份路径:/opt/timemachine \ -v timemachine-netatalk:/var/netatalk \ -v timemachine-logs:/var/log/supervisor \ mbentley/timemachine:afp
docker run -d --restart=always \ --name timemachine \ --hostname timemachine \ -p 548:548 \ -p 636:636 \ -e CUSTOM_AFP_CONF="false" \ -e CUSTOM_USER="false" \ -e LOG_LEVEL="info" \ -e MIMIC_MODEL="TimeCapsule6,106" \ -e TM_USERNAME="timemachine" \ -e TM_GROUPNAME="timemachine" \ -e TM_UID="1000" \ -e TM_GID="1000" \ -e PASSWORD="timemachine" \ -e SET_PERMISSIONS="false" \ -e SHARE_NAME="TimeMachine" \ -e VOLUME_SIZE_LIMIT="0" \ -v /主机备份路径:/opt/timemachine \ -v timemachine-netatalk:/var/netatalk \ -v timemachine-logs:/var/log/supervisor \ mbentley/timemachine:afp
| 变量 | 默认值 | 描述 |
|---|---|---|
CUSTOM_AFP_CONF | false | 设为true时,需挂载自定义/etc/netatalk/afp.conf |
CUSTOM_USER | false | 设为true时,需挂载/etc/passwd、/etc/group、/etc/shadow |
LOG_LEVEL | info | netatalk日志级别 |
MIMIC_MODEL | TimeCapsule6,106 | 模拟的Time Capsule型号 |
TM_USERNAME | timemachine | 运行用户名称 |
TM_GROUPNAME | timemachine | 运行用户组名称 |
TM_UID | 1000 | 用户UID |
| `TM_GID |
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429