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
-
docker run -d: 这部分表示在后台运行容器。
-
--name es: 为容器指定一个名字,这里是 “es”。
-
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m": 设置 Java 虚拟机的参数,包括初始堆内存大小 (-Xms) 和最大堆内存大小 (-Xmx),这里都设置为 512MB。
-
-e "discovery.type=single-node": 设置 Elasticsearch 的节点发现机制为单节点,因为在这个配置中只有一个 Elasticsearch 实例。
-
-v es-data:/usr/share/elasticsearch/data: 将容器内 Elasticsearch 的数据目录挂载到宿主机的名为 “es-data” 的卷上,以便数据持久化。
-
-v es-plugins:/usr/share/elasticsearch/plugins: 类似上面,将容器内 Elasticsearch 的插件目录挂载到宿主机的名为 “es-plugins” 的卷上。
-
--privileged: 赋予容器一些特权,可能会有一些安全风险,需要慎用。
-
--network es-net: 将容器连接到名为 “es-net” 的网络上,目的是为了与其他容器进行通信。
-
-p 9200:9200 -p 9300:9300: 将容器内部的端口映射到宿主机上,这里分别是 Elasticsearch 的 HTTP REST API 端口(9200)和节点间通信的端口(9300)。
-
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中,正向代理指委托者是客户端,即被代理的对象是客户端 在这幅图中,由于左边内网中…...
【Go】面向萌新的Gin框架知识梳理学习笔记
目录 Gin框架简介 路由&路由组 1. 定义基本路由 2. 参数传递 3. 查询字符串参数 4. 路由组 5. 路由中间件 模板渲染 1. 加载模板 2. 定义模板 3. 渲染模板 4. 自定义模板函数 返回json 1. 导入 Gin 包 2. 创建 Gin 引擎 3. 定义路由和处理器函数 4. 运行服…...
baseDao增删改查.
这里写目录标题 1、baseDao增删改查介绍2、basDao类3、BasDao类的作用 1、baseDao增删改查介绍 (1)、增加Create)操作: 通过BaseDao的insert方法可以向数据库中插入一条新的记录。 该方法接受一个实体对象作参数,将该对象的属性映射到表的字…...
什么是面向对象【大白话Java面试题】
什么是面向对象 同样是解决一个问题,面向对象的角度是将问题抽象成对象的形式。通过分类的思维方式,将问题分成几个解决方案的对象。给每个对象赋值属性和方法,对每个对象的细节进行面向过程的思维,执行自己的方法来解决问题。 …...
PyTorch 教程-快速上手指南
文章目录 PyTorch Quickstart1.处理数据2.创建模型3.优化模型参数4.保存模型5.加载模型 PyTorch 基础入门1.Tensors1.1初始化张量1.2张量的属性1.3张量运算1.3.1张量的索引和切片1.3.2张量的连接1.3.3算术运算1.3.4单元素张量转变为Python数值 1.4Tensor与NumPy的桥接1.4.1Tens…...
【有芯职说】数字芯片BES工程师
一、 数字芯片BES工程师简介 今天来聊聊数字芯片BES工程师,其中BES是Back End Support的缩写,就是后端支持的意思。其实这个岗位是数字IC前端设计和数字IC后端设计之间的一座桥,完成从寄存器传输级设计到具体工艺的mapping和实现。这个岗位在…...
暴力破解pdf文档密码
首先安装pdfcrack工具包 apt install pdfcrack 默认密码字典存储在/usr/share/wordlists里,是gz文件,将它解压并copy到pdf目录 然后使用pdfcrack破解 密码在最后一行user-password的单引号里...
蓝桥杯刷题第四天
思路: 这道题很容易即可发现就是简单的暴力即可完成题目,我们只需满足所有数的和为偶数即可保证有满足条件的分法,同时也不需要存下每个输入的数据,只需要知道他是偶数还是奇数即可,因为我们只需要偶数个奇数搭配在一块…...
03-数据库的用户管理
一、创建新用户 mysql> create user xjzw10.0.0.% identified by 1; Query OK, 0 rows affected (0.01 sec) 二、查看当前数据库正在登录的用户 mysql> select user(); ---------------- | user() | ---------------- | rootlocalhost | ---------------- 1 row …...
每日一题 --- 三数之和[力扣][Go]
三数之和 题目:15. 三数之和 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k ,同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 **注意&#x…...
vue render 函数详解 (配参数详解)
vue render 函数详解 (配参数详解) 在 Vue 3 中,render 函数被用来代替 Vue 2 中的模板语法。 它接收一个 h 函数(或者是 createElement 函数的别名),并且返回一个虚拟 DOM。 render 函数的语法结构如下: render(h) …...
网站上的办公网站怎么做/全网营销培训
HTML5中提供了跨域加载数据的方法,让我们得以从JSONP或者Flash中介等各种绕行方案中解脱出来,更加顺畅地与服务器交流。另一方面,因为PHP是最好的语言……所以在它与Node.js之间,我选择前者作为后端语言开发内容服务。这篇文章记录…...
成品网站多少钱/网络营销策划需要包括哪些内容
中文汉化版,官方只有英文的。同时根据中国国情修改了部分验证规则。 这个插件支持大部分的浏览器,但由于有使用到了css3的阴影和圆角样式,所以在IE浏览器下无法看到圆角和阴影效果(万恶的IE)。 官方下载地址࿱…...
沧州市做网站价格/2023年的新闻十条
声明:本文引用吴恩达教授的DeepLearning课程内容。 滑动窗口法的卷积实现虽然效率更高,但仍然存在问题,不能输出最精准的边界框。因为滑动窗口法中,取这些离散的位置集合并不能完全匹配目标大小、位置。 其中一个能得到更精准边界…...
郑州营销型网站制作运营/企拓客app骗局
目录HBASE架构HBASEshellHBASE的JavaAPI操作HBASE连接HiveHBASE过滤器比较器比较运算符常见的比较器过滤器常见的过滤器过滤器举例过滤器举例的所有代码HBASE架构 HBASEshell 不做概述 HBASE的JavaAPI操作 hbase的api操作总结下来就是一句话,就是 需要对表做一些…...
php怎么做全网小视频网站/seo必备软件
实验步骤一 generate()方法,生成字符串,要求字符串为“haihai”或者“world!”,如下: getone()方法生成随机的四、六位数,这个方法只会生成一个结果。如果使用的是generate()方法,那么会列出所有的可能。随机生成一个时间实验步骤二 # -*- coding: utf-8 -*- #大小写ZH…...
独立站工具/百度入口提交
Pytorch框架学习记录2——TensorBoard的使用 Tensorboard在训练模型时很有用,可以看训练过程中loss的变化。之前用于Tensorflow框架,自Pytorch1.1之后,Pytorch也加了这个功能。 1. TensorBoard的使用 从torch.utils.tensorboard中导入Summ…...