本文讲的是调试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容器

调试Docker容器相关推荐

  1. docker容器的标准使用过程_phpStorm中使用xdebug工具调试docker容器中的程序

    最近使用了docker容器来构建项目,这种方式虽然极大的加快了构建的项目速度,但是也会对之前的本地开发带来一些挑战,比如今天讲到的调试程序,大家对于xdebug一定不会陌生,但是如果php-fpm放到 ...

  2. Docker容器环境下ASP.NET Core Web API应用程序的调试

    本文主要介绍通过Visual Studio 2015 Tools for Docker – Preview插件,在Docker容器环境下,对ASP.NET Core Web API应用程序进行调试.在 ...

  3. Pycharm代码docker容器运行调试 | 机器学习系列

    目录 介绍 版本 部署 安装驱动 安装docker 创建基础容器 安装Anaconda 关于Anaconda的使用 Docker容器SSH服务启动 Pycharm连接Docker容器 验证 运行验证 ...

  4. VSCode连接远程服务器docker容器并调试代码

    1.连接远程服务器 (1)在VSCode中安装扩展Remote Development (2)安装完成左侧菜单栏出现一个远程资源管理的图标,选择SSH Targets,点击"+"添 ...

  5. pycharm配置远程调试docker

    20210923 pycharm 运行远程解释器 20210915 远程调试确认配置 第一步如果事先没有配置ssh,可以选下面新建ssh 还有另一种调试方法:使用pycharm-debug包调试 详情 ...

  6. Docker容器化部署config-server无法直接访问

    Docker容器化部署config-server无法直接访问 1. 本机ip启动方式: 2. Docker容器启动 1)问题 2)解决办法 - 本机启动 - 服务器启动俩种方式 3. dockerfi ...

  7. 静茹docker容器的几种方法_Docker介绍及使用

    什么是容器? 容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁.隔离的环境拥有自己的系统文件,ip地址,主机名等,kvm虚拟机,linux,系统文件 程序:代码,命令 进程:正在运行的程 ...

  8. 创建尽可能小的 Docker 容器

    当我们在使用 Docker 的时候,你会很快注意到你正在下载很多 MB 作为你的预先配置的容器.一个简单的 Ubuntu 容器很容易超过 200 MB,并且随着在上面安装软件,尺寸在逐渐增大.在某些情 ...

  9. 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排...

    1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...

最新文章

  1. Redis报错解决:RDB: 0 MB of memory used by copy-on-write
  2. docker nodejs 基本应用
  3. 独家 | 规范性分析的实用介绍(附R语言案例研究演示代码)
  4. python 入门DAY1
  5. 微型计算机显示器引线,微型计算机的显示器通常有两组引线,即分别是( )...
  6. ASP.NET使用log4Net日志组件教程(按日期与按日志大小切割)
  7. linux用usermod修改密码,Linux笔记(usermod命令,用户密码管理,mkpasswd)
  8. 我的世界服务器怎么在计分板上面显示,我的世界计分板指令教程 计分板指令怎么使用...
  9. python贪吃蛇游戏设计答辩_python编写贪吃蛇游戏
  10. 小米wifi驱动 linux驱动,小米wifi驱动程序
  11. 谈谈大数据时代企业如何进行数据治理体系建设
  12. 2018年第九届C/C++ A组蓝桥杯省赛真题——第五题:书号验证
  13. linux怎么设置永久变量,Linux环境变量永久设置方法(zsh)
  14. CleanMyMac X2022最新mac超强清理系统工具
  15. 自动售货机html代码,自动售货机系统源代码.doc
  16. JVM(运行时数据区结构)详解一
  17. win10如何设置或取消屏保密码
  18. oracle sql语句中like %参数%的用法
  19. 鸟哥的Linux私房菜(基础版)第五章学习笔记
  20. 如何彻底放松你的小腿—告别小腿足踝伤痛

热门文章

  1. 《Lua游戏开发实践指南》学习笔记3
  2. multiprocessing 多进程
  3. 三剑客”之Swarm应用数据持久化管理(volume 、bind 、 nfs)
  4. Java 蓝牙无线API 简介
  5. HTML5学习笔记(二):HTML基础学习之一
  6. dojo/dom源码学习
  7. 嵌入式jetty --- 转载
  8. 解读MySQL事务的隔离级别和日志登记模式选择技巧
  9. 预告:2009年下半年软考试题及答案51CTO将实时发布
  10. 我们遇到困难怎么办?