调试Docker容器

本文讲的是调试Docker容器 【编者的话】本讲述了Cloud66在解决容器无法启动时的两种解决方案,对于没有自动调试技术的我们,优先推荐手动调试方案。

最近,我看到很多人都开始在生产环境中使用Docker。同样,我们也在帮助我们的客户使用Docker,虽然整个过程挑战颇多,但这种挑战是最令人激动和神往的。今天我分享下在生产环境中使用Docker时最常遇到的问题,希望能帮到你。

如何在本地让它工作?

容器最大的好处之一就是它是静态的,因此你可以最终部署出一致性的环境。如果某个镜像有问题,那你可以直接在本地运行调试。 在开发环境中运行Docker 非常简单,同时也很容易调错。

如果你需要在本地构建镜像,那你需要通过运行命令 docker run -it <image_name>:<tag> <command> 来运行容器。该命令会指定容器所运行的服务,你可以通过输出来定位问题。

Cloud66是怎样让它工作?

这里的第一步是检查,是否你已经通过开始命令(start command)提供的服务来启动容器,该开始命令可以是在Dockerfile中也可以是在服务配置项中。如果这些已经确认,那么接下来的步骤可以帮助你解决这个问题。

自动调试(live)

使用Cloud 66 toolbelt来运行你的容器:
cx run -s <stack_name> --server <server_name> --service <service_name> 

这个命令将根据带有装载有效环境变量或者设置网络或者DNS的镜像,启动一个新的容器,并attach进容器。你将可能看到任何错误的消息,从启动开始,这将帮助你解决问题。

你可以随意添加/bin/bash到命令末尾,以此来开启Bash脚本在容器中。这将帮助你调试容器在里边。这些命令可能提供给你复制或者粘贴,如果你访问你的Stack page -> Docker server -> Server name -> View running containers (通过右键)。

手动调试(retrospective)

  1. 首先SSH到你的服务器上
  2. 我们自动输出开启容器过程中产生的日志到文件/var/log/containers中,这些文件被命名如下: <service>_start_errors.log。这些日志文件将容纳任何通过开始命令产生的输出,这将是一个理解你容器为什么没有启动起来的好的主意。
  3. 通过docker ps来确定正在运行的容器,如果容器没有运行,那可能在启动时出现了其它的问题。
  4. 在这时,我们可以运行docker ps -a检查所有的容器,包括之前启动失败的以及已经不再运行的容器。注意记下最后一次部署的容器ID,我们会在接下来的步骤中用到
  5. 现在让我们检查失败容器的日志,通过运行docker log <container-id>,将输出为什么容器不能启动的所有错误信息。

很多时候,你遇到的问题别人都遇到过。所以遇到问题时,你先用错误信息Google以下,也许很快就有了解决问题的答案。

原文链接:Debugging Docker containers(翻译:刘红 校对:宋喻)

===========================
译者介绍
刘红,目前工作于成都一家虚拟现实公司,公司已经部署Docker线上环境,如果乐意大家多多沟通Docker技术。

原文发布时间为:2015-05-09
本文作者:刚百 
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:调试Docker容器
优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/224791

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。