当前位置: 首页 > ops >正文

skywalking-agent-docker镜像

FROM centos:7.9.2009
USER root

# 定义 Arthas 目录环境变量
ENV ARTHAS_HOME=/opt/arthas

# 更改 YUM 源并清理缓存
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak && \
rm -rf /etc/yum.repos.d/* && \
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && \
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo && \
yum clean all && yum makecache fast && yum update -y && \
yum install -y \
gcc gcc-c++ kernel-devel yum-utils device-mapper-persistent-data lvm2 \
tcpdump vim git wget net-tools libpcap libpcap-devel automake make \
pam-devel openldap-devel cyrus-sasl-devel openssl-devel telnet rsync \
bzip2 iptables lsof curl su-exec expect net-tools \
gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel \
libpng-devel openssl-devel bison flex \
glibc-devel libstdc++ && \
yum clean all && rm -rf /var/cache/yum/*

# 设置时区
RUN rm -f /etc/localtime && \
ln -sv /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone && \
echo "TZ=Asia/Shanghai" >> /etc/profile

# 安装 JDK 17
COPY jdk-17.0.14_linux-x64_bin.rpm /home/
RUN rpm -ivh --nodeps /home/jdk-17.0.14_linux-x64_bin.rpm && \
rm -f /home/jdk-17.0.14_linux-x64_bin.rpm && \
echo "export JAVA_HOME=/usr/java/jdk-17" >> /etc/profile && \
echo "export CLASSPATH=.:\$JAVA_HOME/lib" >> /etc/profile && \
echo "export PATH=\$PATH:\$JAVA_HOME/bin" >> /etc/profile && \
source /etc/profile

COPY arthas-bin /opt/arthas/
ENV ARTHAS_HOME=/opt/arthas
# 赋予可执行权限
RUN chmod +x $ARTHAS_HOME/*

# 安装 Arthas(修正版本和链接)
#RUN mkdir -p $ARTHAS_HOME && wget -O $ARTHAS_HOME/arthas-boot.jar https://repo1.maven.org/maven2/com/aliyun/arthas/arthas-boot/3.7.8/arthas-boot-3.7.8.jar && echo "alias arthas='java -jar $ARTHAS_HOME/arthas-boot.jar'" >> /etc/profile

# 处理 SkyWalking Agent

# 处理 SkyWalking Agent(修复目录不存在问题)
RUN mkdir -p /usr/skywalking  # 提前创建上级目录
ADD apache-skywalking-java-agent-9.4.0.tgz /tmp/
# 验证解压后的目录名称,若正确则继续移动
RUN if [ -d "/tmp/skywalking-agent" ]; then \
mv /tmp/skywalking-agent /usr/skywalking/agent && \
ls /usr/skywalking/agent/ && \
mv /usr/skywalking/agent/optional-plugins/* /usr/skywalking/agent/plugins/ && \
mv /usr/skywalking/agent/optional-reporter-plugins/* /usr/skywalking/agent/plugins/ && \
rm -rf /tmp/*; \
else \
echo "Error: /tmp/skywalking-agent not found"; \
exit 1; \
fi


# 系统配置(最终修复 exit code:1 问题)
RUN set -ex && \
# 安装必要组件:SELinux 工具、iptables 基础命令
yum install -y selinux-policy-targeted policycoreutils iptables && \
# 修改 SELinux 配置文件为 disabled
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && \
# 优化 SELinux 状态判断语法(添加括号确保优先级)
if (sestatus 2>/dev/null || true) | grep -q "SELinux status:.*enabled"; then \
# 容错处理:即使 setenforce 失败(如 SELinux 已禁用),也不终止步骤
setenforce 0 || true; \
else \
echo "SELinux is already disabled, skipping setenforce"; \
fi && \
# 确保 iptables 命令存在后清理规则,容错执行失败
if [ -x "$(command -v iptables)" ]; then \
iptables -F && iptables -X || true; \
else \
echo "iptables command not found, skipping cleanup"; \
fi && \
# 清理 yum 缓存
yum clean all

# 环境变量
ENV LANG=C.UTF-8 \
TZ=Asia/Shanghai \
MYPATH=/ \
JAVA_HOME=/usr/java/jdk-17 \
PATH=$PATH:/usr/java/jdk-17/bin

# 处理入口脚本
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

WORKDIR $MYPATH

EXPOSE 22 8080 8888 8563 3568 6123 6122 6124 8081 443

MAINTAINER app

ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]

 

http://www.xdnf.cn/news/15024.html

相关文章:

  • C++11 std::move与std::move_backward深度解析
  • 数据分析框架和方法
  • 华为静态路由配置
  • mysql 可用性的保障机制:主讲主从复制机制
  • sqlplus表结构查询
  • CTFHub————Web前置技能[HTTP协议(302跳转、Cookie)]
  • 【数据分析】多数据集网络分析:探索健康与退休研究中的变量关系
  • IntelliJ IDEA 2025.1.3创建不了java8的项目
  • 洛谷 P1104 生日---排序
  • VS2022 C++ EasyX库 扫雷游戏项目开发:打造经典游戏的详细之旅
  • JavaScript基础篇——第五章 对象(最终篇)
  • whitt算法之特征向量的尺度
  • [数学基础] 矩阵的秩及其应用
  • K8S使用命令多集群管理配置
  • Java异步编程全解析:从基础到高阶实战
  • C#基础篇(09)结构体(struct)与类(class)的详细区别
  • 安卓设备信息查看器 - 源码编译
  • PiscTrace深蹲计数功能实现:基于 YOLO-Pose 和人体关键点分析
  • Unity Demo-3DFarm详解-其二
  • 【03】MFC入门到精通——MFC 添加控件 设置属性 按钮 文本框
  • EFK9.0.3 windows搭建
  • 供应链管理:定量分析中的无量纲化处理
  • jenkins+固定agent节点+maven+sonarqube+docker
  • Redis:分组与设备在 Redis 中缓存存储设计
  • 类与对象【下篇】-- 关于类的其它语法
  • Linux——I/O复用
  • Android API Level 到底是什么?和安卓什么关系?应用发布如何知道自己的版本?优雅草卓伊凡
  • 光伏无人机3D建模:毫秒级精度设计
  • Webpack、Vite配置技巧与CI/CD流程搭建全解析
  • 什么是公链?