• 把宿主的程序和依赖动态库挂载进docker容器,解决一个诡异BUG

    今天在一台 Redhat 7 服务器上启动一个 Kafka 3.7.2 容器,遇到一个很诡异的报错。经过排查发现,问题是由容器里新版 bash 引起的,应该是新 bash 或动态库可能跟老内核不兼容。

    最终,我们把宿主上的旧版 bash 及其依赖动态库挂载到容器上解决问题。整个问题排查过程和解决思路挺有意思的,涉及不少基础知识,分享给大家。

    报错背景

    Kafka 容器启动方式平白无奇:

    1
    
    docker run --rm -it apache/kafka:3.7.2
    
    阅读全文
  • 前端工程师眼中的 Docker

    笔者最近在整理 Node.js 操作各数据库的方法,却不料遇到一个很棘手的问题:很多数据库,都需要同时下载 Server 端和 Client 端,并进行相应的配置,着实是麻烦。那有没有方法可以省去这些步骤呢?

    答案肯定是有的,这就是今天要介绍的主题 —— Docker

    Docker 概述

    Docker 是什么呢?

    通俗地讲,当我们部署代码到生产服务器时,第一次都需要先进行环境配置,比如你有 100 台机器,你就要手动配置 100 台服务器的环境,这样难保不会出错。 Docker 则将软件服务制作成标准化的模板,也就是镜像,从而实现快捷部署。每次部署新机器,只需要拉取相关镜像,即可一键完成。

    阅读全文
  • Docker化部署Go程序

    Go 语言应用部署 不需要依赖 ,非常简便,这是一个不小的优势。

    Go 语言官方镜像非常大,超过 500MB 。镜像之所以如此庞大是因为它包含了构建 Go 程序所需的全部 工具链 。然而运行编译好的(静态)二进制程序,并不需要这些工具。

    本文介绍如何制作一个紧凑的 Docker 镜像用于部署 Go 应用,大小控制在 10MB 以内。

    本文实验所有操作均在 macOS 下进行,在其他平台进行也是类似的。

    阅读全文