# 拉取镜像到本地
#### 操作场景
当您需要使用镜像仓库中的镜像时，您需要从镜像仓库拉取镜像。常搭配华为云产品云容器引擎CCE部署工作负载或者云容器实例CCI部署实例使用。拉取镜像也叫下载镜像。镜像类型有公开和私有两种。
- 公开镜像所有用户（即所有账户下的所有用户）默认都能下载。为了进一步提升镜像管理的安全性，SWR也支持对公开镜像的下载进行权限控制，可通过[相关控制策略](https://support.huaweicloud.com/usermanual-swr/swr_01_0188.html)进行控制。
- 私有镜像则受具体权限管理控制。您可以为用户添加授权，授权完成后，用户享有读取、编辑或管理私有镜像的权限，具体请参见[在镜像详情中添加授权](https://support.huaweicloud.com/usermanual-swr/swr_01_0015.html#swr_01_0015__section851514354541)。
您可以使用Docker容器引擎也可以使用Containerd容器引擎下载容器镜像服务中的镜像。
#### 前提条件
- 在拉取镜像前，请确保您的网络畅通。详细网络配置步骤请参考[配置访问网络](https://support.huaweicloud.com/bestpractice-swr/swr_bestpractice_0013.html)。
- IAM用户创建后，在拉取镜像前，请联系管理员为您添加对应组织权限，您才具有该组织内镜像的读取、编辑等权限。详情请参考[授权管理](https://support.huaweicloud.com/usermanual-swr/swr_01_0015.html)。
- "我的镜像"展示当前用户所有的自有镜像（该用户所在组织所拥有的镜像）和共享镜像（该组织下其他用户共享的私有镜像）。
 
#### 约束与限制
使用docker容器引擎客户端拉取镜像时，需确保docker容器引擎客户端必须为18.06及以上的版本。
#### 拉取"我的镜像"
您可以使用docker容器引擎也可以使用Containerd容器引擎拉取容器镜像服务中的镜像。
- [Docker容器引擎]
  1. 以root用户登录容器引擎所在的虚拟机。
  
  2. 参考[容器引擎客户端推送镜像（推荐）](https://support.huaweicloud.com/usermanual-swr/swr_01_0011.html#swr_01_0011__section133931001278)获取登录访问权限，连接容器镜像服务。
  
  3. 登录[SWR控制台](https://console.huaweicloud.com/swr/#/swr/dashboard)。
  
  4. 在左侧导航栏选择"我的镜像"，单击右侧镜像名称。
  
  5. 在镜像详情页面中，单击对应镜像版本"下载指令"列的复制图标![](https://support.huaweicloud.com/usermanual-swr/zh-cn_image_0000002126216568.png)，复制镜像下载指令。
     图1获取镜像下载指令   
     ![](https://support.huaweicloud.com/usermanual-swr/zh-cn_image_0000002161496225.png "点击放大") 
  
  6. 在虚拟机中执行[5]复制的镜像下载指令。
     示例：
     ```
     docker pull swr.cn-east-3.myhuaweicloud.com/group/nginx:v2.0.0
     ```
     使用**docker images**命令查看是否下载成功。
     ```
     # docker images
     REPOSITORY                                                              TAG       IMAGE ID       CREATED         SIZE
     swr.*******.*******.com/group/nginx                             v2.0.0    22f2bf2e2b4f   5 hours ago     22.8MB
     ```
     
  
  7. （可选）执行如下命令将镜像保存为归档文件。
     ```
     docker save [镜像名称:版本名称] > [归档文件名称]
     ```
     示例：
     ```
     docker save swr.cn-east-3.myhuaweicloud.com/group/nginx:v2.0.0 > nginx.tar
     ```
     
   
- [Containerd容器引擎]
  1. 登录[SWR控制台](https://console.huaweicloud.com/swr/#/swr/dashboard)。
  
  2. 在左侧导航栏选择"我的镜像"，单击右侧镜像名称。
  
  3. 在镜像详情页面中，复制操作列的"containerd指令"或者进入"Pull/Push指南"页签，复制Containerd容器引擎的镜像下载指令。
     ```
     ctr -n k8s.io images pull --user {用户名}:{密码} {镜像仓库地址}/{组织名称}/{镜像名称}:{版本名称}
     ```
     - -n k8s.io：指定containerd命名空间，k8s集群中默认使用k8s.io命名空间。
     
     - {用户名}:{密码}：参数建议使用推送或拉取指令自动生成。
     
     
     ![](https://support.huaweicloud.com/usermanual-swr/zh-cn_image_0000002686331647.png "点击放大")
     
     ![](https://support.huaweicloud.com/usermanual-swr/public_sys-resources/note_3.0-zh-cn.png)
     临时登录指令支持用户自定义临时登录有效时间，支持设置有效期是15分钟-24小时，过期会失效。若需要长期有效的下载指令，请参见[获取Containerd容器引擎通用型登录指令之长期有效的拉取、推送镜像指令](https://support.huaweicloud.com/usermanual-swr/swr_01_1000.html#swr_01_1000__section0998306389)。
     
  
  4. 以root用户登录Containerd容器引擎所在的虚拟机。
  
  5. 在虚拟机中执行[3]复制的镜像拉取指令。
     ![](https://support.huaweicloud.com/usermanual-swr/zh-cn_image_0000002655759240.png "点击放大")
     
  
  6. 使用**ctr -n k8s.io images lis** **t** 命令查看镜像是否拉取成功。
     ![](https://support.huaweicloud.com/usermanual-swr/zh-cn_image_0000002648166898.png "点击放大")
     
   
#### 拉取镜像中心的镜像
镜像中心的镜像可直接拉取，无需添加仓库地址。如[图2]所示的mongo镜像，只需[容器引擎所在虚拟机连接SWR](https://support.huaweicloud.com/qs-swr/index.html#section5)且执行如下命令即可将其拉取。
```
docker pull mongo:4.1
```
图2mongo镜像详情示例   
![](https://support.huaweicloud.com/usermanual-swr/zh-cn_image_0000001945534661.png "点击放大")
**常见问题**
下载镜像中心的镜像偶发失败，详情请参见[国内网络访问 DockerHub 镜像仓库异常通知](https://support.huaweicloud.com/bulletin-swr/swr_bulletin_0001.html)
#### 常见问题
[拉取镜像常见问题](https://support.huaweicloud.com/swr_faq/swr_faq_2005.html)
[如何解决内网下载镜像失败？](https://support.huaweicloud.com/swr_faq/swr_faq_0007.html)
[为什么docker pull指令执行失败？](https://support.huaweicloud.com/swr_faq/swr_faq_0033.html)
下载镜像中心的镜像偶发失败，详情请参见[国内网络访问 DockerHub 镜像仓库异常通知](https://support.huaweicloud.com/bulletin-swr/swr_bulletin_0001.html)
