You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拉取已推送至Lightsail的容器镜像?

操作方案

可以拉取。Lightsail容器服务存储的用户镜像实际托管在对应区域的AWS私有ECR(弹性容器注册表)中,无需原始Dockerfile即可完整取回,根据你的当前部署状态和权限,可选择以下两种方案:

方案1:直接从关联ECR仓库拉取(无需运行中部署)

该方法不需要依赖正在运行的容器实例,只要你拥有对应账号的Lightsail/ECR访问权限即可操作:

  • 第一步:获取目标镜像的完整URI
    执行CLI命令查询镜像列表,替换命令中的占位符为你的实际资源信息:
    aws lightsail get-container-images --service-name <你的Lightsail容器服务名称> --region <服务所属区域,例如ap-northeast-1>
    
    返回结果中每个镜像条目下的image字段即为完整镜像地址,格式参考:123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/lightsail/ls-abc123def-你的服务名:v1,将该地址完整记录。
  • 第二步:完成私有仓库登录认证
    执行以下命令自动完成Docker客户端的ECR仓库登录:
    aws ecr get-login-password --region <与上一步一致的区域编码> | docker login --username AWS --password-stdin <镜像URI中的仓库域名段,例如123456789012.dkr.ecr.ap-northeast-1.amazonaws.com>
    
    注意:执行命令的AWS身份需要拥有目标ECR仓库的ecr:BatchGetImage、ecr:GetDownloadUrlForLayer权限,持有Lightsail全管理权限的账号可直接执行,无需额外配置。
  • 第三步:拉取镜像到本地
    直接使用第一步记录的完整镜像地址执行拉取:
    docker pull <第一步记录的完整镜像URI>
    
    拉取完成后可通过docker save命令将镜像导出为离线压缩包,也可直接在本地运行、重新推送镜像。

方案2:从运行节点导出镜像(无ECR访问权限时适用)

如果目标镜像当前在Lightsail容器服务上有正在运行的部署,且你没有ECR仓库的拉取权限,可直接从运行节点导出镜像:

  • 登录Lightsail控制台,进入对应容器服务的详情页,开启节点SSH访问权限,下载节点访问密钥。
  • 通过控制台内置的Web SSH或者本地SSH客户端连接到运行目标容器的工作节点,执行docker ps查询到运行目标镜像的容器ID。
  • 将运行中的容器提交为节点本地镜像:
    docker commit <目标容器ID> recovered-target-image:latest
    
  • 将本地镜像导出为tar压缩包:
    docker save recovered-target-image:latest -o recovered-image.tar
    
  • 通过scp等工具将压缩包下载到本地,执行docker load -i recovered-image.tar即可在本地加载使用该镜像。

补充说明:以上两种方法取回的均为可运行的镜像二进制文件,无法直接还原原始构建使用的Dockerfile。如果需要近似还原Dockerfile,可在拉取镜像后执行docker history <本地镜像名:标签>查看每个镜像分层对应的构建命令,手动整理出近似的构建配置。

内容的提问来源于stack exchange,提问作者StarCub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 18:54:24