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

Docket常见的软件部署1

1 安装MySQL

# 查看MySQL镜像
docker search mysql
# 拉起镜像
docker pull mysql:5.7
# 创建MySQL数据映射卷,防止数据不丢失
mkdir -p /hmoe/tem/docker/mysql/data/
# 启动镜像
docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -v /home/tem/docker/mysql/data/:/var/lib/mysql 镜像名称

-e 设置mysql 的登录密码。默认账号是root, -v是将容器中的数据映射本地,防止删除容器数据丢失, -p 外部3306端口映射到容器3306端口

mysl容器启动成功

mysql登录成功

2 mysql 主从读写分离

"""利用python脚本在docker上启动2个MySQL"""
import os
​
folderList = ['master', 'slave1']
localPath = os.path.dirname(os.path.abspath(__file__))
​
​
def create_config():for index, folder in enumerate(folderList):folder_path = os.path.join(localPath, folder)if not os.path.exists(folder_path):os.makedirs(folder_path)config_path = os.path.join(folder_path, 'conf')if not os.path.exists(config_path):os.makedirs(config_path)data_path = os.path.join(folder_path, 'data')if not os.path.exists(data_path):os.makedirs(data_path)config_data = """[mysqld]
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
datadir=/var/lib/mysql
log-error=/var/log/mysql/error.log
server-id={}
log-bin=/var/log/mysql/mysql-bin.log
expire_logs_days=30
max_binlog_size=256M
symbolic-links=0
# slow_query_log=ON
# slow_query_log_file=/var/log/mysql/slow.log
# long_query_time=1""".format(index+1)config_file = os.path.join(config_path, 'mysqld.cnf')with open(config_file, 'w') as f:f.write(config_data)
​
​
def run_mysql():for index, name in enumerate(folderList):cmd = "docker run -d -p {0}:3306 --name=mysql_{1} " \"-v {2}/{1}/conf:/etc/mysql/mysql.conf.d " \"-v {2}/{1}/data:/var/lib/mysql " \"-e MYSQL_ROOT_PASSWORD=123456 mysql:5.6".format(4306+index, name, localPath)os.system(cmd)# print(cmd)
​
​
if __name__ == '__main__':create_config()run_mysql()
# 先拉起mysql的镜像
docker pull mysql:5.7
# 在将上面的脚本复制到test.py的文件中, 执行脚本
python3 test.py

#master, 进入容器中
docker exec -ti mysql_master bash
mysql -u root -p
grant replication slave on *.* to 'slave'@'%' identified by 'iamslave';
flush privileges;
show master status; #显示master上面的状态
​
#slave1
docker exec -ti mysql_slave1 bash
mysql -u root -p
reset slave;
change master to master_host='192.168.1.13', master_port=4306, master_user='slave', master_password='iamslave', master_log_file='mysql-bin.000003', master_log_pos=590;
start slave; 
# master_host 为master的IP, master_port为master的端口,master_user为通信用户名,master_password为密码,master_log_file为master的bin日志,master_log_pos为master的log_pos
show slave status \G #查看状态如果Slave_IO_Running: Yes Slave_SQL_Running: Yes 则表示开启成功

3 安装ES+kibana

# 安装ES
# 创建网络ES和kibana通信
docker network create es-net
mkdir -p /home/wuzhibin/docker/es/data
mkdir -p /home/wuzhibin/docker/es/plugins
# 启动容器
docker run -d --name es -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -e "discovery.type=single-node" -v /home/wuzhibin/docker/es/data:/usr/share/elasticsearch/data -v /home/wuzhibin/docker/es/plugins:/usr/share/elasticsearch/plugins --privileged --network es-net -p 9200:9200 -p 9300:9300 elasticsearch:7.12.1
#  如果启动报错,日志是映射没有权限的化, 在重新启动
chmod 777 -R /home/wuzhibin/docker/es
  1. docker run -d: 这部分表示在后台运行容器。

  2. --name es: 为容器指定一个名字,这里是 “es”。

  3. -e "ES_JAVA_OPTS=-Xms512m -Xmx512m": 设置 Java 虚拟机的参数,包括初始堆内存大小 (-Xms) 和最大堆内存大小 (-Xmx),这里都设置为 512MB。

  4. -e "discovery.type=single-node": 设置 Elasticsearch 的节点发现机制为单节点,因为在这个配置中只有一个 Elasticsearch 实例。

  5. -v es-data:/usr/share/elasticsearch/data: 将容器内 Elasticsearch 的数据目录挂载到宿主机的名为 “es-data” 的卷上,以便数据持久化。

  6. -v es-plugins:/usr/share/elasticsearch/plugins: 类似上面,将容器内 Elasticsearch 的插件目录挂载到宿主机的名为 “es-plugins” 的卷上。

  7. --privileged: 赋予容器一些特权,可能会有一些安全风险,需要慎用。

  8. --network es-net: 将容器连接到名为 “es-net” 的网络上,目的是为了与其他容器进行通信。

  9. -p 9200:9200 -p 9300:9300: 将容器内部的端口映射到宿主机上,这里分别是 Elasticsearch 的 HTTP REST API 端口(9200)和节点间通信的端口(9300)。

  10. elasticsearch:7.12.1: 指定要运行的 Docker 镜像的名称和版本号,这里是 Elasticsearch 7.12.1 版本。

访问IP:9200 验证是否启动成功

# 安装可视化工具kibana
# ELASTICSEARCH_HOSTS为上一个ES容器的ip
docker run -d --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.1.113:9200 --network=es-net -p 5601:5601  kibana:7.12.1
访问kibana地址ip:5601

4 安装jekins

#拉取jenkins镜像
docker pull jenkins/jenkins
# 查看镜像
docker images
# 创建保存容器数据的文件夹
mkdir -p /home/wuzhibin/docker/jenkin/data
#启动容器
docker run -u root -d -p 8000:8080  --name=jenkins -v /home/wuzhibin/docker/jenkins/data:/var/jenkins_home   jenkins/jenkins
# 查看容器状态
docker ps 
# 网页打开
ip:8000 
# 进入容器,获取第一次登录密码

ip:8000访问jenkins的网址,第一次需要获取管理员的密钥

# 进入容器
docker exec -ti jenkins  bash
# 获取管理员的密钥
cat /var/jenkins_home/secrets/initialAdminPassword
​
# jenkin设置中可以更换插件地址,下载插件更快
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json  # 更快
http://mirror.esuni.jp/jenkins/updates/update-center.json

5 安装rabbitmq

# 下载镜像
docker pull rabbitmq:management  
# 启动容器-e 设置账号为admin, 密码为admin, 这个镜像会直接安装rabbitmq+管理工具
docker run -di --hostname 0.0.0.0 --name myrabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 61613:61613 -p 1883:1883 rabbitmq:management 

ip:15672 进入管理页面,账号密码为上面设置的账户和密码

6 安装redis

# 下载镜像
docker pull redis   
# 启动redis 容器 appendonly yes 表示开启持久化
docker run --name my-redis -d  -p 6379:6379  -v /home/wuzhibin/docker/redis/data:/data  redis  redis-server /etc/redis/redis.conf --appendonly yes  

7 安装管理docker工具

# 拉起镜像
docker pull portainer/portainer
# 启动容器 privileged=True 设置特权模式,--restart=always 重启docker总是自启容器
docker  run --name=portainer -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=True portainer/portainer

IP:8088 进入设置密码之后,选择连接本地的docker环境

进入之后可以看到运行的容器。这个工具可以很方便的管理docker不需要不需要记那么多docker命令,直接上去点点点。

8 docker 安装gitlab

GitHub是一个最大的同性交友网站,但是受限于需要梯子才能流畅访问(国内访问很慢),所以能否自己搭建一个私人的代码托管平台呢。

GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。因此选择Git Lab来搭代码托管的私仓。

1. 启动镜像

# 拉起汉化版本的gitlab
docker pull twang2218/gitlab-ce-zh
# 启动镜像
docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --restart always --name gitlab -v /home/wuzhibin/docker/gitlab/etc:/etc/gitlab -v /home/wuzhibin/docker/gitlab/log:/var/log/gitlab -v /home/wuzhibin/docker/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh
​
​
-d                #后台运行,全称:detach
-p 8443:443      #将容器内部端口向外映射
-p 8090:80       #将容器内80端口映射至宿主机8090端口,这是访问gitlab的端口
-p 8022:22       #将容器内22端口映射至宿主机8022端口,这是访问ssh的端口
--restart always #容器自启动
--name gitlab    #设置容器名称为gitlab
-v               # 数据卷映射, 将容器中的日志数据和配置保到本地,数据持久化防止容器删除数据丢失
--privileged=true         # 获取所有的权限
# 查看容器是否正常启动成功
docker ps 

2. 修改配置文件

# 进入容器
docker exec -it gitlab bash
# 修改gitlab.rb文件的配置
vim /etc/gitlab/gitlab.rb

# 修改gitlab.yml的配置
vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
 

3. 重启gitlab服务

# 容器内重启
gitlab-ctl restart
# 退出容器
exit

3. GitLab是否能正常使用

IP:8089访问gitlab网站, 默认的账号为root,第一次进入需要修改密码, 进入可以正常使用

上一章:Docker中常见的命令行-CSDN博客

下一章:Docker常见软件部署2-CSDN博客

相关文章:

Docket常见的软件部署1

1 安装MySQL # 查看MySQL镜像 docker search mysql # 拉起镜像 docker pull mysql:5.7 # 创建MySQL数据映射卷,防止数据不丢失 mkdir -p /hmoe/tem/docker/mysql/data/ # 启动镜像 docker run -d --name mysql -e MYSQL_ROOT_PASSWORD123456 -p 3306:3306 -v /home…...

Qt源程序编译及错误问题解决

Error 5 while parsing C:/qt-everywhere-src-6.6.2/qt-build/qtdeclarative/src/qmlmodels/meta_types/qt6qmlmodels_release_metatypes.json: illegal value .json 文件为空文件0字节,加 “[]”,不要引号。可以解决这类错误。 Qt编译 Qt for Windows…...

作业练习(python)

第一题: cel eval(input()) fah 9 / 5 * cel 32 print("%.1f" % fah) 第二题: radius, length eval(input()) area radius * radius * 3.14159267 volume area * length print("%.2f" % area) print("%.2f" …...

Wireshark使用相关

1.wireshark如何查看RST包 tcp.flags.reset1 RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。发送RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包),直接就丢弃缓存区的包发送R…...

相机标定学习记录

相机标定是计算机视觉和机器视觉领域中的一项基本技术,它的主要目的是通过获取相机的内部参数(内参)和外部参数(外参),以及镜头畸变参数,建立起现实世界中的点与相机成像平面上对应像素点之间准…...

CSS 滚动条样式修改

1、滚动条整体部分 使用 ::-webkit-scrollbar 注意:这个必须要加,不然修改的样式不生效 ::-webkit-scrollbar {width: 10px;//修改滚动条宽度 }2、滚动条中的滑块 使用 ::-webkit-scrollbar-thumb ::-webkit-scrollbar-thumb {border-radius: 8px;b…...

谈谈配置中心?

配置中心可以做集中式的服务配置管理,比如配置一些数据库连接的URL,一些共用的配置且可动态调整的参数。如果不采用集中式的管理,会导致修改起来特别麻烦,一个个的修改特别繁琐。 Nacos Config配置中心中采用的是客户端拉取数据&a…...

人工智能(pytorch)搭建模型25-基于pytorch搭建FPN特征金字塔网络的应用场景,模型结构介绍

大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型25-基于pytorch搭建FPN特征金字塔网络的应用场景,模型结构介绍。特征金字塔网络(FPN)是一种深度学习模型结构,主要应用于目标检测任务中&am…...

JRT业务开发起步

这是一段充满挑战与奋斗的旅程,自第一行Java代码的写下起,便历经重重险阻。从细微的代码行,逐步汇聚成实用的工具类方法;从工具类方法的积累,逐渐构建起功能强大的工具包;再从工具包的整合,最终…...

深度解析:国内主流音视频产品的核心功能与市场表现

前言 当前音视频开发领域呈现出多样化竞争态势,其中声网(Agora)、即构(ZEGO)等云通讯企业占据了市场的主导地位。随着技术的持续进步和用户需求的日益多样化,选择音视频服务提供商的标准也越来越个性化&am…...

红黑树介绍及插入操作的实现

🎉个人名片: 🐼作者简介:一名乐于分享在学习道路上收获的大二在校生 🙈个人主页🎉:GOTXX 🐼个人WeChat:ILXOXVJE 🐼本文由GOTXX原创,首发CSDN&…...

[linux初阶][vim-gcc-gdb] TwoCharter: gcc编译器

目录 一.Linux中gcc编译器的下载与安装 二.使用gcc编译器来翻译 C语言程序 ①.编写C语言代码 ②翻译C语言代码 a.预处理 b.编译 c.汇编 d.链接 ③.执行Main 二进制可执行程序(.exe文件) 三.总结 一.Linux中gcc编译器的下载与安装 使用yum命令(相当于手机上的应用…...

单例设计模式(2)

单例设计模式(2) 单例模式存在的问题 单例对 OOP 特性的支持不友好 oop的特性:封装、继承、多态、抽象;以Id生成器代码为例,如果未来某一天,我们希望针对不同的业务采用不同的 ID 生成算法。比如&#x…...

boost::asio 启用 io_uring(Linux 5.10)队列支持

欲启用 boost::asio 对于 io_uring 的支持,这需要以下几个先决条件; 1、boost 1.78 及以上发行版本 Revision History - 1.78.0 (boost.org) 2、Linux kernel 5.10 及以上发行版本 3、在预定义头文件(stdafx.h)、或编译器预定义…...

Android 自定义坐标曲线图(二)

Android 自定义坐标曲线图_android 自定义曲线图-CSDN博客 继上一篇文章,点击折线图上的点,显示提示信息进行修改,之前通过回调,调用外部方法,使用popupwindow或dialog来显示,但是这种方法对于弹框显示的位…...

每日OJ题_子序列dp⑧_力扣446. 等差数列划分 II - 子序列

目录 力扣446. 等差数列划分 II - 子序列 解析代码 力扣446. 等差数列划分 II - 子序列 446. 等差数列划分 II - 子序列 难度 困难 给你一个整数数组 nums ,返回 nums 中所有 等差子序列 的数目。 如果一个序列中 至少有三个元素 ,并且任意两个相邻…...

GOPROXY 代理设置

通常报错: 1.http: server gave HTTP response to HTTPS client 2.timeout 解决指令:(会话临时性),长久的可以在配置文件中配置 go env -w GOPROXYhttps://goproxy.cn,direct 长久的,在~/.bashrc文件中添加: expo…...

Redis面经

Redis面经 Redis缓存穿透、缓存击穿和缓存雪崩及解决方案概述缓存穿透详解及解决方案缓存击穿详解及解决方案缓存雪崩详解及解决方案 Redis持久化机制什么是数据持久化?Redis数据持久化概述RDB持久化的优缺点AOF持久化混合持久化 Redis缓存穿透、缓存击穿和缓存雪崩…...

【c++】类和对象(六)深入了解隐式类型转换

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好,本篇文章我们来到初始化列表,隐式类型转换以及explicit的内容 目录 1.初始化列表1.1构造函数体赋值1.2初始化列表1.2.1隐式类型转换与复制初始化 1.3e…...

什么是nginx正向代理和反向代理?

什么是代理? 代理(Proxy), 简单理解就是自己做不了的事情或实现不了的功能,委托别人去做。 什么是正向代理? 在nginx中,正向代理指委托者是客户端,即被代理的对象是客户端 在这幅图中,由于左边内网中…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包:import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序(自然排序和定制排序)Arrays.binarySearch()通过二分搜索法进行查找(前提:数组是…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

GitHub 趋势日报 (2025年06月08日)

📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

【Oracle】分区表

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

20个超级好用的 CSS 动画库

分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...