将 Docker 镜像推送到自己的服务器,通常有两种主流方案。你可以根据服务器的网络环境和团队规模选择最适合的方式:
方案一:离线打包传输(适合无公网仓库或临时部署)
这是最基础且广泛使用的方法,无需搭建额外的镜像仓库服务。具体步骤如下:
1. 本地打包镜像
在本地开发机上,将目标镜像导出为 .tar 文件:
docker save -o my-app-image.tar my-app-image:latest2. 传输到远程服务器
使用 scp 命令将打包好的文件安全地传输到目标服务器:
scp my-app-image.tar root@你的服务器IP:/目标路径/3. 服务器加载并运行
登录到目标服务器后,加载该镜像文件并启动容器:
# 加载镜像
docker load -i /目标路径/my-app-image.tar
# 验证是否加载成功
docker images
# 运行容器
docker run -d -p 8080:8080 my-app-image:latest
容器管理
查看运行中的容器:
docker ps查看所有容器:
docker ps -a启动容器:
docker start 容器ID停止容器:
docker stop 容器ID重启容器:
docker restart 容器ID删除容器:
docker rm 容器ID强制删除:
docker rm -f 容器IDdocker常用命令
查看日志
实时查看日志:
docker logs -f 容器名查看最近100行:
docker logs --tail 100 容器名查看时间戳:
docker logs -f -t 容器名.NET 程序异常排查最常用:
docker logs -f myapi进入容器
Linux镜像:
docker exec -it 容器名 bash如果没有 bash:
docker exec -it 容器名 sh例如:
docker exec -it myapi bash使用 --entrypoint 强制进入排查问题
docker run -it --rm --entrypoint /bin/bash zradminwebapizradminwebapi 是镜像名
使用 docker compose 启动
要在xxx.yml 同级目录使用
docker compose up -d-d 参数:后台运行(detached mode)。不加 -d 会前台运行并占用终端,按 Ctrl+C 停止。
| 场景 | 命令 | 说明 |
|---|---|---|
| 首次启动 / 代码变更后 | docker compose up -d --build | 重新构建镜像并启动 |
| 仅重启某个服务 | docker compose restart myadmin | 不重建镜像,快速重启 |
| 修改了配置/环境变量后 | docker compose up -d | 自动检测变更并重建容器 |
| 指定多个 compose 文件 | docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d | 后者覆盖前者的配置 |
| 指定 .env 文件 | docker compose --env-file .env.production up -d | 加载指定的环境变量文件 |
| 强制重建(忽略缓存) | docker compose build --no-cache && docker compose up -d | 彻底干净构建 |
| 停止并删除所有资源 | docker compose down | 停止容器 + 删除网络 |
| 停止并清除数据卷 | docker compose down -v | ⚠️ 会删除数据库等持久化数据 |
🔍 启动后验证
# 查看运行状态 docker compose ps
# 查看实时日志 docker compose logs -f myadmin
# 进入容器排查 docker compose exec myadmin sh💡 注意事项
- 版本确认:运行
docker compose version检查是否为 V2。如果输出带v2.x.x,使用docker compose(无连字符);如果是1.x.x,建议升级到 V2。 - 配置文件默认值:不指定
-f时,默认读取当前目录下的docker-compose.yml或compose.yml。 - 环境变量生效:修改
.env文件或environment配置后,必须执行docker compose up -d才能生效,仅restart不会重新注入环境变量。 - 生产环境建议:始终加
-d,并配合日志驱动(如local或外部采集)避免磁盘被 stdout 撑爆。

