更新时间:2026-09-23 GMT+08:00
分享

镜像的整个生命周期

入门指引

容器镜像服务是一种支持容器镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,帮助用户快速部署容器化服务。本文档以一个nginx镜像为例,帮助您学习如何安装容器引擎并构建镜像,以及如何使用容器引擎客户端推送镜像到容器镜像仓库。

  • 推送镜像到容器镜像仓库支持两种方式:使用容器引擎客户端和console页面,console页面上传请参见页面上传
  • 暂未开放镜像推送的API。

您将按以下流程学习如何使用容器镜像服务。

图1 入门流程

准备工作

在使用容器镜像服务企业版之前,请您先注册华为账号并完成实名认证,详情请参见注册华为云账号个人实名认证

本文以一个nginx镜像为例,讲述根据该应用编写Dockerfile文件构建镜像并推送至容器镜像服务的操作。您可以编写一个Dockerfile文件,以nginx为基础镜像,来构建一个新nginx容器镜像。

一、安装容器引擎

首先,您需要准备一台虚拟机并安装docker容器引擎,请确保容器引擎为18.06及以上版本。

在安装容器引擎前,请了解容器引擎的基础知识,具体请参见Docker Documentation

购买并登录弹性云服务器

参考购买并登录Linux弹性云服务器创建一台带有弹性公网IP的Linux弹性云服务器。

作为演示,弹性云服务器和公网IP的规格不需要太高,例如弹性云服务器的规格为“1vCPUs | 2GiB”、公网IP带宽为“1 Mbit/s”即可,操作系统以选择“CentOS 7.5”为例。

  • 您也可以使用其他机器安装容器引擎,不创建弹性云服务器
  • 如果您使用的操作系统为EulerOS,请参考EulerOS操作系统下安装
  • 如果您使用的是Centos操作系统,建议选择CentOS7、CentOS7.2、CentOS7.3、CentOS7.4、CentOS7.5、CentOS7.6操作系统版本,否则可能导致安装异常。

创建完成后返回弹性云服务器列表,单击操作列的“远程登录”,以root用户登录弹性云服务器

安装Docker容器引擎

使用如下命令快速安装容器引擎,具体请参见Docker 安装指南

curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
sudo systemctl daemon-reload
sudo systemctl restart docker

二、构建镜像

构建镜像的内容可以是源代码,也可以是已打包成压缩包的镜像。

  1. 创建一个名为Dockerfile的文件。

    mkdir mynginx
    cd mynginx
    touch Dockerfile

  2. 编辑Dockerfile

    vim Dockerfile

    增加文件内容如下:

    FROM nginx
    RUN echo '<h1>Hello, SWR!</h1>' > /usr/share/nginx/html/index.html

    Dockerfile指令介绍如下。

    • FROM语句:表示使用nginx镜像作为基础镜像,一个Dockerfile中FROM是必备的指令,并且必须是第一条指令。
    • RUN语句:格式为RUN <命令>,表示执行echo命令,在显示器中显示一段“Hello, SWR!”的文字。

    “Esc”,输入:wq,保存并退出。

  3. 使用docker build [选项] <上下文路径> 构建镜像。

    docker build -t nginx:v1 .
    • -t:指定镜像的名称和版本。
    • .:指定Dockerfile所在目录,镜像构建命令将该路径下所有的内容打包给容器引擎帮助构建镜像。

      有关 Dockerfile 的更多信息,请参考 Dockerfile 参考

  4. 执行以下命令,可查看到已成功部署的nginx镜像,版本为v1。

    docker images

下面指导您通过docker load命令和ctr images import命令将镜像压缩包导入为一个镜像。

制作镜像压缩包

本节指导您将容器镜像制作成tartar.gz文件压缩包。

  1. 以root用户登录容器引擎所在机器。
  2. 执行如下命令查看镜像。

    docker images

    查看需要导出的镜像及tag。

  3. 执行如下命令制作镜像压缩包。

    docker save [OPTIONS] IMAGE [IMAGE...]
    • OPTIONS:--output或-o,表示导出到文件。
    • 压缩包格式为:.tar或.tar.gz。

    使用docker save制作镜像压缩包时,请用{image}:{tag}(请替换为实际镜像名和版本号),不要用image id(镜像id),否则无法在SWR页面上传。

    示例:

    docker save nginx:latest > nginx.tar
    ls -sh nginx.tar
    108M nginx.tar
    
    docker save php:5-apache > php.tar.gz
    ls -sh php.tar.gz
    372M php.tar.gz
    
    docker save --output nginx.tar nginx
    ls -sh nginx.tar
    108M nginx.tar
    
    docker save -o nginx-all.tar nginx    # 将nginx所有版本打包
    docker save -o nginx-latest.tar nginx:latest

导入镜像文件

使用Docker客户端导入,执行以下命令:
docker load < 路径/文件名.tar
docker load --input或者-i 路径/文件名.tar
示例:
docker load --input fedora.tar

三、创建组织

组织用于隔离镜像,并为账号下的IAM用户指定不同的权限(读取、编辑、管理)。

  1. 登录SWR控制台
  2. 单击控制台左上角的,选择区域和项目。
  3. 在左侧导航栏单击“组织管理”,进入组织管理页面。
  4. 单击页面右上角的“创建组织”按钮,在弹框中填写“组织名称”,然后单击“确定”

    表1 创建组织参数说明

    参数

    示例

    参数说明

    组织名称

    cloud-develop

    组织用于隔离镜像仓库,每个组织可对应一个公司或部门,将其拥有的镜像集中在该组织下

    小写字母开头,后面跟小写字母、数字、点、下划线或中划线(其中下划线最多允许连续两个,中划线允许连续多个,点、下划线、中划线不能直接相连),小写字母或数字结尾,1-64个字符。

    • 组织名称全局唯一,即当前区域下,组织名称唯一。创建组织时如果提示组织已存在,可能该组织名称已被其他用户使用,请重新设置一个组织名称。
    • 用户在IAM中被授予SWR Admin或Tenant Administrator策略才有创建组织的权限。
    • 不允许创建名称为library的组织,该组织为系统预留,请更换一个其他的名称。

四、连接容器镜像服务

  1. 登录SWR控制台
  2. 选择左侧导航栏的“总览”,单击页面右上角的“登录指令”,在弹出的页面中单击复制登录指令。

    图2 登录指令

    临时登录指令支持用户自定义临时登录有效时间,支持设置有效期是15分钟-24小时,过期会失效,若需要长期有效的登录指令,请参考获取长期有效登录指令

    Docker客户端需要获取登录指令,Containerd客户端无需获取登录指令。

  3. 在安装容器引擎的虚拟机中执行上一步复制的登录指令。

    登录成功会显示“Login Succeeded”

五、推送镜像

本节介绍使用Docker客户端推送镜像的方法。

  1. 在安装容器引擎的虚拟机上执行以下命令,为nginx镜像打标签。

    docker tag [镜像名称1:版本名称1] [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2]

    其中,

    • [镜像名称1:版本名称1]:请替换为您所要推送的实际镜像的名称和版本名称。
    • [镜像仓库地址]:可在SWR控制台上查询,四、连接容器镜像服务中登录指令末尾的域名即为镜像仓库地址。
    • [组织名称]:请替换为三、创建组织中创建的组织。
    • [镜像名称2:版本名称2]:请替换为您期待的镜像名称和镜像版本。

    示例:

    docker tag nginx:v1 swr.cn-north-4.myhuaweicloud.com/cloud-develop/nginx:v1

  2. 推送镜像至镜像仓库

    docker push [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2]

    示例:

    docker push swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1

    终端显示如下信息,表明推送镜像成功。

    The push refers to repository [swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1]
    fbce26647e70: Pushed 
    fb04ab8effa8: Pushed 
    8f736d52032f: Pushed 
    009f1d338b57: Pushed 
    678bbd796838: Pushed 
    d1279c519351: Pushed 
    f68ef921efae: Pushed 
    v1: digest: sha256:0cdfc7910db531bfa7726de4c19ec556bc9190aad9bd3de93787e8bce3385f8d size: 1780

  3. 返回容器镜像服务控制台,在“我的镜像”页面,执行刷新操作后可查看到对应的镜像信息。

六、拉取镜像

拉取镜像(也叫下载镜像),当您需要使用镜像仓库中的镜像时,您需要从镜像仓库拉取镜像。常搭配华为云产品云容器引擎CCE部署工作负载或者云容器实例CCI部署实例使用。

  1. 登录SWR控制台
  2. 单击左侧导航栏的“我的镜像”进入镜像列表页面。
  3. 单击镜像名称进入镜像详情页面。
  4. 单击Pull/Push指南页签,选择docker容器引擎,复制页面生成的docker pull指令,在终端执行该指令 。

    示例:
    docker pull swr.cn-east-3.myhuaweicloud.com/group/nginx:v2.0.0

  5. 执行docker images查看已拉取的镜像。

    docker images

七、删除镜像

容器镜像服务支持镜像的全生命周期管理,包括镜像的推送、拉取、删除等。

  1. 登录SWR控制台
  2. 在左侧导航栏选择“我的镜像”。
  3. 找到需要删除的镜像,单击右侧操作列的更多,下拉菜单单击"删除"。
  4. 在弹出的确认框中输入“DELETE”,单击"确定",完成删除。
如果您需要删除本地机器上的镜像,可以使用以下命令:
# 查看本地镜像
docker images  
# 删除本地镜像
docker rmi [镜像名称:版本名称] 
示例
docker rmi swr.cn-north-4.myhuaweicloud.com/cloud-develop/nginx:v1 
或删除本地构建的镜像:
docker rmi nginx:v1 

删除镜像前,请确保没有容器正在使用该镜像。您可以先执行docker ps -a查看所有容器,并停止或删除使用该镜像的容器。

Docker容器引擎客户端只删除本机器的镜像,不会删除SWR仓库里的镜像,SWR仓库的镜像要通过控制台删除方式。

八、删除组织

  1. 登录SWR控制台
  2. 单击控制台左上角的,选择区域和项目。
  3. 在左侧导航栏选择“组织管理”
  4. 单击待删除组织右上角“删除”按钮,单击“确定”

    图3 删除组织

相关文档