Azure DevOps Server 2022本地环境下Windows 10构建代理的Docker Desktop无人登录时自动停止问题求助
Azure DevOps Server 2022本地环境下Windows 10构建代理的Docker Desktop无人登录时自动停止问题求助
我目前在本地环境的Azure DevOps Server 2022中,用Windows 10机器做构建代理,已经装了Docker Desktop来跑流水线里的Docker相关任务。但碰到个棘手的问题:只要这台Windows 10机器没人登录,Docker Desktop就会自动停掉,导致流水线里的Docker任务全失败——因为构建机上的Docker引擎根本没在运行。只有我登录机器手动启动Docker Desktop后,流水线才能正常跑起来。
有没有过来人给支个招?怎么才能让Windows 10构建机上的Docker引擎一直运行,哪怕没有用户登录也能正常工作?我就想实现不用用户登录,Docker引擎也能始终处于运行状态。
亲测有效的解决方法分享
把Docker Desktop配置成系统级自动启动任务
Docker Desktop默认是用户态程序,只有登录后才会启动。我们可以通过创建系统任务让它在开机时自动运行,不需要用户登录:- 先打开Docker Desktop设置,在General里勾选"Start Docker Desktop when you log in"(这一步是基础配置)
- 以管理员身份打开命令提示符,执行这条命令创建自动启动任务:
这个任务会让系统启动时就以SYSTEM账户身份启动Docker Desktop,完全不受用户登录状态影响。schtasks /create /tn "DockerAutoStart" /tr "C:\Program Files\Docker\Docker\Docker Desktop.exe" /sc onstart /ru "SYSTEM" /rl highest
切换到Windows容器模式并把Docker引擎注册为服务
如果你的场景适合用Windows容器,可以直接把Docker引擎注册成Windows服务,这样就能彻底脱离用户会话:- 先在Docker Desktop里切换到Windows容器模式
- 以管理员身份打开PowerShell,执行这条命令注册服务:
注册完成后,打开Windows服务管理器,找到Docker Engine服务,把它的启动类型改成自动。这样系统一启动,Docker引擎就会自动运行,和用户登不登录完全没关系。dockerd --register-service
临时过渡:设置Windows自动登录(不推荐长期用)
如果上面的方法暂时没生效,可以先设置Windows自动登录某个用户,这样机器启动后会自动登录,Docker Desktop也会跟着启动。不过这个方法有安全风险,适合临时救急:- 按
Win+R输入netplwiz打开用户账户设置 - 取消勾选"要使用本计算机,用户必须输入用户名和密码"
- 输入要自动登录的账号密码,确认后重启机器就行。
- 按
备注:内容来源于stack exchange,提问作者Herr_grun
相关产品推荐
相关产品推荐

