本地调试指南
#
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.
- 按正常请求本地服务(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=21+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 应用。
https://ccr.ccs.tencentyun.com/v2/: unauthorized: authentication required#
Q2. 登录仓库失败:GetA2. 本地调试指引中跳转到重置密码页面去重置密码