liuziyi

liuziyi

全流程梳理(镜像构建→推送→公开验证→调试踩坑修复)

一、镜像推送至GHCR(成功环节)

  1. 本地镜像打GHCR规范标签
docker tag pdu-tool:v1.0 ghcr.io/zhh9126/pdu-tool:latest
docker tag pdu-tool:v1.0 ghcr.io/zhh9126/pdu-tool:v1.0
  1. 推送镜像到ghcr.io
# 推送latest标签,分层全部上传成功
docker push ghcr.io/zhh9126/pdu-tool:latest
# 推送v1.0固定版本,镜像分层复用,无需重复上传
docker push ghcr.io/zhh9126/pdu-tool:v1.0
  1. GitHub网页操作:将pdu-tool包从Private私有改为Public公开,外部机器无需登录即可拉取

二、本地验证镜像可用性(全部功能正常)

  1. 删除本地原始镜像,测试公网拉取
# 删除本地构建镜像
docker rmi pdu-tool:v1.0
# 从GHCR拉取公开镜像
docker pull ghcr.io/zhh9126/pdu-tool:latest
  1. 业务功能测试(工具运行正常)
# 查看帮助文档,参数解析正常
docker run --rm ghcr.io/zhh9126/pdu-tool:latest --help
# 启动交互式PDU恢复工具
docker run --rm ghcr.io/zhh9126/pdu-tool:latest --pgdata /pgdb/data
  1. 进入容器内部调试(验证容器文件)
docker run -it --rm --entrypoint /bin/bash ghcr.io/zhh9126/pdu-tool:latest
# 容器内查看脚本文件
ls
# 直接执行脚本,功能正常
python pdu.py

三、后台常驻容器踩坑+完整修复步骤

问题1:直接后台运行sleep指令失败

错误命令:

# 错误:镜像默认ENTRYPOINT是python pdu.py,会把sleep当成脚本参数执行,直接异常退出
docker run -d --name pdu-shell ghcr.io/zhh9126/pdu-tool:latest sleep infinity

现象:容器启动后立刻Exited (2)退出,无法exec进入

问题2:命令行语法输入错误

  1. docker p s / docker -s -a / docker -ps -a
    正确查看容器命令:docker ps(运行中)、docker ps -a(全部容器)
  2. 容器内无法执行ll:python-slim镜像未预装ll别名,仅能用ls

完整正确后台常驻容器操作流程

  1. 删除残留失效容器(名称冲突)
docker rm pdu-shell
  1. 指定--entrypoint覆盖默认启动程序,后台常驻
docker run -d --name pdu-shell --entrypoint /bin/bash ghcr.io/zhh9126/pdu-tool:latest -c "tail -f /dev/null"
  1. 查看容器状态(确认Up运行)
docker ps -a
  1. 交互式进入后台容器
docker exec -it pdu-shell /bin/bash

四、最终可用标准命令汇总

1. 用户直接使用工具(一次性运行,自动清理)

# 查看帮助
docker run --rm ghcr.io/zhh9126/pdu-tool:latest --help
# 业务执行
docker run --rm ghcr.io/zhh9126/pdu-tool:latest --pgdata /pgdb/data

2. 临时调试容器(用完即删)

docker run -it --rm --entrypoint /bin/bash ghcr.io/zhh9126/pdu-tool:latest

3. 长期后台调试容器

# 创建常驻容器
docker run -d --name pdu-shell --entrypoint /bin/bash ghcr.io/zhh9126/pdu-tool:latest -c "tail -f /dev/null"
# 进入容器
docker exec -it pdu-shell /bin/bash
# 用完清理
docker rm -f pdu-shell

4. 镜像推送/拉取标准命令

# 推送新版本
docker build -t pdu-tool:v1.0 .
docker tag pdu-tool:v1.0 ghcr.io/zhh9126/pdu-tool:latest
docker tag pdu-tool:v1.0 ghcr.io/zhh9126/pdu-tool:v1.0
docker push ghcr.io/zhh9126/pdu-tool:latest
docker push ghcr.io/zhh9126/pdu-tool:v1.0

# 任意服务器拉取使用
docker pull ghcr.io/zhh9126/pdu-tool:latest

五、核心总结

  1. 镜像构建、GHCR推送、公开权限配置全部完成,外部网络可正常拉取;
  2. 工具业务功能完整,--help、交互式PDU控制台均可正常使用;
  3. 后台常驻容器必须覆盖entrypoint,否则会使用python pdu.py接收sleep参数导致启动失败;
  4. 容器操作命令严格区分:docker ps无横杠,禁止简写/乱加参数。

posted on 2026-07-08 14:11  刘子毅  阅读(14)  评论(0)    收藏  举报

导航