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

整理完毕,完结撒花~ 🌻

相关推荐
张铁铁是个小胖子2 小时前
微服务学习
java·学习·微服务
梁萌3 小时前
Linux安装Docker
linux·运维·docker·helloworld·容器化部署
翱翔-蓝天3 小时前
在 CentOS 系统上安装 ClickHouse
运维·docker·容器
AITIME论道3 小时前
论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式
人工智能·深度学习·学习·机器学习·语言模型
SRExianxian4 小时前
kubernetes存储架构之PV controller源码解读
容器·架构·kubernetes
青春男大5 小时前
java栈--数据结构
java·开发语言·数据结构·学习·eclipse
cdg==吃蛋糕6 小时前
docker代理配置
docker·容器·eureka
mashagua6 小时前
RPA系列-uipath 学习笔记3
笔记·学习·rpa
沐泽Mu7 小时前
嵌入式学习-QT-Day05
开发语言·c++·qt·学习
web135085886357 小时前
使用docker compose安装gitlab
docker·容器·gitlab