
# 制作并上传镜像
本章指导用户将整体应用制作成Docker镜像。制作完镜像后，每次应用的部署和升级即可通过镜像操作，减少了人工配置，提升效率。
![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/note_3.0-zh-cn.png)
制作镜像时，要求制作镜像的文件在同个目录下。
#### 使用云服务
容器镜像服务SWR：是一种支持容器镜像全生命周期管理的服务， 提供简单易用、安全可靠的镜像管理功能，帮助用户快速部署容器化服务。
#### 基本概念
- 镜像：Docker镜像是一个特殊的文件系统，除了提供容器运行时所需的程序、库、资源、配置等文件外，还包含了一些为运行时准备的配置参数（如匿名卷、环境变量、用户等）。镜像不包含任何动态数据，其内容在构建之后也不会被改变。
- 容器：镜像（Image）和容器（Container）的关系，就像是面向对象程序设计中的类和实例一样，镜像是静态的定义，容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
 
#### 操作步骤
下面介绍制作容器镜像的两种方法，可以根据实际情况选择其中一种
- 使用docker制作容器镜像：使用命令行和Dockerfile构建容器镜像，需要已经安装好Docker的服务器。
- 使用nerdctl制作容器镜像：使用命令行和Dockerfile构建容器镜像，命令风格与docker兼容。适用于在containerd环境下制作容器镜像。
 
#### 使用Docker制作容器镜像
1. 以root用户登录到安装有Docker的服务器上。
2. 进入apptest目录。 
   **cd apptest**
   此处必须确保制作镜像的文件均在同个目录下。
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0091292713.png "点击放大")
   
   
3. 构建镜像。 
   **docker build -t apptest:v1 .**
   
   
4. 上传镜像到容器镜像服务中，上传镜像具体步骤请参见[通过客户端上传镜像](https://support.huaweicloud.com/usermanual-swr/swr_01_0011.html)。
 
#### 使用nerdctl制作容器镜像
1. 以root用户登录到运行containerd并安装有nerdctl的服务器。
2. 进入apptest目录。 
   **cd apptest**
   此处必须确保制作镜像的文件均在同个目录下。
   ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000002630822930.png "点击放大")
   
   
3. 构建镜像。 
   **nerdctl build -t apptest:v1 ./**
   
   
4. 上传镜像到容器镜像服务中，上传镜像具体步骤请参见[通过客户端上传镜像](https://support.huaweicloud.com/usermanual-swr/swr_01_0011.html)。
 
