背景

  很多时候我们在将开发环境的代码推送到GitLab上面以后,我们在测试的时候发现了问题后无法通过现有的日志输出级别来定位问题,比如我们需要看EFCore生成的SQL语句,在生产环境我们是不可能输出这些语句的,这个时候我们就需要将远程部署的Docker镜像拉取到本地然后进行调试,然后再看具体的日志以便排查疑难问题。

  比如我们在使用Serilog进行日志记录的时候,我们会在appsettings.Development.json和appsettings.Production.json中配置不同的Serilog格式

  在开发环境:

"Serilog": {
"Using": [ "Serilog.Sinks.Console", "Serilog.Sinks.File" ],
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "Console"
},
{
"Name": "File",
"Args": { "path": "Logs/Dms.Parts.Parts.log" }
}
]
}

  在这里我们会将日志输出到本地的log文件中去。

  在生产环境:

"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Warning",
"System": "Warning",
"Abp.Auditing.SimpleLogAuditingStore": "Warning"
}
},
"WriteTo": [
{
"Name": "Console",
"Args": {
"formatter": "Serilog.Formatting.Compact.CompactJsonFormatter, Serilog.Formatting.Compact"
}
}
]
}

  配置好这些后,我们要做的第一步就是把生产环境的镜像拉取下来,然后调试,那么具体该怎样进行操作呢?

  操作

  1 找到GitLab上面的具体镜像

 图一 获取特定服务镜像名称

  2 登录GitLab

docker login registry.sdtdev.net

  然后输入当前GitLab的用户名和密码,否则是不能进行当前镜像的拉取操作的。

  3 拉取镜像到本地

docker run -e TZ=Asia/Shanghai -e ASPNETCORE__ENVIRONMENT=Development -e ASPNETCORE__URLS=http://+:80 -p 8082:80 --name ocr --rm registry.sdtdev.net/chery/adapters/ocr/master:40647

  这里需要注意的是:

  3.1 设置ASPNETCORE_ENVIRONMENT=Development,另外设置当前值为Development是为了保证Serilog日志输出级别为appsettings.Development.json中配置的日志输出级别,从而能够输出更多的日志出来。

  3.2 -p 8082:80将80端口映射为本地8082端口。

  3.3 --name表示为当前docker镜像的别名,这个非常重要的。

  3.4 --rm命令在此处的作用是当我们执行docker stop命令停止镜像的时候,后台会在docker容器中移除当前镜像。

  3.5  如果执行完毕后我们可以通过docker ps 或者docker images 来查看镜像的启动情况。

  4 本地Postman调试

  找到需要进行调试的本地URL,然后进行请求发送。

  图二 本地Postman进行调试

  这里需要注意在Windows7上面这个Docker镜像映射到本地的地址是192.168.99.100,如果是Windows10 此时我们可以使用localhost进行代替,这样发送请求后,我们就可以在cmd 或者powershell窗口中看到输出的log文件内容了

图三 cmd窗口输出日志文件

  通过上面的操作我们就能够将原本本地调试的development级别的内容从log文件中取出,最后显示在cmd中从而帮助我们进行线上环境问题的排查,上面就是整个过程。

如何将生产环境的服务Docker镜像拉取到本地进行调试的更多相关文章

  1. docker镜像拉取速度过慢的解决

    前提是我们在linux环境下安装好了docker,并且可以正常启动关闭. 当我们对镜像进行拉取的时候,会发现速度非常的慢,停在下面这个界面很久也不动. 解决方法 进入阿里云官网,进入后搜索docker ...

  2. Docker镜像拉取总结

    flannel docker pull quay-mirror.qiniu.com/coreos/flannel:v0.11.0-amd64 docker tag quay-mirror.qiniu. ...

  3. Docker镜像-拉取并且运行

    1.docker search : 从Docker Hub查找镜像 docker search [OPTIONS] 镜像名 OPTIONS说明: --automated :只列出 automated ...

  4. docker镜像拉取、运行、删除

    1.拉取hello-world镜像并运行 docker pull hello-world 拉取hello-world镜像Using default tag: latestlatest: Pulling ...

  5. Docker镜像拉取失败或超时的解决办法:添加国内镜像

    $ docker pull php:7.1-fpm-alpine Error response from daemon: Get https://registry-1.docker.io/v2/: n ...

  6. Docker镜像拉取慢的解决方法

    镜像加速器配置: 下文配置引用于阿里云说明文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 1. 安装/升级Docker客户 ...

  7. K8s 从懵圈到熟练 – 镜像拉取这件小事

    作者 | 声东 阿里云售后技术专家 导读:相比 K8s 集群的其他功能,私有镜像的自动拉取,看起来可能是比较简单的.而镜像拉取失败,大多数情况下都和权限有关.所以,在处理相关问题的时候,我们往往会轻松 ...

  8. 生产环境中使用Docker Swarm的一些建议

    译者按: 实践中会发现,生产环境中使用单个Docker节点是远远不够的,搭建Docker集群势在必行.然而,面对Kubernetes, Mesos以及Swarm等众多容器集群系统,我们该如何选择呢?它 ...

  9. 【Docker】拉取Oracle 11g镜像配置

    以下是基于阿里云服务器Centos 7操作 1.拉取Oracle11g镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_1 ...

随机推荐

  1. mac Understand 安装破解

    下载:链接:https://pan.baidu.com/s/1UvxgFnjv9pRVJmZO-J2OrQ  密码:nyd4 启动后,开始激活,点击enter License code 点击“use ...

  2. Intellij IDEA 从入门到上瘾 图文教程

    1. IDEA VS Eclipse 核心术语比较 ​ 由下图可见:两者最大的转变就在于工作空间概念的转变,并且在IDEA当中,Project和 Module是作为两个不同的概念,对项目结构是具有重大 ...

  3. 记一次vue+vuex+vue-router+axios+elementUI开发(二)

    开发环境跟脚手架初始完毕后,我们开始配置axios请求后台接口   axios使用说明:https://www.kancloud.cn/yunye/axios/234845 1.本人是在脚手架中的sr ...

  4. Hutool工具类之HttpUtil使用Https

    关于Hutool工具类之HttpUtil如何使用可以参考官方文档Hutool之HttpUtil 其实使用Http和Https使用的方式是一样的. 建议大家可以看看HttpUtil的源码,感觉设计的挺不 ...

  5. 第十四周助教工作总结——NWNU李泓毅

    助教博客链接:https://www.cnblogs.com/NWNU-LHY/ 本次作业的要求:团队项目需求改进与系统设计:https://www.cnblogs.com/nwnu-daizh/p/ ...

  6. 【转】反编译微信小程序错误: $gwx is not defined和__vd_version_info__ is not defined 已解决

    修改wxappUnpacker文件中的 wuWxss.js function runVM(name, code) { // let wxAppCode = {}, handle = {cssFile: ...

  7. NPVariant -js传递给NPAPI插件参数在firefox和chrome需要采用不同的获取方式

    原帖地址:http://blog.sina.com.cn/s/blog_4c6631790102wd1o.html 整数参数 typedef struct _NPVariant { NPVariant ...

  8. 课程学习 - 人类疾病导论 | Introduction To Human Disease

    完美人类假设:一类人,具有最完美的基因组,享受最健康的环境和饮食,同时拥有最健康的思想情绪,最终以最长的寿命,自然死亡. 自然死亡是自然生命最终的归宿,这是写在目前基因组里的铁律! 不管科技如何发展, ...

  9. JVM常量的含义与反编译助记符详解

    1.定义一个常量 public class MyTest2 { public static void main(String[] args) { System.out.println(MyParent ...

  10. Javascript自定义事件功能与用法实例分析

    原文地址:https://www.jb51.net/article/127776.htm 本文实例讲述了javascript自定义事件功能与用法.分享给大家供大家参考,具体如下: 概述 自定义事件很难 ...