Docker开机自启需分两步:先执行sudo systemctl enable docker.service启用服务自启,再为容器设置--restart=always策略;验证时需重启系统并运行docker ps和docker inspect确认容器实际运行及重启策略生效。
安装 docker engine 后,开机自启需分两步:先让 docker 服务本身开机启动,再确保你关心的 容器在服务起来后自动运行。两者缺一不可。
Docker 服务开机自启(systemd 管理)
CentOS 7 / Ubuntu 20.04+ / Debian 10+ 等主流 systemd 系统,使用以下命令即可:
- 启用开机自启:sudo systemctl enable docker.service
- 立即启动服务(不重启也能生效):sudo systemctl start docker
- 验证是否已启用:systemctl is-enabled docker → 输出 enabled 即成功
- 查看当前状态:systemctl status docker → 显示 active (running) 表示服务已就绪
容器开机自启(靠 restart 策略)
Docker 服务自启 ≠ 容器自启。容器必须显式设置重启策略,系统重启后 dockerd 拉起时才会自动启动它们:
- 新建容器时加参数:docker run -d --restart=always --name myapp nginx
- 已有容器补设策略:docker update --restart=always myapp
- 常见策略说明:
• always:只要 dockerd 启动,就拉起该容器(推荐用于生产服务)
• unless-stopped:同 always,但跳过被手动docker stop过的容器
• on-failure:5:仅当容器异常退出(非 0 状态码),且重试不超过 5 次
WSL2 用户特别注意
WSL2 默认无 systemd,若你已在 Ubuntu WSL2 中装了原生 Docker Engine(非 Docker Desktop),需额外启用 systemd 支持:
- 编辑 /etc/wsl.conf,加入:
[boot]<br> systemd=true
- 关闭 WSL2:wsl --shutdown,再重新打开终端
- 确认 systemd 已运行:ps -p 1 -o comm= 应输出 systemd
- 之后才能正常使用
systemctl enable docker
验证是否真正生效
别只看命令没报错,建议实测:
- 执行 sudo reboot(或 WSL2 中 wsl --shutdown 后重启终端)
- 登录后运行:docker ps → 应看到你设了
--restart=always的容器在运行中 - 运行:docker inspect myapp | grep -A 3 RestartPolicy → 确认输出含 "Name": "always"


















