调试Docker容器

简介: 本文讲的是调试Docker容器,【编者的话】本讲述了Cloud66在解决容器无法启动时的两种解决方案,对于没有自动调试技术的我们,优先推荐手动调试方案。
本文讲的是调试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容器
目录
相关文章
|
5月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
6月前
|
运维 持续交付 开发者
Docker:重塑现代应用开发的容器革命
Docker:重塑现代应用开发的容器革命
|
6月前
|
运维 持续交付 开发者
Docker:现代应用开发的容器化革命
Docker:现代应用开发的容器化革命
|
4月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
4月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
455 6