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

整理完毕,完结撒花~ 🌻

相关推荐
天天爱吃肉821820 分钟前
行业笔记|高压连接器瞬态接触退化通用检测方法论
人工智能·笔记·python·功能测试·学习·汽车
Hhy_110721 分钟前
【从零开始学数据结构 ⑥】:二叉树之堆——打破规则的优先队列
c语言·开发语言·数据结构·学习·visual studio
weixin_4316004429 分钟前
为什么 Agent REPL 要上 Ink:好处、用法与内部设计
前端·学习·ai·agent·ai编程
wangjing_05221 小时前
通过CentOS 7虚拟机的Docker服务部署Node-RED及气象数据显示界面搭建完整教程
linux·docker·centos
wangjialelele1 小时前
Spring Cloud 全体系学习笔记(REST、Nacos、Feign、Gateway)
java·spring boot·笔记·学习·spring·spring cloud·gateway
qeen871 小时前
【数据结构】搜索二叉树的介绍与算法原理解析及实现
数据结构·c++·学习·算法·模板
重庆小透明1 小时前
agent开发学习【第一篇】
学习
风曦Kisaki2 小时前
# Kubernetes(K8s)笔记Day13 :工作负载资源概述与 Job (CronJob)控制器
linux·笔记·云原生·容器·kubernetes
Patrick在香港10 小时前
Python Docker镜像从1.2GB到89MB:多阶段构建的完整优化实录
java·python·docker·信息可视化·容器·数据分析·ai编程
星辰即远方13 小时前
计算器仿写总结
学习·ui·ios·cocoa·xcode