本地调试指南
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.
- 按正常请求本地服务(http://127.0.0.1/add?num1=1&num2=2)
- 查看 docker run 终端标准输出日志
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.
- 按正常请求本地服务(http://127.0.0.1/add?num1=1&num2=2)
- 查看 docker run 终端标准输出日志
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
$ 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. 本地调试指引中跳转到重置密码页面去重置密码