不能,宝塔Docker管理器装完后docker服务默认可能为inactive状态,须执行sudo systemctl start docker和enable docker并确认面板右上角显示“运行中”才算就绪。

宝塔 Docker 管理器装完就直接能用吗?
不能,默认安装后 docker 服务可能处于 inactive 状态。必须手动启动并设为开机自启,否则后续所有容器操作都会失败。
SSH 连入服务器后执行:
sudo systemctl start docker<br>sudo systemctl enable docker
再进宝塔「Docker 管理器」页面,右上角状态显示「运行中」才算真正就绪。如果还是灰色,systemctl status docker 查日志,常见原因是内核不支持 overlay2 存储驱动(CentOS 7 需升级 kernel ≥ 3.10.0-1160)。
用宝塔建私有 Registry 仓库,docker run 和 docker-compose 哪个更稳?
在宝塔环境下,docker-compose 更可靠。宝塔的「容器编排」功能对 YAML 解析友好,重启、日志、卷挂载都可视化;而直接敲 docker run 命令容易漏掉 --restart=unless-stopped 或路径权限问题,容器一断就起不来。
推荐用以下最小可用配置(保存为 /root/registry/docker-compose.yml):
version: '3'<br>services:<br> registry:<br> image: registry:2<br> restart: unless-stopped<br> ports:<br> - "5000:5000"<br> volumes:<br> - /opt/registry:/var/lib/registry
注意两点:
• /opt/registry 目录需提前 mkdir -p /opt/registry && chown 1001:1001 /opt/registry(registry 容器默认以 UID 1001 运行)
• 宝塔「容器编排」里选该 YAML 文件后,点「创建」——别点「启动」,它会自动启动
推送镜像到私有仓库时提示 unauthorized: authentication required
这是 registry 默认关闭鉴权导致的典型报错。官方 registry:2 镜像本身不带认证,但 Docker 客户端强制要求 HTTPS 或明确信任 HTTP 地址,否则拒绝推送。
两个解法(任选其一):
• 临时方案:在所有要推送的机器上,修改 Docker daemon 配置 /etc/docker/daemon.json,加一行:"insecure-registries": ["your-server-ip:5000"],然后 sudo systemctl restart docker
• 长期方案:给 registry 加 Basic Auth(用 htpasswd 生成密码文件,挂载进容器),但这在宝塔里得手动改 YAML,不如直接上 certd + Nginx 反代做 TLS + 认证
为什么用宝塔反代 registry 比裸跑 5000 端口更合理?
裸跑 5000 端口意味着:对外暴露非标端口、无法套 SSL、没法统一域名管理、防火墙策略难收敛。而宝塔反代能自然复用已有的域名和证书,且 registry 的健康检查接口(/v2/)在反代下仍可直通。
关键配置项(宝塔站点 → 反向代理 → 配置):
• 目标 URL 填 http://127.0.0.1:5000
• 关闭「启用缓存」(registry 不吃缓存)
• 在「配置文件」里追加两行防止 header 丢失:
proxy_set_header X-Real-IP $remote_addr;<br>proxy_set_header Host $host;
• 若启用了 SSL,确保反代规则里没删掉
X-Forwarded-Proto,否则客户端拉取时可能降级成 http
验证是否生效:curl -I https://your-registry-domain/v2/ 应返回 200 OK,不是 502 或 404。


















