一、镜像推送至GHCR成功环节本地镜像打GHCR规范标签docker tag pdu-tool:v1.0 ghcr.io/zhh9126/pdu-tool:latestdocker tag pdu-tool:v1.0 ghcr.io/zhh9126/pdu-tool:v1.0推送镜像到ghcr.io推送latest标签分层全部上传成功docker push ghcr.io/zhh9126/pdu-tool:latest推送v1.0固定版本镜像分层复用无需重复上传docker push ghcr.io/zhh9126/pdu-tool:v1.0GitHub网页操作将pdu-tool包从Private私有改为Public公开外部机器无需登录即可拉取二、本地验证镜像可用性全部功能正常删除本地原始镜像测试公网拉取删除本地构建镜像docker rmi pdu-tool:v1.0从GHCR拉取公开镜像docker pull ghcr.io/zhh9126/pdu-tool:latest业务功能测试工具运行正常查看帮助文档参数解析正常docker run --rm ghcr.io/zhh9126/pdu-tool:latest --help启动交互式PDU恢复工具docker run --rm ghcr.io/zhh9126/pdu-tool:latest --pgdata /pgdb/data进入容器内部调试验证容器文件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命令行语法输入错误docker p s / docker -s -a / docker -ps -a正确查看容器命令docker ps运行中、docker ps -a全部容器容器内无法执行llpython-slim镜像未预装ll别名仅能用ls完整正确后台常驻容器操作流程删除残留失效容器名称冲突docker rm pdu-shell指定–entrypoint覆盖默认启动程序后台常驻docker run -d --name pdu-shell --entrypoint /bin/bash ghcr.io/zhh9126/pdu-tool:latest -c “tail -f /dev/null”查看容器状态确认Up运行docker ps -a交互式进入后台容器docker exec -it pdu-shell /bin/bash四、最终可用标准命令汇总用户直接使用工具一次性运行自动清理查看帮助docker run --rm ghcr.io/zhh9126/pdu-tool:latest --help业务执行docker run --rm ghcr.io/zhh9126/pdu-tool:latest --pgdata /pgdb/data2. 临时调试容器用完即删docker run -it --rm --entrypoint /bin/bash ghcr.io/zhh9126/pdu-tool:latest3. 长期后台调试容器创建常驻容器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-shell4. 镜像推送/拉取标准命令推送新版本docker build -t pdu-tool:v1.0 .docker tag pdu-tool:v1.0 ghcr.io/zhh9126/pdu-tool:latestdocker tag pdu-tool:v1.0 ghcr.io/zhh9126/pdu-tool:v1.0docker push ghcr.io/zhh9126/pdu-tool:latestdocker push ghcr.io/zhh9126/pdu-tool:v1.0任意服务器拉取使用docker pull ghcr.io/zhh9126/pdu-tool:latest五、核心总结镜像构建、GHCR推送、公开权限配置全部完成外部网络可正常拉取工具业务功能完整–help、交互式PDU控制台均可正常使用后台常驻容器必须覆盖entrypoint否则会使用python pdu.py接收sleep参数导致启动失败容器操作命令严格区分docker ps无横杠禁止简写/乱加参数。
全流程梳理(镜像构建→推送→公开验证→调试踩坑修复)
一、镜像推送至GHCR成功环节本地镜像打GHCR规范标签docker tag pdu-tool:v1.0 ghcr.io/zhh9126/pdu-tool:latestdocker tag pdu-tool:v1.0 ghcr.io/zhh9126/pdu-tool:v1.0推送镜像到ghcr.io推送latest标签分层全部上传成功docker push ghcr.io/zhh9126/pdu-tool:latest推送v1.0固定版本镜像分层复用无需重复上传docker push ghcr.io/zhh9126/pdu-tool:v1.0GitHub网页操作将pdu-tool包从Private私有改为Public公开外部机器无需登录即可拉取二、本地验证镜像可用性全部功能正常删除本地原始镜像测试公网拉取删除本地构建镜像docker rmi pdu-tool:v1.0从GHCR拉取公开镜像docker pull ghcr.io/zhh9126/pdu-tool:latest业务功能测试工具运行正常查看帮助文档参数解析正常docker run --rm ghcr.io/zhh9126/pdu-tool:latest --help启动交互式PDU恢复工具docker run --rm ghcr.io/zhh9126/pdu-tool:latest --pgdata /pgdb/data进入容器内部调试验证容器文件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命令行语法输入错误docker p s / docker -s -a / docker -ps -a正确查看容器命令docker ps运行中、docker ps -a全部容器容器内无法执行llpython-slim镜像未预装ll别名仅能用ls完整正确后台常驻容器操作流程删除残留失效容器名称冲突docker rm pdu-shell指定–entrypoint覆盖默认启动程序后台常驻docker run -d --name pdu-shell --entrypoint /bin/bash ghcr.io/zhh9126/pdu-tool:latest -c “tail -f /dev/null”查看容器状态确认Up运行docker ps -a交互式进入后台容器docker exec -it pdu-shell /bin/bash四、最终可用标准命令汇总用户直接使用工具一次性运行自动清理查看帮助docker run --rm ghcr.io/zhh9126/pdu-tool:latest --help业务执行docker run --rm ghcr.io/zhh9126/pdu-tool:latest --pgdata /pgdb/data2. 临时调试容器用完即删docker run -it --rm --entrypoint /bin/bash ghcr.io/zhh9126/pdu-tool:latest3. 长期后台调试容器创建常驻容器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-shell4. 镜像推送/拉取标准命令推送新版本docker build -t pdu-tool:v1.0 .docker tag pdu-tool:v1.0 ghcr.io/zhh9126/pdu-tool:latestdocker tag pdu-tool:v1.0 ghcr.io/zhh9126/pdu-tool:v1.0docker push ghcr.io/zhh9126/pdu-tool:latestdocker push ghcr.io/zhh9126/pdu-tool:v1.0任意服务器拉取使用docker pull ghcr.io/zhh9126/pdu-tool:latest五、核心总结镜像构建、GHCR推送、公开权限配置全部完成外部网络可正常拉取工具业务功能完整–help、交互式PDU控制台均可正常使用后台常驻容器必须覆盖entrypoint否则会使用python pdu.py接收sleep参数导致启动失败容器操作命令严格区分docker ps无横杠禁止简写/乱加参数。