Docker学习(二十五)构建 Arthas 基础镜像

目录

    • 一、简介
    • 二、构建基础镜像
      • [2.1 下载 Arthas](#2.1 下载 Arthas)
      • [2.2 编写 Dockerfile](#2.2 编写 Dockerfile)
      • [2.3 构建镜像](#2.3 构建镜像)
      • [2.4 创建容器](#2.4 创建容器)
      • [2.5 测试](#2.5 测试)

一、简介

Arthas 是一款由 阿里巴巴 开发的 线上监控诊断工具。通过全局视角实时查看应用负载、内存、GC、线程等信息,能在不修改代码的情况下,对业务问题进行诊断,包括:查看方法调用的输入参、异常,检测方法执行耗时,类加载信息等,大大提升线上问题排查效率。

在如今的开发运维过程中,容器化部署遍地开花,如何将 Arthas 工具构建到基础镜像中呢?


二、构建基础镜像

2.1 下载 Arthas

由于我们的生产环境一般都是不能访问公网的,所以这里我们采用离线的方式进行部署,先将 Arthas 的文件下载下来:

下载后文件如下所示:

压缩包内容如下所示:

2.2 编写 Dockerfile

创建一个目录 arthas-tool,创建 Dockerfile 文本文件,输入如下内容:

dockerfile 复制代码
# 基础镜像(大小:155MB)
FROM quay.io/centos/centos:stream9
# 配置JAVA的环境变量
ENV JAVA_DIR=/usr/local
ENV JAVA_HOME=$JAVA_DIR/jdk1.8.0_351
# 配置到PAHT中
ENV PATH=$PATH:$JAVA_HOME/bin
# 添加 JDK
ADD jdk-8u351-linux-x64.tar.gz $JAVA_DIR
# 添加 Arthas
ADD arthas-packaging-3.7.2-bin.zip /usr/local
# 安装、更新基础控件
RUN yum -q -y update && yum -q -y upgrade \
	&&  yum install -y tzdata vim less ncurses telnet wget zip unzip traceroute procps net-tools iproute tcpdump \
	&&  ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
	&&  yum clean all \
	&&  unzip -d /usr/local/arthas /usr/local/arthas-packaging-3.7.2-bin.zip && rm -f /usr/local/arthas-packaging-3.7.2-bin.zip \
	&&  echo "alias ls='ls --color'" >> ~/.bashrc \
	&&  echo "alias ll='ls -l'" >> ~/.bashrc \
	&&  echo "alias arthas='java -jar /usr/local/arthas/arthas-boot.jar'" >> ~/.bashrc

# 启动命令(因为是基础镜像的Dockerfile,这里轮询让容器可以访问即可)
ENTRYPOINT ["/bin/bash","-c","while true; do sleep 300; done;"]
# 暴露端口
EXPOSE 8888

注意:

2.3 构建镜像

将我们下载好的 Arthas 压缩包和 Dockerfile 放到同一目录下:

在该目录下执行如下命令即可构建镜像:

shell 复制代码
docker build -t acgkaka.cn:8080/myweb/arthas-tool:v1 .

我们可以使用如下命令查询镜像是否创建成功:

sh 复制代码
# Windows 平台
docker images | findstr arthas
# Linux 平台
docker images | grep arthas

可以看到镜像已经构建好了。

2.4 创建容器

镜像已经构建好了,我们可以使用如下命令根据镜像创建容器:

sh 复制代码
docker run -d --name=arthas-tool acgkaka.cn:8080/myweb/arthas-tool:v1

我们可以使用如下命令查看容器是否正常启动:

sh 复制代码
docker ps

可以看到,容器已经正常启动了。

2.5 测试

容器已经创建好并且正常启动了,下面我们进入容器中执行一下 arthas 命令测试下。(arthas 命令是之前在 Dockerfile 中设置好的别名)

sh 复制代码
# 进入容器
docker exec -it arthas-tool bash
# 测试命令
arthas

我们可以看到,arthas 通过命令已经成功启动了,只不过镜像中没有 java 进程所以自动退出了。

整理完毕,完结撒花~ 🌻

相关推荐
浩风祭月几秒前
如何用 AI 工具 10 倍速学习新技术栈:从零到生产级项目实战
人工智能·学习·chatgpt
库奇噜啦呼7 分钟前
【iOS】源码学习-KVC与KVO
学习·ios·cocoa
文青小兵9 分钟前
Linux云计算——docker 告警(六)
linux·运维·docker·云计算·prometheus
Upsy-Daisy15 分钟前
IOTA 学习笔记(七):IOTA CLI 基础操作
笔记·学习
老杨聊技术25 分钟前
CentOS 7 安装 Docker 完整版教程
linux·docker·centos
一楼的猫34 分钟前
茄子小说写作助手品牌升级公告:新域名,新征程,与您同行
人工智能·学习·机器学习·写作·ai写作
wengqidaifeng34 分钟前
5. OpenClaw 从学习到落地:企业路线图、个人学习路径与项目复盘
学习·ai·openclaw
段一凡-华北理工大学35 分钟前
工业领域的Hadoop架构学习~系列文章10:数据序列化与压缩
大数据·人工智能·hadoop·分布式·学习·工业智能体·高炉炼铁智能化
终端行者35 分钟前
企业级 Jenkins Pipeline 实战Docker构建前端+Ansible发布
前端·ci/cd·docker·jenkins
爱喝水的鱼丶40 分钟前
SAP-ABAP:SAP 简单报表输出开发系列(共6篇)第二篇:SAP 报表数据筛选优化:选择屏幕自定义与查询效率提升
开发语言·数据库·学习·性能优化·sap·abap