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 进程所以自动退出了。

整理完毕,完结撒花~ 🌻

相关推荐
uyeonashi1 小时前
【QT系统相关】QT文件
开发语言·c++·qt·学习
刘大浪3 小时前
uniapp 小程序 学习(一)
学习·小程序·uni-app
hackchen3 小时前
NexusTerminal一款视频移动端的webSSH
docker·云原生·eureka·web-ssh
正儿八经的数字经4 小时前
人工智能100问☞第46问:AI是如何“学习”的?
人工智能·学习
xiaohanbao094 小时前
day54 python对抗生成网络
网络·python·深度学习·学习
霸王蟹6 小时前
前端项目Excel数据导出同时出现中英文表头错乱情况解决方案。
笔记·学习·typescript·excel·vue3·react·vite
想成为大佬的每一天6 小时前
Linux驱动学习day4
学习
AgilityBaby7 小时前
Untiy打包安卓踩坑
android·笔记·学习·unity·游戏引擎
vijaycc7 小时前
python学习打卡day52
学习
꒰ঌ小武໒꒱8 小时前
DeepSeek 引领前端开发变革:AI 助力学习与工作新路径
人工智能·学习·ai编程