Docker 将镜像打成压缩包将压缩包传到服务器运行

发布于:2025-07-08 ⋅ 阅读:(25) ⋅ 点赞:(0)

1. 本地操作:将镜像打包为压缩文件

# 查看本地镜像列表
docker images

# 打包指定镜像(替换 your_image:tag 为实际镜像名称和标签)
docker save your_image:tag | gzip > my_image.tar.gz
  • 示例:docker save nginx:latest | gzip > nginx.tar.gz

2. 传输压缩包到服务器

使用 scp 命令传输(确保服务器已开启 SSH):

scp my_image.tar.gz user@server_ip:/目标路径/
  • user:服务器用户名
  • server_ip:服务器 IP 地址
  • /目标路径/:服务器存放目录(如 ~//tmp/

3. 服务器操作:加载镜像并运行容器

(1) 登录服务器
ssh user@server_ip
(2) 加载 Docker 镜像
# 解压并加载镜像
gunzip -c my_image.tar.gz | docker load

# 验证镜像是否加载成功
docker images
(3) 运行容器
# 根据镜像启动容器(按需添加参数)
docker run -d --name my_container \
  -p 8080:80 \          # 端口映射
  -v /host/data:/data \  # 卷挂载(可选)
  your_image:tag         # 加载的镜像名
  • 关键参数
    • -d:后台运行
    • -p 宿主机端口:容器端口:端口映射
    • -v 宿主机目录:容器目录:数据持久化

完整流程示例

# 本地打包并传输
docker save nginx:latest | gzip > nginx.tar.gz
scp nginx.tar.gz ubuntu@192.168.1.100:/tmp/

# 服务器操作
ssh ubuntu@192.168.1.100
gunzip -c /tmp/nginx.tar.gz | docker load
docker run -d --name my_nginx -p 8080:80 nginx:latest

常见问题解决

  1. 权限不足

    • docker 命令前加 sudo
    • 将用户加入 docker 组:sudo usermod -aG docker $USER
  2. 端口冲突

    • 检查服务器端口占用:ss -tuln | grep 8080
    • 修改 -p 参数(如 -p 8081:80
  3. 镜像加载失败

    • 检查文件完整性:gunzip -t my_image.tar.gz
    • 重新传输压缩包

替代方案(更高效)

直接通过 SSH 传输镜像(无需压缩文件)
# 本地直接推送镜像到服务器
docker save your_image:tag | ssh user@server_ip "docker load"
使用容器仓库(推荐生产环境使用)
# 1. 推送镜像到 Docker Hub
docker tag your_image:tag username/repo:tag
docker push username/repo:tag

# 2. 在服务器拉取镜像
ssh user@server_ip "docker pull username/repo:tag"

网站公告

今日签到

点亮在社区的每一天
去签到