
# 执行"执行Docker命令"步骤，login命令部署失败问题
#### 问题现象一
部署"执行Docker命令"步骤中的login命令时，显示"unauthorized: authentication required"。
**原因分析**
用户名密码错误，导致认证失败。
**处理方法**
确认输入正确的用户名密码。
#### 问题现象二
部署"执行Docker命令"步骤中的login命令时，显示没有权限。
**原因分析**
Docker服务仅支持root用户或Docker组用户。
**处理方法**
将当前用户加入 Docker 组。
![](https://support.huaweicloud.com/deployman_faq/public_sys-resources/note_3.0-zh-cn.png)
加入Docker组请参考[执行"执行Docker命令"步骤，当前用户没有部署权限问题](https://support.huaweicloud.com/deployman_faq/deployman_faq_00169.html)。
#### 问题现象三
部署"执行Docker命令"步骤中的login命令时，显示"request canceled while waiting for connection(Client.Timeout exceeded while awaiting headers)"。
**原因分析**
1.镜像仓地址错误，导致无法连通，Docker验证v2接口失败。
2.机器没有外网权限，或没配置代理，导致连接远程镜像仓超时。
**处理方法**
1.重新确认镜像仓地址，保证镜像仓地址正确及可连通性。
2.为机器配置可连通镜像仓的代理。
#### 问题现象四
部署"执行Docker命令"步骤中的login命令时，显示"certificate signed by unknown authority"，并且提示"Task failed may be associated with not configured trust"。
**原因分析**
镜像仓库如果未配置证书，同时部署目标主机未对仓库配置添加信任，会导致登录失败。
**处理方法**
- 请先确认镜像仓地址以及用户名、密码正确，并排除网络连接及用户权限问题。
- 因添加信任配置需要重启Docker，重启操作会导致运行中的容器停止服务，因此建议提前配置需要用到的镜像仓地址，分两种情况处理。
 
#### 情况一
当前机器中无正在运行容器，或容器中断运行不影响对外提供服务。
1. 在部署步骤详情中，"命令"选择为"login"，"重启Docker服务"勾选"重启"。
2. 若需要重启容器，新添加"执行Docker命令"步骤，在部署步骤详情中，"命令"选择为"restart"。
3. 单击"保存并部署"。
 
#### 情况二
当前机器中容器正在运行，且服务不可中断。
1. 查看"/etc/docker/daemon.json"文件是否存在。
   1. 若不存在，请创建该文件，并添加如下配置：
      ```
      {
        "live-restore": true
      }
      ```
      
   
   2. 若存在，请按如图格式添加该配置： ![](https://support.huaweicloud.com/deployman_faq/zh-cn_image_0000001938245412.png)
      ![](https://support.huaweicloud.com/deployman_faq/public_sys-resources/note_3.0-zh-cn.png)
      - 配置"live-restore"参数请参考官网：<https://docs.docker.com/config/containers/live-restore/>。
      
      - 使用该参数可以避免引擎升级、重启导致容器停止服务的情况，需要注意的是，live-restore和Swarm Mode不兼容，所以在集群环境中不可使用。
        
    
2. 添加信任。
   1. 在"/etc/docker/daemon.json"文件中，按如下格式配置仓库地址：
      ```
      {
        "insecure-registries" : ["10.10.**.**","10.10.**.**:8080"],
        "live-restore": true
      }
      ```
      
    
3. 使以上配置生效。
   1. 当前系统若使用"systemd"，使用如下命令加载该配置：
      ```
      systemctl reload docker
      ```
      
   
   2. 若因版本问题无法使用"systemd" ，请使用如下命令重启Docker服务（该操作会导致容器停止服务），添加执行"重启容器"步骤；
      ```
      service docker restart
      ```
      
    
 
