跳到主要内容

本地调试指南

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

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

  • 进入版本配置页面

  • 进入本地调试指引页面

2. 拉取镜像到本地

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

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

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

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

  • 从 Registry 拉取镜像

$ docker pull ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:fail-demo-001-1612497814
fail-demo-001-1612497814: Pulling fromtcb-1000088888888-abcd/env-abcdefg123_fail-demo
4c0d98bf9879: Pull complete
d9d36136d317: Pull complete
8cde4a21744b: Pull complete
Digest: sha256:00f4849f507bab816f9e2ff205eedb9a8f101e58be8e05e44807487955dc0988
Status: Downloaded newer image for ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:fail-demo-001-1612497814
ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:fail-demo-001-1612497814

3. 定位问题

  • 查看下载好的镜像
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ccr.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-1612497814
panic: this is fail demo test
goroutine 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.com
Password:
Login Succeeded # 登录成功提示

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

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

  • 从 registry 拉取镜像

$ docker pull ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:case2
case2: Pulling fromtcb-1000088888888-abcd/env-abcdefg123_fail-demo
4c0d98bf9879: Pull complete
d9d36136d317: Pull complete
8cde4a21744b: Pull complete
Digest: sha256:00f4849f507bab816f9e2ff205eedb9a8f101e58be8e05e44807487955dc0988
Status: Downloaded newer image for ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:case2
ccr.ccs.tencentyun.com/tcb-1000088888888-abcd/env-abcdefg123_fail-demo:case2

3. 定位问题

  • 查看下载好的镜像
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ccr.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:case2
2021/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=2
1+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:使用镜像,部署失败 - 逻辑问题查日志定位

查看示例代码