docker入门(2)简易安装mariadb,tomcat,redis

本文详细介绍如何使用Docker容器技术部署Tomcat应用服务器、Redis内存数据库及MariaDB关系型数据库,包括搜索镜像、下载、创建容器及基本测试步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

		<div class="article-info-box">
			<div class="article-bar-top" style="height: 24px;">
																			
				<span class="tags-box artic-tag-box">
							<span class="label">标签:</span>
															<a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;redis&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;redis&quot;}" class="tag-link" href="http://so.youkuaiyun.com/so/search/s.do?q=redis&amp;t=blog" target="_blank">redis																</a><a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;tomcat&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;tomcat&quot;}" class="tag-link" href="http://so.youkuaiyun.com/so/search/s.do?q=tomcat&amp;t=blog" target="_blank">tomcat																</a><a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;mariadb&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;mariadb&quot;}" class="tag-link" href="http://so.youkuaiyun.com/so/search/s.do?q=mariadb&amp;t=blog" target="_blank">mariadb																</a><a data-track-click="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;docker&quot;}" data-track-view="{&quot;mod&quot;:&quot;popu_626&quot;,&quot;con&quot;:&quot;docker&quot;}" class="tag-link" href="http://so.youkuaiyun.com/so/search/s.do?q=docker&amp;t=blog" target="_blank">docker																</a>
						<span class="article_info_click">更多</span></span>
																				<div class="tags-box space">
							<span class="label">个人分类:</span>
															<a class="tag-link" href="https://blog.youkuaiyun.com/wufewu/article/category/8418546" target="_blank">Docker																</a><a class="tag-link" href="https://blog.youkuaiyun.com/wufewu/article/category/8401441" target="_blank">LInux																</a>
						</div>
																							</div>
			<div class="operating">
													</div>
		</div>
	</div>
</div>
<article class="baidu_pl">
	<div id="article_content" class="article_content clearfix csdn-tracking-statistics" data-pid="blog" data-mod="popu_307" data-dsm="post">
							            <div id="content_views" class="markdown_views prism-atom-one-dark">
						<!-- flowchart 箭头图标 勿删 -->
						<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path></svg>
						<h2><a name="t0"></a><a id="tomcat_0" target="_blank"></a>安装tomcat</h2>
  • 搜索tomcat镜像
docker search tomcat

 
  • 1
  • 下载

冒号后面是版本号,如果不写默认最新版本

docker pull tomcat:7

 
  • 1
  • 创建一个tomcat容器
docker run -v /opt/docker_tomcat:/usr/local/tomcat/webapps/html --net host -itd --name mytomcat tomcat:7

 
  • 1

注意:–net host:是指主机模式,表示宿主机和子主机共用一个网络,ip,端口…一起用

  • 测试
    在你/opt/docker_tomcat的路径下加一个图片
    在这里插入图片描述
    拿Linux的ip在浏览器上访问这张图
    在这里插入图片描述

安装Redis

  • 搜索redis镜像
docker search redis

 
  • 1
  • 下载
docker pull redis

 
  • 1
  • 创建一个容器
docker run --net host --name myredis -itd redis

 
  • 1
  • 进入容器
docker  exec -it myredis  redis-cli

 
  • 1
  • 测试: 增加一个string
    在这里插入图片描述

  • 在远程连接软件连接

在这里插入图片描述
在这里插入图片描述

安装mariadb

  • 搜索镜像
docker  search mariadb

 
  • 1
  • 下载镜像
docker pull mariadb

 
  • 1
  • 创建容器
docker run --net host -e MYSQL_ROOT_PASSWORD=ps123456 -e MYSQL_ROOT_HOST=% --name mymariadb -d mariadb

 
  • 1
  • 进入mariadb
docker exec -it mymariadb bash

 
  • 1

在这里插入图片描述

        </div>
					<link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-a47e74522c.css" rel="stylesheet">
            </div>
								
				<script>
					(function(){
						function setArticleH(btnReadmore,posi){
							var winH = $(window).height();
							var articleBox = $("div.article_content");
							var artH = articleBox.height();
							if(artH > winH*posi){
								articleBox.css({
									'height':winH*posi+'px',
									'overflow':'hidden'
								})
								btnReadmore.click(function(){
									if(typeof window.localStorage === "object" && typeof window.csdn.anonymousUserLimit === "object"){
										if(!window.csdn.anonymousUserLimit.judgment()){
											window.csdn.anonymousUserLimit.Jumplogin();
											return false;
										}else if(!currentUserName){
											window.csdn.anonymousUserLimit.updata();
										}
									}
									
									articleBox.removeAttr("style");
									$(this).parent().remove();
								})
							}else{
								btnReadmore.parent().remove();
							}
						}
						var btnReadmore = $("#btn-readmore");
						if(btnReadmore.length>0){
							if(currentUserName){
								setArticleH(btnReadmore,3);
							}else{
								setArticleH(btnReadmore,1.2);
							}
						}
					})()
				</script>
				</article>
### 架构概述 搭建一个包含 LVS、Keepalived、Nginx、MySQL、RedisTomcatDocker 和 Kubernetes 的系统架构,其中 MySQL 和 Redis 部署在 Kubernetes(K8s)集群外部,而其他服务如 Tomcat 和 Nginx 可以运行在 Kubernetes 内部。这种架构能够提供高可用性、负载均衡和灵活的容器化管理能力。 ### 系统架构设计 #### 1. 网络拓扑 - **LVS(Linux Virtual Server)**:作为前端负载均衡器,负责将流量分发到后端的 Nginx 节点。 - **Keepalived**:用于实现 LVS 的高可用性,提供虚拟 IP(VIP),确保在主 LVS 故障时自动切换到备用 LVS。 - **Nginx**:作为反向代理和负载均衡器,进一步将请求分发到 Kubernetes 集群内的 Tomcat 服务。 - **Kubernetes 集群**:托管 TomcatDocker 容器,提供容器编排和自动伸缩能力。 - **MySQL 和 Redis**:部署在 Kubernetes 集群外部,作为独立的数据库服务器,提供持久化存储和缓存服务。 #### 2. 组件配置 ##### 2.1 LVS + Keepalived 配置 LVS 和 Keepalived 的配置可以参考以下步骤: - **安装 LVS 和 Keepalived**: ```bash yum install ipvsadm keepalived -y ``` - **配置 Keepalived**: 编辑 `/etc/keepalived/keepalived.conf` 文件,配置主备 LVS 的 VIP 和健康检查机制。 ```conf vrrp_instance VI_1 { state MASTER interface ens33 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.238.88 } } virtual_server 192.168.238.88 80 { delay_loop 6 lb_algo rr lb_kind DR protocol TCP real_server 192.168.238.3 80 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } real_server 192.168.238.4 80 { weight 1 TCP_CHECK { connect_timeout 3 retry 3 delay_before_retry 3 } } } ``` - **启动 Keepalived 服务**: ```bash systemctl start keepalived systemctl enable keepalived ``` ##### 2.2 Nginx 配置 Nginx 作为反向代理,负责将请求转发到 Kubernetes 集群中的 Tomcat 服务。 - **安装 Nginx**: ```bash yum install nginx -y ``` - **配置 Nginx**: 编辑 `/etc/nginx/nginx.conf` 文件,添加反向代理配置。 ```nginx http { upstream tomcat_cluster { server 192.168.238.10:8080; server 192.168.238.11:8080; } server { listen 80; location / { proxy_pass http://tomcat_cluster; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } } ``` - **启动 Nginx 服务**: ```bash systemctl start nginx systemctl enable nginx ``` ##### 2.3 Kubernetes 集群部署 Kubernetes 集群可以通过 `kops` 或者云服务商工具进行部署。这里假设使用 `kubeadm` 进行本地部署。 - **初始化 Kubernetes 集群**: ```bash kubeadm init --pod-network-cidr=10.244.0.0/16 ``` - **安装网络插件(如 Flannel)**: ```bash kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ``` - **部署 Tomcat 服务**: 创建一个 `tomcat-deployment.yaml` 文件,定义 Tomcat 的 Deployment 和 Service。 ```yaml apiVersion: apps/v1 kind: Deployment metadata: name: tomcat spec: replicas: 2 selector: matchLabels: app: tomcat template: metadata: labels: app: tomcat spec: containers: - name: tomcat image: tomcat:9.0 ports: - containerPort: 8080 --- apiVersion: v1 kind: Service metadata: name: tomcat-service spec: selector: app: tomcat ports: - protocol: TCP port: 8080 targetPort: 8080 type: NodePort ``` - **应用配置**: ```bash kubectl apply -f tomcat-deployment.yaml ``` ##### 2.4 MySQL 和 Redis 部署 MySQL 和 Redis 部署在 Kubernetes 集群外部,确保它们可以通过网络访问。 - **安装 MySQL**: ```bash yum install mariadb-server mariadb -y systemctl start mariadb systemctl enable mariadb mysql_secure_installation ``` - **安装 Redis**: ```bash yum install redis -y systemctl start redis systemctl enable redis ``` - **配置防火墙**: 确保 MySQL 和 Redis 的端口(3306 和 6379)对 Kubernetes 集群内的节点开放。 ### 数据库连接配置 在 Kubernetes 集群内的 Tomcat 应用中,配置数据库连接时需要指向外部的 MySQL 和 Redis 地址。 - **Tomcat 应用配置示例**: ```properties spring.datasource.url=jdbc:mysql://192.168.238.5:3306/mydb spring.datasource.username=root spring.datasource.password=password spring.redis.host=192.168.238.6 spring.redis.port=6379 ``` ### 高可用性与故障转移 - **LVS + Keepalived** 提供了前端负载均衡的高可用性,确保在主 LVS 故障时自动切换到备用 LVS。 - **Nginx** 作为反向代理,可以配置多个后端 Kubernetes 节点,实现负载均衡。 - **Kubernetes** 提供了 Pod 的自动重启和调度功能,确保服务的高可用性。 ### 总结 通过上述配置,可以构建一个包含 LVS、Keepalived、Nginx、MySQL、RedisTomcatDocker 和 Kubernetes 的高可用系统架构。该架构不仅提供了负载均衡和高可用性,还利用了 Kubernetes 的容器编排能力,确保服务的灵活性和可扩展性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值