Linux使用docker集群部署

目录

一,环境准备

1.1.安装docker

1.2.配置镜像就加速器

二,docker部署

2.1.创建网络

​编辑

2.2.安装redis

2.3.安装MySQL

 2.4.安装JDK,TomCat及部署后台项目

2.5.安装Nginx及配置静态资源


一,环境准备

1.1.安装docker

安装yum-util, 该包提供yum-config-manager功能

yum install -y yum-utils

设置docker源(阿里仓库)

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 安装docker, yum install docker-ce-版本号

yum install docker-ce-18.06.3.ce

查看docker版本号,验证

docker version

启动docker

systemctl start docker

设置开机启动

systemctl enable docker
1.2.配置镜像就加速器

默认的情况下docker会从docker hub中查找或下载镜像,在国内会比较慢。可以使用阿里的镜像加速器来提高速度。
具体操作步骤如下:

首先需要有一个淘宝或支付宝的账号,登录阿里云阿里云-计算,为了无法计算的价值 (aliyun.com)icon-default.png?t=N7T8https://www.aliyun.com/

查看阿里镜像加速器地址

cat /etc/docker/daemon.json

这样就配置好了

二,docker部署

2.1.创建网络
# 搭建net-ry局域网,用于部署若依项目
docker network create net-ry --subnet=172.68.0.0/16 --gateway=172.68.0.1

【注】

                关闭宿主机的防火墙,否者容器内部的MySQL、redis等服务,外部访问不了;开放端口3306、6379端口也没用

查看防火墙状态

systemctl status firewalld

关闭防火墙

systemctl stop firewalld

关闭防火墙后必须重启docker,否者出现如下错误

docker: Error response from daemon: driver failed programming external connectivity on endpoint ruoyi-admin (399a34630e6ef8e4ed7cf20d46b9654c8d535d0fe44ceadebf8bd605d3da35b8):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8080 -j DNAT --to-destination 172.68.0.4:8080 ! -i br-c34635070c6f: iptables: No chain/target/match by that name.

重启docker

systemctl restart docker
2.2.安装redis
# 创建目录
mkdir -p /data/redis/{conf,data}

redis.conf修改

1. 允许redis外地连接

    #bind 127.0.0.1改成为 bind 0.0.0.0

2. 开启redis验证(可选)

    requirepass sasa

3. 开启redis数据持久化(可选)

    appendonly yes 

上传redis.conf文件到/data/redis/conf文件夹中

启动容器服务

docker run -itd --name zking-redis -p 6379:6379 \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
--privileged=true --restart=always \
--network net-ry redis \
redis-server /etc/redis/redis.conf

【解释】

  • -itd:以交互模式运行容器,并分配伪终端,然后将其与终端分离。
  • --name zking-redis:将容器命名为"zking-redis"。
  • -p 6379:6379:将主机的6379端口映射到容器中的6379端口,用于Redis。
  • -v /data/redis/conf/redis.conf:/etc/redis/redis.conf:将主机上的Redis配置文件挂载到容器中。
  • -v /data/redis/data:/data:将数据卷从主机挂载到容器中。
  • --privileged=true:赋予容器扩展权限。
  • --restart=always:如果容器停止,则自动重新启动。
  • --network net-ry:将容器连接到名为"net-ry"的特定Docker网络。
  • redis:指定用于容器的Docker镜像。redis-server /etc/redis/redis.conf:使用提供的配置文件运行Redis服务器。

这样redis就准备好了

测试

进入刚刚创建好的redis容器

docker exec -it a2efbc3 /bin/bash

使用whereis查找redis-cli的位置

进入该目录

cd  /usr/local/bin

查看该目录

ls

执行redis-cli进入redis

执行ping如果是PONG就表示服务正常

到这里redis就算是安装好了

2.3.安装MySQL
# 创建文件夹
mkdir -p /data/mysql/{conf,data}

上传my.cnf文件到/data/mysql/conf文件夹中

启动容器服务

docker run -d --name zking-mysql --network net-ry  \
-v /data/mysql/conf/my.cnf:/etc/my.cnf \
-v /data/mysql/data:/var/lib/mysql \
--privileged=true --restart=always \
-e MYSQL_ROOT_PASSWORD=sasa -p 3306:3306 \
mysql/mysql-server:5.7

【解释】

这个命令是在Docker中运行一个MySQL 5.7容器,并命名为zking-mysql。

容器将连接到net-ry网络。

MySQL配置文件my.cnf将从主机的/data/mysql/conf目录挂载到容器的/etc/my.cnf目录。

MySQL数据目录将从主机的/data/mysql/data目录挂载到容器的/var/lib/mysql目录。

容器将以特权模式运行,并且设置为总是重启。

MySQL的root密码将设置为sasa,并且容器的3306端口将映射到主机的3306端口。

在这个命令中

-d标志表示容器将在后台运行。-v标志用于挂载卷。

--privileged=true表示容器将以特权模式运行,

--restart=always表示容器将总是重启。

-e标志用于设置环境变量,这里设置了MySQL的root密码。

-p标志用于将容器端口映射到主机端口

进入MySQL容器

docker exec -it ba90df /bin/bash

给用户赋予外部访问权限

登录MySQL

mysql -u root -p

密码就是上面配置好的

执行以下代码赋予权限

grant all privileges on *.* to root@'%' identified by 'sasa' with grant option;

刷新权限

flush privileges; 

使用数据库管理工具测试一下

成功就表示配置完成了

初始化数据库脚本

根据项目的配置创建数据库

到此MySQL就准备完成了

 2.4.安装JDK,TomCat及部署后台项目

创建项目部署目录

mkdir ruoyi-admin

进入该目录

cd ruoyi-admin

上传后台jar包及dockerfile

ruoyi-admin为镜像名称,开始制作镜像

docker build -t ruoyi-admin .

进入容器

docker exec -it ruoyi-admin /bin/bash

运行镜像

docker run -itd --name ruoyi-admin --network net-ry -p 8080:8080  ruoyi-admin

测试看看日志信息是否正常

# 进入容器
docker exec -it ruoyi-admin /bin/bash

进入日志目录

cd /home/ruoyi/logs

使用ls -l 查看日志的基本信息

error.log大小为0表示没有报错

测试TomCat

在浏览器里面输入192.168.11.137:8080出现了一下样式就表示没问题

2.5.安装Nginx及配置静态资源
# 创建目录
mkdir -p /data/nginx/{conf,html}

上传nginx.conf至/data/nginx/conf文件夹中

启动容器服务

docker run -itd --name zking-nginx --network net-ry -p 80:80 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/html:/usr/share/nginx/html \
--privileged=true --restart=always \
nginx

【解释】

  1. docker run: 运行一个新的容器
  2. -itd: 分别表示分配一个伪终端(interactive)、保持容器运行状态(detach)以及使用交互模式(tty)
  3. --name zking-nginx: 指定容器的名称为 zking-nginx
  4. --network net-ry: 将容器连接到名为 net-ry 的网络
  5. -p 80:80: 将容器的端口 80 映射到主机的端口 80,允许通过主机的端口访问 nginx 服务
  6. -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf: 将主机上的 /data/nginx/conf/nginx.conf 文件挂载到容器内的 /etc/nginx/nginx.conf,用作 nginx 的配置文件
  7. -v /data/nginx/html:/usr/share/nginx/html: 将主机上的 /data/nginx/html 目录挂载到容器内的 /usr/share/nginx/html,作为 nginx 的网页内容目录
  8. --privileged=true: 启用容器的特权模式,允许容器访问主机的设备
  9. --restart=always: 设置容器在退出时总是重新启动
  10. nginx: 基于 nginx 镜像创建容器

通过这个命令,您可以创建一个名为 zking-nginx 的 nginx 容器,配置了指定的网络、端口映射、挂载配置文件和网页内容目录,并启用了特权模式和自动重启。

根据配置将静态资源上传至html文件夹

测试

直接在浏览器中输入服务器的IP地址http://192.168.11.137/出现主页就表示配置完成了

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

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

相关文章

Spring Boot-01-通过一个项目快速入门

官方参考文档:Spring Boot Reference Documentation 0. 概述 Spring的缺点: 1. 配置繁琐:虽然Spring的组件代码是轻量级,但它的配置却是重量级的。 2. 依赖繁琐:项目的依赖管理也是一件耗时耗力的事情。分析要导入哪…

动手学深度学习 | Jupyter Notebook 打开指定目录

目录 1 下载课件代码 2 在目录中打开 3 展示目录失败 3.1 问题分析 3.2 问题解决 ⚠️ 写在前面: 无语子,打开个目录花了我一天时间下文中提到的 “d2l-zh” 和 “pytorch” 均为目录名jupyter notebook 的安装请参考其它博客 1 下载课件代码…

计算机出现msvcr110.dll丢失是什么意思?七种方法解决msvcr110.dll丢失

msvcr110.dll文件是一个动态链接库(DLL)文件,由Microsoft Corporation开发。它是Visual C Redistributable for Visual Studio 2012的必要部分,包含了C运行时库函数的代码,这些函数为执行C/C应用程序提供了基础服务。这…

基于Socket简单的TCP网络程序

⭐小白苦学IT的博客主页 ⭐初学者必看:Linux操作系统入门 ⭐代码仓库:Linux代码仓库 ❤关注我一起讨论和学习Linux系统 TCP单例模式的多线程版本的英汉互译服务器 我们先来认识一下与udp服务器实现的不同的接口: TCP服务器端 socket()&…

设置你的第一个React应用

目录 一、React入门 1.1 你好React 1.2 创建React 1.3 应用结构 二、总结 2.1 定义组件 2.2 组件源码 三、组件详解 注意事项 3.1 组件三部曲 3.2 组件通信 —— props 3.3 对象数组迭代 —— map() 3.4 事件处理 3.5 钩子函数 —— useState() 初次学习最终效果…

wireshark数据流分析学习日记day3-从 Pcap 导出对象

从 HTTP 流量导出文件 过滤http请求 发现get请求上传了两个文件 保存即可 也可以保存网页 点击保存 改文件名为html结尾以便于访问 请谨慎使用此方法。如果从 pcap 中提取恶意 HTML 代码并在 Web 浏览器中查看它,则 HTML 可能会调用恶意域,这就是为什么…

HTML——5.表单、框架、颜色

一、表单 HTML 表单用于在网页中收集用户输入的数据&#xff0c;例如登录信息、搜索查询等。HTML 提供了一系列的表单元素&#xff0c;允许用户输入文本、选择选项、提交数据等。 <!DOCTYPE html> <html lang"en"> <head> <meta charset&q…

01.IDEA中出现Cannot resolve symbol ‘SpringApplication异常

试了很多次&#xff0c;看了这篇文章终于发现了问题。IDEA解决springboot工程中Cannot resolve symbol SpringApplication异常-CSDN博客 我存在的问题在于Maven home path有误&#xff0c;改正之后就没有问题&#xff0c;不标红了。

C语言实现快速排序算法

1. 什么是快速排序算法 快速排序的核心思想是通过分治法&#xff08;Divide and Conquer&#xff09;来实现排序。 算法的基本步骤是: 1. 选择一个基准值&#xff08;通常是数组中的某个元素&#xff09;&#xff0c;将数组分成两部分&#xff0c;使得左边的部分所有元素都小于…

RabbitMQ3.13.x之六_RabbitMQ使用场景

RabbitMQ3.13.x之六_RabbitMQ使用场景 文章目录 RabbitMQ3.13.x之六_RabbitMQ使用场景1. 为什么选择 RabbitMQ&#xff1f;1. 可互操作2. 灵活3. 可靠 2. 常见用户案例1. 服务解耦2. 远程过程调用3. 流处理4. 物联网 1. 为什么选择 RabbitMQ&#xff1f; RabbitMQ 是一个可靠且…

C语言 | Leetcode C语言题解之第8题字符串转换整数atoi

题目&#xff1a; 题解&#xff1a; int myAtoi(char * s){int i0;int out0;int pol1;int lenstrlen(s);if(len0) return 0;while(s[i] ) i; //删除空格if(s[i]-){ //判断正负pol-1;i;}else if(s[i]){pol1;i;}else{pol1;}while(s[i]!\0){if(s[i]<0||s[i]>9){ /…

【智能算法】跳蛛优化算法(AOA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年&#xff0c;H Peraza-Vzquez等人受到跳蛛狩猎行为启发&#xff0c;提出了跳蛛优化算法&#xff08;Jumping Spider Optimization Algorithm&#xff0c;JSOA&#xff09;。 2.算法原理 2.1…

【Kaggle】练习赛《鲍鱼年龄预测》(上)

前言 上一篇文章&#xff0c;讲解了《肥胖风险的多类别预测》机器学习方面的文章&#xff0c;主要是多分类算法的运用&#xff0c;本文是一个回归的算法&#xff0c;本期是2024年4月份的题目《Regression with an Abalone Dataset》即《鲍鱼年龄预测》&#xff0c;在此分享高手…

C++数据结构与算法——回溯算法组合问题

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

特征增强自蒸馏卷积神经网络

目录 1.1 模型总体架构 1.2 特征增强金字塔模块 1.3 辅助分类器 1.1 模型总体架构 与自然图像相比&#xff0c;遥感场景图像地物较为复杂&#xff0c;具有类间相似度高和类内差异大的特点&#xff0c;这导致常用的网络模型难以有效学习遥感场景图像的表征特征。此外&#xf…

springboot之mybatisPlus多表查询及分页查询

文章目录 一、多表查询二、mybatis-plus条件查询三、分页查询 一、多表查询 可能会用到的注解 这里的场景是&#xff0c;查询每个用户及其所有的订单。就是查询你的id号的同时&#xff0c;把你所有的历史订单信息都拉出来。 表结构这样 CREATE TABLE User ( id INT PRIMARY…

【可靠性】陷阱电荷对TDDB影响的多尺度模拟

【From Accelerated to Operating Conditions: How Trapped Charge Impacts on TDDB in SiO2 and HfO2 Stacks】 文章总结&#xff1a; 本研究深入探讨了在SiO2和HfO2介质堆叠中&#xff0c;陷阱电荷对时间依赖介电击穿&#xff08;TDDB&#xff09;现象的影响。通过引入载流子…

位运算-191. 位1的个数- 136. 只出现一次的数字

位1的个数 已解答 简单 相关标签 相关企业 编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中 设置位 的个数&#xff08;也被称为汉明重量&#xff09;。 示例 1&#xff1a; 输入&#xff1a;n 11 输…

Git 术语及中英文对照

完毕&#xff01;&#xff01;感谢您的收看 ----------★★历史博文集合★★---------- 我的零基础Python教程&#xff0c;Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字…

C++从入门到精通——类的定义及类的访问限定符和封装

类的定义及类的访问限定符和封装 前言一、类的定义类的两种定义方式成员变量命名规则的建议示例 二、类的访问限定符和封装访问限定符访问限定符说明C为什么要出现访问限定符例题 封装例题 前言 类的定义是面向对象编程中的基本概念&#xff0c;它描述了一类具有相同属性和方法…