如何在nektos/act本地GitHub Runner中使用本地镜像无需docker.io?
关于nektos/act的三个常见问题解答
1. 在nektos/act本地GitHub Runner环境下,如何引用本地Platform(-P)镜像且无需依赖docker.io?
直接通过-P参数将GitHub Runner标签映射到本地已存在的镜像即可,无需从docker.io拉取。具体操作如下:
- 命令行直接指定:运行act时添加
-P <runner-tag>=<local-image-name>:<tag>,例如本地有my-custom-runner:latest镜像,对应GitHub的ubuntu-latestrunner,执行:act -P ubuntu-latest=my-custom-runner:latest - 持久化配置:在项目根目录创建
.actrc文件,添加映射规则,避免每次命令行输入:-P ubuntu-latest=my-custom-runner:latest -P windows-latest=my-local-windows-runner:2022
确保本地镜像已存在(可通过docker images验证),act会直接使用本地镜像,不会请求docker.io。
2. 如何通过nektos/act运行本地或非Docker镜像?
运行本地镜像
通过-P参数将工作流中的runs-on标签映射到本地镜像即可:
- 工作流中指定自定义runner标签,例如:
jobs: build: runs-on: my-local-runner steps: ... - 运行act时映射到本地镜像,同时加上
--pull=false强制使用本地镜像:act -P my-local-runner=my-built-image:v1 --pull=false
运行非Docker.io仓库的镜像
直接指定完整镜像仓库路径即可,例如镜像存储在私有仓库:
act -P ubuntu-latest=registry.example.com/my-team/runner:latest
确保本地Docker已配置好对应仓库的访问权限(如登录私有仓库),act会直接从指定仓库拉取或使用本地已缓存的该仓库镜像。
3. 默认情况下nektos/act会尝试登录docker.io拉取远程镜像,能否使用本地缓存的镜像?
可以,通过以下方式强制act使用本地缓存的镜像,避免拉取:
- 命令行添加
--pull=false参数:act --pull=false - 持久化配置:在
.actrc文件中添加:--pull=false - 设置环境变量:
export ACT_PULL=false
启用该设置后,act会优先检查本地是否存在对应runner标签的镜像,存在则直接使用;若本地无对应镜像,act会报错而非尝试从docker.io拉取。
内容的提问来源于stack exchange,提问作者Brian Horakh
相关产品推荐
相关产品推荐

