基于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的包,类似电脑系统中的文件夹,包里存放的是类文件。 当类文件很多的时候,通常会采用多个包进行存放管理,这种方式称为分包管理。 在项目中,我们将相同功能的类放到一个…

【MMKV】HarmonyOS中的优秀轻量化存储方式

MMKV 引言 在移动应用开发的世界里,数据存储和管理是至关重要的一环。随着技术的不断进步,开发者们对于高性能、轻量级、易用的数据存储解决方案的需求日益增长。MMKV(Memory Mapped Key-Value)正是这样一个开源的高性能key-val…

「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】&…

Subprocess 和 Multiprocessing 的区别与使用要点及进程关闭方法

Subprocess 和 Multiprocessing 的区别与使用要点及进程关闭方法 最近在使用这两个库比较多,所以就借此机会记录一下这两个库的使用方式 一、Subprocess 和 Multiprocessing 的区别 1. 功能目标不同 Subprocess:主要用于在 Python 程序中启动外部程序…

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. 数据准备 首先,我们定义了一些基础…

如何确保数据库和Redis数据的一致性

在Spring Boot项目中,保证数据库和Redis数据一致性是一个重要的问题,特别是在涉及缓存和数据库交互的场景中。以下是一些常用的策略和方法,以确保数据库和Redis数据的一致性: 1. 写操作同步 先更新数据库,再更新Redis…

Android opengl 绘制矩形,宽高相同,不能显示为正方形,是怎么回事

在Android上使用OpenGL绘制矩形(或尝试显示为正方形)时,如果结果显示为不是正方形,可能有几个原因。以下是一些常见的因素及解决方法: 视口(Viewport)设置不当: OpenGL的视口定义了…

基于LSTM的文本多分类任务

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

学习记录:js算法(一百零六):最长回文子串

文章目录 最长回文子串思路一 最长回文子串 给你一个字符串 s,找到 s 中最长的回文子串 示例 1: 输入:s "babad" 输出:"bab" 解释:"aba" 同样是符合题意的答案。示例 2: 输…

JWT介绍和结合springboot项目实践(登录、注销授权认证管理)

目录 一、JWT介绍(一)基本介绍(二)jwt有哪些库1、jjwt(Java JWT)2、nimbus - jwt - jwt - api 和 nimbus - jwt - jwt - impl3、spring - security - jwt(已弃用,但在旧项目中有参考…

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 模板的翻译工作变得日益重要,特别是在需要为不同…