跳到主要内容

本地调试指南

Case 1:使用代码构建,部署失败 - 服务无法正常拉起#

1. 查看部署失败版本对应的本地调试指引#

  • 进入版本配置页面

  • 进入本地调试指引页面

2. 拉取镜像到本地#

为了将部署失败版本的镜像拉取到本地进行调试,需要先登录到 Registry。

  • 登录腾讯云 Docker Registry
$ docker login --username=1000088888888 ccr.ccs.tencentyun.comPassword:Login Succeeded  # 登录成功提示

如出现报错,可查看常见问题

  • 输入密码登录(如已忘记仓库密码,可在指引页面跳转到重置密码页面)

  • 从 Registry 拉取镜像

$ docker pull ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:fail-demo-001-1612497814fail-demo-001-1612497814: Pulling fromtcb-1000088888888-abcd/env-abcdefg123_fail-demo4c0d98bf9879: Pull completed9d36136d317: Pull complete8cde4a21744b: Pull completeDigest: sha256:00f4849f507bab816f9e2ff205eedb9a8f101e58be8e05e44807487955dc0988Status: Downloaded newer image for ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:fail-demo-001-1612497814ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:fail-demo-001-1612497814

3. 定位问题#

  • 查看下载好的镜像
$ docker image lsREPOSITORY                                                                         TAG                        IMAGE ID       CREATED          SIZEccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo       fail-demo-001-1612497814   ebf4bc3609b1   30 minutes ago   12.5MB
  • 拉起服务定位问题
// 注: 8888:80 - 将容器服务的80端口映射到本地8888端口$ docker run -p 8888:80 ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:fail-demo-001-1612497814panic: this is fail demo testgoroutine 1 [running]:main.main()    /app/helloworld.go:17 +0x39

4. 解决问题#

由于服务无法正常拉起,使用docker run拉起镜像时如有异常将抛出错误,根据错误可定位到代码异常具体的行数,修复后重新构建即可。

Case 2:使用镜像,部署失败 - 逻辑问题查日志定位#

1. 查看部署失败版本对应的本地调试指引#

  • 进入版本配置页面

  • 进入本地调试指引页面

2. 拉取镜像到本地#

  • 登录腾讯云 Docker Registry
$ docker login --username=1000088888888 ccr.ccs.tencentyun.comPassword:Login Succeeded # 登录成功提示

如出现报错,可查看常见问题

  • 输入密码登录(如已忘记仓库密码,可在指引页面跳转到重置密码页面)

  • 从 registry 拉取镜像

$ docker pull ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:case2case2: Pulling fromtcb-1000088888888-abcd/env-abcdefg123_fail-demo4c0d98bf9879: Pull completed9d36136d317: Pull complete8cde4a21744b: Pull completeDigest: sha256:00f4849f507bab816f9e2ff205eedb9a8f101e58be8e05e44807487955dc0988Status: Downloaded newer image for ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:case2ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:case2

3. 定位问题#

  • 查看下载好的镜像
$ docker image lsREPOSITORY                                                                         TAG                        IMAGE ID       CREATED          SIZEccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo       case2   ebf4bc3609b1   30 minutes ago   12.5MB
  • 拉起服务定位问题
// 注: 8888:80 - 将容器服务的80端口映射到本地8888端口$ docker run -p 8888:80 ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:case22021/02/05 07:33:31 Server started.
2021/02/05 07:34:29 Received a request.num1=1 num2=2 sum=-1
  • 通过日志发现结果不对,并通过日志文本找到对应代码 17 行打印日志。并往前查看逻辑,发现 16 行逻辑有误。
  • 修复问题,重新生成镜像推到仓库,新建云托管版本解决。

4. 解决问题#

  • 将 16 行减法逻辑修复为加法逻辑后,本地重新打包镜像
$ docker build -t ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:case2-fix .
  • 拉起新的服务确认逻辑是否正常
$ docker run -p 8888:80 ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:case2-fix    2021/02/05 07:33:31 Server started.
2021/02/05 07:44:29 Received a request.num1=1 num2=2 sum=3
  • 将修复后的镜像推到远端
$ docker push ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:case2-fix
  • 云托管使用刚刚修复的镜像新建版本

  • 访问服务,验证逻辑正常

http://env-abcdefg123-1234567890.ap-shanghai.app.tcloudbase.com/container-fail-demo/add?num1=1&num2=21+2=3

附录#

本地安装 docker#

下载对应系统的Docker

  1. Windows Docker Desktop for Windows:下载链接

  2. MacOS Docker Desktop for Mac:下载链接

  3. CentOS

$ yum install -y yum-utils device-mapper-persistent-data lvm2$ yum-config-manager --add-repo http://mirrors.tencent.com/docker-ce/linux/centos/docker-ce.repo # 设置docker源$ yum install docker-ce    # 安装容器$ systemctl start docker   # 启动容器

常见问题#

Q1. 执行 docker 相关命令错误:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?#

A1. 容器未启动,CentOS 可通过命令systemctl start docker启动、Window 和 MacOS 可直接打开 Docker 应用。

Q2. 登录仓库失败:Get https://ccr.ccs.tencentyun.com/v2/: unauthorized: authentication required#

A2. 本地调试指引中跳转到重置密码页面去重置密码

示例代码#

Case 1:使用代码构建,部署失败 - 服务无法正常拉起#

查看示例代码

Case 2:使用镜像,部署失败 - 逻辑问题查日志定位#

查看示例代码