📤 将 Docker 镜像上传到仓库(完整指南)

方式 B:仅构建 App 镜像 docker build -t hik-shentong-bridge:latest .

方式 A:使用 Docker Compose(推荐)

构建并启动docker compose up -d –build

查看日志docker compose logs -f app

停止并清理docker compose down

你的镜像 hik-shentong-bridge:latest 已构建成功,现在可以上传到 Docker Hub私有仓库,方便在其他设备部署。

清理 Docker 无用资源

  • 停止所有容器(避免清理时冲突)
  • docker compose down
  • 清理悬空镜像、构建缓存、未使用卷
  • docker system prune -af –volumes
  • 查看剩余空间
  • df -h /



🔐 第一步:登录 Docker 仓库
✅ Docker Hub(官方公共仓库)

  • 登录(输入用户名和密码/访问令牌)
  • docker login或者docker login -u 用户名
  • 或指定服务器(默认就是 hub.docker.com)
  • docker login https://index.docker.io/v1/

私有仓库(如 Harbor、自建 Registry)

  • docker login your-registry.com:5000
  • 输入用户名密码

🏷️ 第二步:给镜像打标签(Tag)

  • Docker 要求镜像名格式:<仓库用户名>/<镜像名>:<标签>
    假设你的 Docker Hub 用户名是:myuser
  • docker tag hik-shentong-bridge:latest myuser/hik-shentong-bridge:latest
  • 可选:添加版本标签
  • docker tag hik-shentong-bridge:latest myuser/hik-shentong-bridge:v2.4.0

📌 示例:上传到私有仓库

  • 假设私有仓库地址:registry.example.com:5000
  • docker tag hik-shentong-bridge:latest registry.example.com:5000/hik-shentong-bridge:latest
  • ✅ 验证标签是否成功:
    docker images | grep hik-shentong-bridge

🚀 第三步:推送镜像到仓库

# 推送到 Docker Hub
docker push myuser/hik-shentong-bridge:latest
# 如果同时打了版本标签,也推送
docker push myuser/hik-shentong-bridge:v2.4.0

🔄 第四步:在其他机器拉取并运行
1️⃣ 拉取镜像

  • 新机器先登录(如果需要)
  • docker login
  • 拉取镜像
  • docker pull myuser/hik-shentong-bridge:latest

2️⃣ 运行容器(示例)

docker run -d --name st-bridge \
-p 7200:7200 \
-e SQLALCHEMY_DATABASE_URL="mysql+pymysql://user:pass@db:3306/shentong" \
-e REDIS_HOST="redis" \
-e REDIS_PORT="6379" \
--restart unless-stopped \
myuser/hik-shentong-bridge:latest

3️⃣ 推荐:使用 docker-compose 一键部署
在新机器创建 docker-compose.yml

yaml

version: ‘3.8’
services:
app:
image: myuser/hik-shentong-bridge:latest
container_name: st-bridge
ports:
– “7200:7200”
environment:
– SQLALCHEMY_DATABASE_URL=mysql+pymysql://user:pass@db:3306/shentong
– REDIS_HOST=redis
– REDIS_PORT=6379
depends_on:
– db
– redis
restart: unless-stopped

redis:
image: redis:7-alpine
container_name: st-redis

db:
image: mysql:8.0
container_name: st-db
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: shentong
volumes:
– db_/var/lib/mysql

volumes:
db_

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注