基于centos7.9容器编排Jumpserver堡垒机

Jum

    • 基础环境
    • 容器化部署MySQL
    • 容器化部署Redis
    • 容器化部署Nginx
    • 容器化部署Koko
    • 容器化部署Guacamole
    • 容器化部署Core
    • 编排compose文件

基础环境

基于centos7.9容器化部署jumpserver

tar -xf JumpServer.tar.gz

导入centos7.9 docker镜像

docker load -i images/centos_7.9.2009.tar

容器化部署MySQL

[root@k8s-master-node1 JumpServer]# pwd
/root/JumpServer
vi local.repo 
[jumpserver]
name=jumpserver
baseurl=file:///opt/jumpserverrepo
enabled=1
gpgcheck=0

数据库初始化脚本

vi mysql_init.sh 
#!/bin/bash
sed -i "10i port=3306" /etc/my.cnf
mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql
mysqld --daemonize --user=mysql
sleep 5s
mysql -uroot -e "create database root default charset 'utf8' collate 'utf8_bin';grant all on root.* to 'root'@'%' identified by '000000';flush privileges;"
mysql --version
tail -f /var/log/mysqld.log
vi Dockerfile-mysql 
FROM centos:7.9.2009
MAINTAINER Chinaskills
WORKDIR /opt
ARG Version=v2.5.3
ENV Version=${Version} \LANG=en_US.utf8ADD jumpserverrepo.tar.gz .
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
RUN set -ex \&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& yum install -y mysql-community-server \&& yum clean allCOPY mysql_init.sh .
RUN chmod 755 ./mysql_init.shCMD ["./mysql_init.sh"]
docker build -t jms_mysql:v1.0 -f Dockerfile-mysql .

容器化部署Redis

编写Redis初始化脚本

vi redis_init.sh 
#!/bin/bashsed -i "/requirepass/c requirepass 8URXPL2x3HZMi7xoGTdk3Upj" /etc/redis.confredis-server /etc/redis.conf
vi Dockerfile-redis 
FROM centos:7.9.2009
WORKDIR /opt
ARG Version=v2.5.3
ENV Version=${Version} \LANG=en_US.utf8
ADD jumpserverrepo.tar.gz .
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
RUN set -ex \&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "net.core.somaxconn = 1024" >> /etc/sysctl.conf \&& echo "vm.overcommit_memory = 1" >> /etc/sysctl.conf \&& yum install -y redis \&& sed -i "s/protected-mode yes/protected-mode no/g" /etc/redis.conf \&& sed -i "s/bind 127.0.0.1/bind 0.0.0.0/g" /etc/redis.conf \&& sed -i "561i maxmemory-policy allkeys-lru" /etc/redis.conf \&& yum clean allCOPY redis_init.sh .
RUN chmod 755 ./redis_init.sh
CMD ["./redis_init.sh"]
docker build -t jms_redis:v1.0 -f Dockerfile-redis  .

容器化部署Nginx

vi Dockerfile-nginx 
FROM centos:7.9.2009
WORKDIR /opt
ARG Version=v2.5.3
ENV Version=${Version} \LANG=en_US.utf8
ADD jumpserverrepo.tar.gz .
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
ADD nginx/lina-v2.5.3.tar.gz .
ADD nginx/luna-v2.5.3.tar.gz .
RUN set -ex \&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& yum install -y nginx \&& echo > /etc/nginx/conf.d/default.conf \&& mv luna-v2.5.3 luna \&& mv lina-v2.5.3 lina \&& rm -rf /opt/*.tar.gz \&& yum clean all
COPY nginx/nginx.conf /etc/nginx/
CMD ["nginx", "-g", "daemon off;"]
docker build -t jms_nginx:v1.0 -f Dockerfile-nginx  .

容器化部署Koko

vi koko_init.sh 
#!/bin/bash
sleep 5s
while [ "$(curl -I -m 10 -L -k -o /dev/null -s -w %{http_code} ${CORE_HOST}/api/health/)" != "200" ]; doecho "wait for jms_core ready"sleep 2
done
export LOG_LEVEL=ERROR
cd /opt/koko
./koko
vi Dockerfile-koko 
FROM centos:7.9.2009
WORKDIR /opt
ARG Version=v2.5.3
ENV Version=${Version} \LANG=en_US.utf8ADD koko/kubectl.tar.gz .
ADD koko/koko-v2.5.3-linux-amd64.tar.gz .
RUN mkdir /opt/kubectl-aliases/
ADD koko/kubectl_aliases.tar.gz /opt/kubectl-aliases/
ADD jumpserverrepo.tar.gz .
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/RUN set -ex \&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& yum install -y mysql-community-client bash-completion \&& mv koko-${Version}-linux-amd64 koko \&& chown -R root:root koko \&& mv /opt/koko/kubectl /usr/local/bin/ \&& chmod 755 ./kubectl \&& chown root:root ./kubectl \&& mv kubectl /usr/local/bin/rawkubectl \&& chown -R root:root /opt/kubectl-aliases/ \&& chmod 755 /opt/koko/init-kubectl.sh \&& rm -rf /opt/*.tar.gz \&& yum clean all 
COPY koko_init.sh .
RUN chmod 755 ./koko_init.sh
CMD [ "./koko_init.sh" ]
docker build -t jms_koko:v1.0 -f Dockerfile-koko  .

容器化部署Guacamole

编写Guacamole初始化脚本

vi guacamole_init.sh 
#!/bin/bashexport JUMPSERVER_KEY_DIR=${JUMPSERVER_KEY_DIR:-/config/guacamole/data/keys}
export GUACAMOLE_HOME=${GUACAMOLE_HOME:-/config/guacamole}
export GUACAMOLE_LOG_LEVEL=${GUACAMOLE_LOG_LEVEL:-ERROR}
export JUMPSERVER_ENABLE_DRIVE=${JUMPSERVER_ENABLE_DRIVE:-true}
export JUMPSERVER_RECORD_PATH=${JUMPSERVER_RECORD_PATH:-/config/guacamole/data/record}
export JUMPSERVER_DRIVE_PATH=${JUMPSERVER_DRIVE_PATH:-/config/guacamole/data/drive}
export JUMPSERVER_CLEAR_DRIVE_SESSION=${JUMPSERVER_CLEAR_DRIVE_SESSION:-true}
export JUMPSERVER_CLEAR_DRIVE_SCHEDULE=${JUMPSERVER_CLEAR_DRIVE_SCHEDULE:-24}rm -rf /config/tomcat9/logs/*
sleep 5s
while [ "$(curl -I -m 10 -L -k -o /dev/null -s -w %{http_code} ${JUMPSERVER_SERVER}/api/health/)" != "200" ]
doecho "Waiting for jms_core to be ready..."sleep 2
done# 启动 guacd 和 Tomcat
/etc/init.d/guacd start
cd /config/tomcat9/bin && ./startup.sh
echo "" > /config/guacamole/data/log/info.log
tail -f /config/guacamole/data/log/info.log
vi Dockerfile-guacamole 
FROM centos:7.9.2009
WORKDIR /opt
ARG Version=v2.5.3
ENV Version=${Version} \LANG=en_US.utf8ADD guacamole/apache-tomcat-7.0.33.tar.gz /config
COPY guacamole/ssh-forward.tar.gz /config
COPY guacamole/guacamole-client-v2.5.3.tar.gz /config
COPY guacamole/guacamole-server-1.5.0.tar.gz /config
COPY guacamole/docker-guacamole-v2.5.3.tar.gz /config
ADD jumpserverrepo.tar.gz .
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
RUN set -ex \&& yum clean all \&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& yum install -y make gcc java-1.8.0-openjdk \&& yum install -y cairo-devel libjpeg-turbo-devel libpng-devel libtool uuid-devel \&& yum install -y ffmpeg-devel freerdp-devel pango-devel libssh2-devel libtelnet-devel libvncserver-devel libwebsockets-devel pulseaudio-libs-devel openssl-devel libvorbis-devel libwebp-devel \&& mkdir -p /config/guacamole/lib /config/guacamole/extensions /config/guacamole/data/log/ /config/guacamole/data/record /config/guacamole/data/drive \&& cd /config \&& mv apache-tomcat-7.0.33 tomcat9 \&& rm -rf tomcat9/webapps/* \&& sed -i 's/# export/export/g' /root/.bashrc \&& sed -i 's/# alias l/alias l/g' /root/.bashrc \&& echo "java.util.logging.ConsoleHandler.encoding = UTF-8" >> /config/tomcat9/conf/logging.properties \&& mkdir /config/docker-guacamole \&& tar -xf docker-guacamole-${Version}.tar.gz -C /config/docker-guacamole --strip-components 1 \&& rm -rf docker-guacamole-${Version}.tar.gz \&& chown -R root:root /config/docker-guacamole \&& tar -xf guacamole-server-1.5.0.tar.gz -C /config/docker-guacamole \&& cd /config/docker-guacamole \&& cd guacamole-server-1.5.0 \&& ./configure --with-init-dir=/etc/init.d \&& make \&& make install \&& ldconfig \&& cd /config \&& tar -xf ssh-forward.tar.gz -C /bin/ \&& chmod 755 /bin/ssh-forward \&& tar -xf guacamole-client-${Version}.tar.gz \&& cp guacamole-client-${Version}/guacamole-*.war /config/tomcat9/webapps/ROOT.war \&& cp guacamole-client-${Version}/guacamole-*.jar /config/guacamole/extensions/ \&& cd /config \&& mv /config/docker-guacamole/guacamole.properties /config/guacamole/ \&& yum -y remove libwinpr \&& rm -rf /config/docker-guacamole \&& yum clean all 
COPY guacamole_init.sh .
RUN chmod 755 ./guacamole_init.sh
CMD ["./guacamole_init.sh"]
docker build -t jms_guacamole:v1.0 -f Dockerfile-guacamole .

容器化部署Core

vi core_init.sh 
#!/bin/bash
sleep 5s
while ! nc -z mysql 3306;
doecho "wait for jms_mysql ready"sleep 2s
done
while ! nc -z redis 6379;
doecho "wait for jms_redis ready"sleep 2s
done
# 如果配置文件不存在,则创建一个空的配置文件
[ ! -f "jumpserver/config.yml" ] && echo > jumpserver/config.yml
export LOG_LEVEL=ERROR
export WINDOWS_SKIP_ALL_MANUAL_PASSWORD=True
source /opt/py3/bin/activate
cd /opt/jumpserver && ./jms start
vi Dockerfile-core 
FROM centos:7.9.2009
ARG Version=v2.5.3
ENV Version=${Version} \LANG=en_US.utf8
WORKDIR /opt
ADD core/packages.tar.gz .
ADD jumpserverrepo.tar.gz .
RUN rm -rf /etc/yum.repos.d/*
COPY local.repo /etc/yum.repos.d/
ADD core/jumpserver-v2.5.3.tar.gz .
RUN set -ex \&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& yum install -y gcc nc \&& yum install -y python36 python36-devel \&& mv jumpserver-${Version} jumpserver \&& chown -R root:root jumpserver \&& yum install -y $(cat /opt/jumpserver/requirements/rpm_requirements.txt) \&& python3.6 -m venv /opt/py3 \&& source /opt/py3/bin/activate \&& pip3 install --no-index --find-links=/opt/packages/ -r /opt/jumpserver/requirements/requirements.txt \&& yum clean all \&& rm -rf /opt/*.tar.gz \&& rm -rf /var/cache/yum* \&& rm -rf ~/.cache/pip
COPY core_init.sh .
RUN chmod 755 ./core_init.sh
CMD ["./core_init.sh"]
docker build -t jms_core:v1.0 -f Dockerfile-core .

编排compose文件

[root@k8s-master-node1 JumpServer]# docker-compose psName              Command          State                    Ports
---------------------------------------------------------------------------------------
jms_core        ./core_init.sh         Up
jms_guacamole   ./guacamole_init.sh    Up
jms_koko        ./koko_init.sh         Up      0.0.0.0:2222->2222/tcp,:::2222->2222/tcp
jms_mysql       ./mysql_init.sh        Up
jms_nginx       nginx -g daemon off;   Up      0.0.0.0:81->80/tcp,:::81->80/tcp
jms_redis       ./redis_init.sh        Up

界面访问:IP:81 (admin/admin)

在这里插入图片描述

重置密码后登录

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/62715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5G学习笔记之PRACH

即使是阴天,也要记得出门晒太阳哦 目录 1. 概述 2. PRACH Preamble 3. PRACH Preamble 类型 3.1 长前导码 3.2 短前导码 3.3 前导码格式与小区覆盖 4. PRACH时频资源 4.1 小区所有可用PRACH资源 4.2 SSB和RACH的关系 4.3 PRACH时频资源配置 1. 概述 随机接入…

14 - Java 面向对象(中级)

包(package) 声明 java的包,类似电脑系统中的文件夹,包里存放的是类文件。 当类文件很多的时候,通常会采用多个包进行存放管理,这种方式称为分包管理。 在项目中,我们将相同功能的类放到一个…

「Mac畅玩鸿蒙与硬件34」UI互动应用篇11 - 颜色选择器

本篇将带你实现一个颜色选择器应用。用户可以从预设颜色中选择,或者通过输入颜色代码自定义颜色来动态更改界面背景。该应用展示了如何结合用户输入、状态管理和界面动态更新的功能。 关键词 UI互动应用颜色选择器状态管理用户输入界面动态更新 一、功能说明 颜色…

【Maven】依赖冲突如何解决?

准备工作 1、创建一个空工程 maven_dependency_conflict_demo,在 maven_dependency_conflict_demo 创建不同的 Maven 工程模块,用于演示本文的一些点。 什么是依赖冲突? 当引入同一个依赖的多个不同版本时,就会发生依赖冲突。…

【Vue3】从零开始创建一个VUE项目

【Vue3】从零开始创建一个VUE项目 手动创建VUE项目附录 package.json文件报错处理: Failed to get response from https://registry.npmjs.org/vue-cli-version-marker 相关链接: 【VUE3】【Naive UI】<NCard> 标签 【VUE3】【Naive UI】&…

Pytorch-GPU版本离线安装

最近在复现一项深度学习的工作,发现自己的pytorch是装的cpu版的(好像当时是直接加清华源,默认是cpu版本)。从官网在线下载速度太慢,还时不时断开连接,我们可以配置conda的清华源去这个问题,但是考虑到是在用…

.NET周刊【11月第4期 2024-11-24】

国内文章 C# 入门深度学习:万字长文讲解微积分和梯度下降 https://www.cnblogs.com/whuanle/p/18551532 这篇文章主要介绍了使用 C# 进行深度学习的方法,特别是微积分在此领域的应用。作者简要讲解了极限、导数等基本概念,并展示了如何在 …

How to monitor Spring Boot apps with the AppDynamics Java Agent

本文介绍如何使用 AppDynamics Java 代理监视 Azure Spring Apps 中的 Spring Boot 应用程序。 使用 AppDynamics Java 代理可以: 监视应用程序使用环境变量配置 AppDynamics Java 代理 在 AppDynamics 仪表板中检查所有监视数据 How to monitor Spring Boot app…

使用ECharts创建带百分比标注的环形图

在数据可视化领域,环形图是一种非常有效的图表类型,它能够清晰地展示各部分与整体的关系。今天,我们将通过ECharts来创建一个带百分比标注的环形图,并详细解释如何实现这一效果。 1. 数据准备 首先,我们定义了一些基础…

基于LSTM的文本多分类任务

概述: LSTM(Long Short-Term Memory,长短时记忆)模型是一种特殊的循环神经网络(RNN)架构,由Hochreiter和Schmidhuber于1997年提出。LSTM被设计来解决标准RNN在处理序列数据时遇到的长期依赖问题…

frp软件实现网络穿透

1. 名词 1.1. 网络穿透 网络穿透是一种技术,用于解决内网设备或服务无法直接被外部网络访问的问题。通常,内网设备位于路由器后面,并没有公网 IP 地址,因此外部用户不能直接连接到这些设备。网络穿透通过一些特定的技术手段&…

leetcode3250. 单调数组对的数目 I,仅需1s

题目: https://leetcode.cn/problems/find-the-count-of-monotonic-pairs-i/description/ 不为别的,只是记录下这个超过100%,而且比原先最快的快了一个量级 不知道咋分析,反正得出结论就是,变大不变,变小…

使用docker-compose部署搜索引擎ElasticSearch6.8.10

背景 Elasticsearch 是一个开源的分布式搜索和分析引擎,基于 Apache Lucene 构建。它被广泛用于实时数据搜索、日志分析、全文检索等应用场景。 Elasticsearch 支持高效的全文搜索,并提供了强大的聚合功能,可以处理大规模的数据集并进行快速…

Zabbix 模板翻译自动化教程

在企业 IT 运维管理中,Zabbix 作为一款强大的开源监控平台被广泛应用。而 Zabbix 模板作为监控配置的重要组成部分,用来定义监控项、触发器、图形等。随着国际化的需求增加,Zabbix 模板的翻译工作变得日益重要,特别是在需要为不同…

Springboot小知识(1):启动类与配置

一、启动类(引导类) 在通常情况下,你创建的Spring应用项目都会为你自动生成一个启动类,它是这个应用的起点。 在Spring Boot中,引导类(也称为启动类,通常是main方法所在的类)是整个…

数据集-目标检测系列- 海边漫步锻炼人检测数据集 person >> DataBall

数据集-目标检测系列- 海边漫步锻炼人检测数据集 person >> DataBall DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球…

NLP信息抽取大总结:三大任务(带Prompt模板)

信息抽取大总结 1.NLP的信息抽取的本质?2.信息抽取三大任务?3.开放域VS限定域4.信息抽取三大范式?范式一:基于自定义规则抽取(2018年前)范式二:基于Bert下游任务建模抽取(2018年后&a…

手机中的核心SOC是什么?

大家好,我是山羊君Goat。 常常听说CPU,中央处理器等等的,它是一个电脑或单片机系统的核心,但是对于SOC可能相比于CPU了解的人没有那么广泛。 所以SOC是什么? SOC全称是System on Chip,就是片上系统&#…

网络--socket编程--基础

1、网络字节序 已知:内存中的很多数据都有大小端之分,在网络这,网络数据流也是有大小端之分的。 TCP/IP协议规定:网络数据流采用大端字节序(即低地址处放高位字节)。 因此,小端机器发送网络数据流之前,必须转为大端(一般的机器会自动转换): 在网络-本地字节序转换…

Transformers在计算机视觉领域中的应用【第1篇:ViT——Transformer杀入CV界之开山之作】

目录 1 模型结构2 模型的前向过程3 思考4 结论 论文: AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE 代码:https://github.com/google-research/vision_transformer Huggingface:https://github.com/huggingf…