惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
A
About on SuperTechFans
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
博客园 - 聂微东
博客园 - Franky
D
Docker
Martin Fowler
Martin Fowler
Engineering at Meta
Engineering at Meta
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
Last Week in AI
Last Week in AI
U
Unit 42
F
Fortinet All Blogs
H
Help Net Security
Blog — PlanetScale
Blog — PlanetScale
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
P
Proofpoint News Feed
月光博客
月光博客
G
Google Developers Blog

博客园 - DHclly

Aspose.Words 合并单元格的原理、配置方式、代码示例以及常见误区 Gpustack 运行一段时间后出现 Failed to initialize NVML: Unknown Error 解决办法 wps dispimg python 解析实现参考 NVIDIA GPU 计算能力( compute capability,SM version)兼容性查询 Amazon S3 Tools:S3cmd 介绍 wsl 和win主机互相访问 nginx 根路径同时代理 http ws sse 三种请求 在 X86_64(amd64) 平台上的docker支持打包跨平台的镜像(如arm64) 以图搜图功能介绍 open ai sdk 的额外请求头说明 x-stainless 大模型常见的概念 创建软连接的几种方式 基于node.js 的 web server 实现 对个人的警醒 jQuery对象与DOM对象之间的转换方法 【BUG】浏览器控制台提示:net::ERR_INVALID_CHUNKED_ENCODING 200 (OK) 的解决思路 实用浏览器脚本 关于Lambda表达式(箭头函数)的get属性访问器和常规的get属性访问器的差异 转换字符串为二进制编码字符串
docker 容器调试技巧
DHclly · 2024-07-23 · via 博客园 - DHclly

有时候docker容器可能因为映射不对,或者内部文件错误等等,会出现一启动就挂掉的情况,这种往往就是容器启动入口的程序有问题,但是因为一启动就挂,有时候日志啥的都看不到。这时候就可以通过 command 指令去覆盖掉默认Dockerfile 里面的 CMD 定义的入口(EntryPoint 定义的也类似)。

覆盖方式有两种

一种是 command: ["sleep","infinity"] 让主线程无限休眠,那么程序也就不会停止,那么docker 容器也就不会停掉。这样就可以通过 docker exec -it xxx bash 进入容器查看了。

另一个命令是 command: ["tail","-f","/dev/null"] 作用也是同理。

但是如果是用 docker swarm 或者 k8s 部署的调试的时候要注意, 因为这时候会有容器健康检测重启策略,用了上述命令,因为覆盖了默认的程序启动入口,那么健康检测逻辑就会失败,容器处于unhealthy 状态,然后就触发重启策略。

所以记得注释掉相关配置,如下示例:

version: "3.5"

services:
    nginx:
        hostname: nginx
        image: nginx
        ports:
            - target: 80
              published: 80
              mode: host
        deploy:
            mode: global
            # restart_policy:
            #     condition: on-failure
        networks:
            - overlay
        # 加此命令进行调试容器的时候,不要开启 healthcheck 和 restart_policy 策略,
        # 否则容器处于 unhealthy 状态,会不断重启
        command: ["sleep","infinity"]
        # healthcheck:
        #     test: bash /opt/nginx/check.sh
        #     interval: 20s
        #     timeout: 10s
        #     retries: 3
        logging:
            driver: "json-file"
            options:
                max-size: "2000k"
                max-file: "10"