(七) Docker安装常规软件

news2024/11/16 3:47:00

Docker安装常规软件

  • 一、安装tomcat
    • 1、docker hub上面查找tomcat镜像
    • 2、从docker hub上拉取tomcat镜像到本地
    • 3、docker images查看是否有拉取到的tomcat
    • 4、使用tomcat镜像创建容器实例
    • 5、访问Tomcat首页
    • 6、拉取这个版本不需要去修改Webapps目录(免修改版)
  • 二、Mysql安装
    • 1、简单入门(不使用)
      • 1、docker hub上面查找mysql镜像
      • 2、从docker hub上拉取mysql镜像到本地
      • 3、创建容器
      • 4、在Windows上使用Mysql工具连接
      • 5、插入中文数据问题
      • 6、容器挂掉后数据丢失
    • 2、实际用的(下次直接用这的命令)
      • 1、新建mysql容器实例
      • 2、宿主机新建my.cnf通过容器卷同步给容器
      • 3、重新启动mysql容器实例再重新进入并查看字符编码
      • 4、再新建库新建表再插入中文测试
      • 5、结论
  • 三、Redis安装
    • 1、从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8
    • 2、在CentOS宿主机下新建目录/app/redis
    • 3、将一个redis.conf文件模板拷贝进/app/redis目录下
    • 4、使用redis6.0.8镜像创建容器
    • 5、测试redis-cli连接上来
    • 6、证明docker启动使用了我们自己指定的配置文件

总体步骤

在这里插入图片描述

一、安装tomcat

1、docker hub上面查找tomcat镜像

docker search tomcat

在这里插入图片描述

2、从docker hub上拉取tomcat镜像到本地

docker pull tomcat

3、docker images查看是否有拉取到的tomcat

docker images tomcat

在这里插入图片描述

4、使用tomcat镜像创建容器实例

docker run -d -p 8080:8080 --name t1 tomcat

参数

  • -p 小写,主机端口:docker容器端口
  • -P 大写,随机分配端口,不指定就由系统分配
  • i:交互
  • t:终端
  • d:后台

5、访问Tomcat首页

问题

在这里插入图片描述

解决

  1. 可能没有映射端口或者防火墙没有开端口,或者云服务器没有开安全组

    # 查看firewall服务状态
    systemctl status firewalld
    	
    # 开启、重启、关闭、firewalld.service服务
    # 开启
    service firewalld start
    # 重启
    service firewalld restart
    # 关闭
    service firewalld stop
    
    # 查看防火墙规则
    firewall-cmd --list-all    # 查看全部信息
    firewall-cmd --list-ports  # 只看端口信息
    
    # 开启端口
    开端口命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent
    重启防火墙:systemctl restart firewalld.service
    
    命令含义:
    --zone #作用域
    --add-port=80/tcp  #添加端口,格式为:端口/通讯协议
    --permanent   #永久生效,没有此参数重启后失效
    
    #常用的firewall命令常用命令介绍
    1 firewall-cmd --state                           ##查看防火墙状态,是否是running
     2 firewall-cmd --reload                          ##重新载入配置,比如添加规则之后,需要执行此命令
     3 firewall-cmd --get-zones                       ##列出支持的zone
     4 firewall-cmd --get-services                    ##列出支持的服务,在列表中的服务是放行的
     5 firewall-cmd --query-service ftp               ##查看ftp服务是否支持,返回yes或者no
     6 firewall-cmd --add-service=ftp                 ##临时开放ftp服务
     7 firewall-cmd --add-service=ftp --permanent     ##永久开放ftp服务
     8 firewall-cmd --remove-service=ftp --permanent  ##永久移除ftp服务
     9 firewall-cmd --add-port=80/tcp --permanent     ##永久添加80端口 
    10 firewall-cmd --remove-port=80/tcp --permanent  ##永久移除80端口
    11 firewall-cmd --list-ports                      ##查看已经开放的端口
    12 iptables -L -n                                 ##查看规则,这个
    
    

    在这里插入图片描述

  2. 把webapps.dist目录换成webapps

    因为新版的Tomcat的webapps目录是空的,我们给它删了并且给文件夹webapps.dist更名
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

浏览器访问测试 :服务器公网IP:8080

在这里插入图片描述

6、拉取这个版本不需要去修改Webapps目录(免修改版)

docker pull billygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

在这里插入图片描述

二、Mysql安装

1、简单入门(不使用)

1、docker hub上面查找mysql镜像

docker search mysql

在这里插入图片描述

2、从docker hub上拉取mysql镜像到本地

这里指定了 5.7 的版本

docker pull mysql:5.7

在这里插入图片描述

3、创建容器

DockerHub官网命令
在这里插入图片描述

使用mysql镜像

运行前检查下是否有端口冲突,防止mysql已经在宿主机上运行了占用端口

在这里插入图片描述

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker ps

docker exec -it 容器ID /bin/bash

mysql -uroot -p

在这里插入图片描述

建库建表插入数据

create database db01;

use db01;

create table t1(id int,name varchar(20));
insert into t1 values(1,'guai');

select * from t1;

在这里插入图片描述

4、在Windows上使用Mysql工具连接

记得放行宿主机 3306 端口以及服务器安全组

在这里插入图片描述

在这里插入图片描述

5、插入中文数据问题

在这里插入图片描述

原因

docker上默认字符集编码隐患

docker里面的mysql容器实例查看,内容如下:

SHOW VARIABLES LIKE 'character%';

默认数据库的编码是 拉丁 所以乱码
在这里插入图片描述

6、容器挂掉后数据丢失

因为没有挂载容器卷所以实例停止后,数据就会丢失,显然这是不可能让其发生的

2、实际用的(下次直接用这的命令)

1、新建mysql容器实例

这里挂载了三个,日志,数据,配置文件

docker run -d -p 3306:3306 --privileged=true -v /guai/mysql/log:/var/log/mysql -v /guai/mysql/data:/var/lib/mysql -v /guai/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  --name mysql mysql:5.7

2、宿主机新建my.cnf通过容器卷同步给容器

在这个 my.cnf 里面添加这些内容

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

在这里插入图片描述

3、重新启动mysql容器实例再重新进入并查看字符编码

在这里插入图片描述

SHOW VARIABLES LIKE 'character%';

在这里插入图片描述

4、再新建库新建表再插入中文测试

create database db01;

use db01;

create table t1(id int,name varchar(20));
insert into t1 values(1,'guai');

select * from t1;

再次插入中文成功

在这里插入图片描述

5、结论

结论:docker安装完MySQL并run出容器后(记得挂载容器卷),建议请先修改完字符集编码后再新建mysql库-表-插数据

三、Redis安装

服务器开放安全组以及防火墙,但是建议用其他端口映射,因为很容易被挖矿

开端口命令:firewall-cmd --zone=public --add-port=6379/tcp --permanent
重启防火墙:systemctl restart firewalld.service
查看开放端口:firewall-cmd --list-ports

在这里插入图片描述

1、从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8

docker pull redis:6.0.8

在这里插入图片描述

2、在CentOS宿主机下新建目录/app/redis

mkdir -p /app/redis

在这里插入图片描述

3、将一个redis.conf文件模板拷贝进/app/redis目录下

因为之前安装过 Redis 所以有这个配置文件,所以直接复制就行,没有的阿里云盘分享

https://www.aliyundrive.com/s/GLGbZ8V9dat

然后修改一下配置文件

在这里插入图片描述

4、使用redis6.0.8镜像创建容器

docker run  -p 6380:6379 --name myr3 --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf

这里如果启动后 Docker ps 不出来,大概率是配置文件出现错误,可以选择去github上更换版本接近的配置文件,这样就可以显示,或者使用命令docker logs 容器名或者容器id去查看报错信息进行修改,但是比较麻烦

在这里插入图片描述

5、测试redis-cli连接上来

docker exec -it myr3 /bin/bash

redis-cli

在这里插入图片描述

6、证明docker启动使用了我们自己指定的配置文件

我们用的配置文件,数据库默认是16个

在这里插入图片描述
然后修改我们宿主机的配置文件,会同步给docker容器里面的配置。

修改完记得重启容器

修改为17个,这里找的时候可以使用/你找的东西 可以快速定位。
在这里插入图片描述

重启测试成功

在这里插入图片描述

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

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

相关文章

在Python中自然语言处理生成词云WordCloud

了解如何在Python中使用WordCloud对自然语言处理执行探索性数据分析。 最近我们被客户要求撰写关于自然语言处理的研究报告,包括一些图形和统计输出。 什么是WordCloud? 很多时候,您可能会看到一片云,上面堆满了许多大小不同的单…

花了1块钱体验一把最近很火的ChatGPT

前言 最近 OpenAI 发布了 ChatGPT,一经发布就在科技圈火得不行。 ChatGPT是什么呢? 简单得说,ChatGPT,是一种基于对话的 AI 聊天工具。我们来看看ChatGPT自己得回答。 下面是在ChatGPT注册成功后,正常使用后的截图 …

代码随想录训练营day57, 回文子串, 回文子序列

回文子串 计算这个字符串中有多少个回文子串 动态规划 数组定义: 表示区间[i,j]的资产是否为回文子串, 如果是dp[i][j]则为true, 否为false递推: 整理来说就是两种, s[i]和s[j]相等或者不相等 相等有三种情况 下标i与j相同, 同一个字符例如a, b下标差一位, 那就是aa, bb下标…

Unity3D2020+导出Android工程中使用并交互

, 目录 1,版本信息 2,前期准备 Unity方面: Android方面: 3,Android与Unity3D交互 1,版本信息 unity2020 android studio 2021 *不要用android studio 2020系列,存在不能导入Library的b…

从Eureka到Polaris,好未来AI中台注册中心是如何实现0代码迁移的

导语:2021年,好未来的AI 中台业务规模激增,日调用量超6亿,总调用量上千亿。业务的快速发展给中台的现有技术架构带来一定的冲击。好未来AI中台是微服务架构,完成一个业务请求涉及多个服务之间相互调用,可以…

DVWA靶场下的xss漏洞练习及分析

目录 JavaScript操作cookie 反射型xss漏洞 存储型xss漏洞 JavaScript操作cookie 1.alert(document.cookie)&#xff1b; 2.document.cookie"coleak"; 3.document.cookie"modify"; 反射型xss漏洞 low级别 <script>alert(11)</script> med级别…

知识点10--Docker的DockerFile

Docker有两种镜像生成的方式&#xff0c;供我们在打包自己的环境时选择&#xff0c;前面的知识点都提到过&#xff0c;分别是commit和DockerFile build&#xff0c;两者的区别就在于commit使用自己已有的容器生成&#xff0c;而DockerFile是直接通过操作基础镜像来生成&#xf…

树——算法专项刷题(八)

八、树 主要是对二叉树的前、中、后、层序遍历的应用 &#xff08;这四种遍历详见 二叉树遍历&#xff09; 8.1二叉树的最近公共祖先 原题链接 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 例如&#xff0c;给定如下二叉树: root [3,5,1,6,2,0,8,null,null,…

Kamiya艾美捷环丁烷嘧啶二聚体CPD相关说明

CPD学名环丁烷嘧啶二聚体&#xff0c;是紫外线照射后DNA损伤的产物&#xff0c;通过免疫组化检测&#xff0c;可以很明显地看出CPD含量变化——CPD的含量越高&#xff0c;代表DNA损伤越严重。因此可以通过CPD含量变化来检测待测物的抗皱功效。 环丁烷嘧啶二聚体&#xff1a;紫外…

m对比PSO,WPA,GWPA以及GWO四种优化算法的优化性能,优化目标函数为10个来自CEC2017的标准测试函数

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 灰狼优化算法(GWO),灵感来自于灰狼.GWO算法模拟了自然界灰狼的领导层级和狩猎机制.四种类型的灰狼,如 α,β,δ,w 被用来模拟领导阶层。此外&#xff0c;还实现了狩猎的三个主要步骤:寻找猎物、包…

活动报名丨泛娱乐社交产品,存量破局方法论

「网易 MCtalk 娱乐社交公开课」网易 MCtalk 娱乐社交公开课是网易云信自主开发的面向从事娱乐社交产品开发、运营、市场推广等工作岗位的实战公开课。公开课通过邀请网易内外部行业技术专家、产品经理以及投放和市场负责人&#xff0c;结合多年实践经验&#xff0c;围绕娱乐社…

难倒90%英雄的阿里对象继承面试题 ,看看你答的对吗?

思考下面的输出结果 class Father {int x 10;public Father() {System.out.println("Father " x);this.print();x 20;}public void print() {System.out.println("Father.x " x);} } class Son extends Father {int x 30;public Son() {System.out.…

跨设备链路聚合 M-LAG配置案例

组网需求 如下图所示&#xff0c;通过配置M-LAG双归接入IP网络可以满足以下要求&#xff1a; ​当一条接入链路发生故障时&#xff0c;流量可以快速切换到另一条链路&#xff0c;保证可靠性。 为了高效利用带宽&#xff0c;两条链路同时处于active状态&#xff0c;可实现使用…

【教学类-15-05】20221207《八款字体的描字帖-2*4格》(大班主题《我是中国人-中国字》 中班描字)

成品样式&#xff1a; 80号字&#xff08;适应2-3个名字的大小&#xff09; 68号字&#xff08;适应4个名字大小&#xff08;2-3个名字也可以用&#xff0c;字会很小&#xff09;&#xff09; 打印样式&#xff1a; 背景需求&#xff1a; 前期进行多次的Python学具教学活动&a…

NLP关系抽取和事件抽取

关系抽取 关系抽取又称实体关系抽取&#xff0c;以实体识别为前提&#xff0c;在实体识别之后&#xff0c;判断给定文本中的任意两个实体是否构成事先定义好的关系&#xff0c;是文本内容理解的重要支撑技术之一&#xff0c;对于问答系统&#xff0c;智能客服和语义搜索等应用都…

研究一段WPF 3D 机械臂代码

网上下一段代码&#xff0c;运行如下&#xff1b;显示了一个3D机械臂&#xff1b; xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"&#xff0c;这是WPF命名空间&#xff0c;一般写在xaml头部&#xff0c;它的是这样的&#xff0c;<Viewport3D…

vue 数据手写分页算法,定时展示

我们在业务之中&#xff0c;其实会常常用到一些数据的分段展示 &#xff0c; 比如数据量过大导致echarts无法展示&#xff0c;我们就可以将数据进行算法分页 &#xff0c; 然后套用定时器实时更新分段数据&#xff1b; 例子展示 &#xff1a; 将下列数组截取成每页5条数据的分…

鞋子商店APP源码和设计报告

实 验 报 告 课程名称 实验名称 指导教师 专业 班级 学号 姓名 一、需求分析 1.需求分析 随着互联网和手机技术的蓬勃发展&#xff0c;网购已经成为许多人&#xff0c;尤其是年轻人的主要消费方式&#xff0c;这就对手机购物APP产生了大量的需求&#xff0c;商品的展…

01入门-ThreadLocal详解-并发编程(Java)

文章目录1 简介2 基本使用2.1 常用方法2.2 小案例3 ThreadLocal与Sycronized4 应用场景4.1 转账案例构建4.2 问题4.3 解决5 后记1 简介 官方JDK源码关于ThreadLocal描述&#xff1a;ThreadLocal类用来提供线程内部的局部变量。这种变量在多线程环境下访问&#xff08;通过get和…

【opensips】客户端的注册

opensips的注册能力 opensips可以通过registrar模块实现注册的能力&#xff0c; 所有的账户信息默认是在opensips的subscibe表中&#xff0c; 默认的subscibe表结构如上图&#xff0c; id是主键&#xff0c;username是账户名domain是opensips的域名password是密码email_addre…