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

8. Docker 常规安装简介(安装 Tomcat ,安装 MySQL,安装Redis 同时指定安装的版本)

8. Docker 常规安装简介(安装 Tomcat ,安装 MySQL,安装Redis 同时指定安装的版本)

文章目录

  • 8. Docker 常规安装简介(安装 Tomcat ,安装 MySQL,安装Redis 同时指定安装的版本)
  • 1. Docker 容器当中安装 tomcat
  • 2. Docker 容器当中安装 MySQL5.7
  • 3. Docker 容器当中安装 Redis
  • 4. 最后:

在这里插入图片描述

Docker 常规安装的总体步骤:

  1. 搜索镜像
  2. 拉取镜像
  3. 查看镜像
  4. 启动镜像 (服务端口映射)
  5. 停止容器
  6. 移除容器

1. Docker 容器当中安装 tomcat

  1. docker hub上面查找tomcat镜像:
[root@localhost ~]# docker search tomcat

在这里插入图片描述

  1. 从docker hub上拉取tomcat镜像到本地:
[root@localhost ~]# docker pull tomcat

在这里插入图片描述

  1. docker images查看是否有拉取到的tomcat:
[root@localhost ~]# docker images

在这里插入图片描述

  1. 使用tomcat镜像创建容器实例(也叫运行镜像):
docker run -it -p 8080:8080 tomcat

在这里插入图片描述

[root@localhost ~]# docker run -d  -p 8080:8080 --name t01 tomcat

在这里插入图片描述

在这里插入图片描述

  1. 访问 Tomcat 首页

访问:http://localhost:8080/ 报 404 错误

在这里插入图片描述

解决

  • 可能没有映射端口或者没有关闭防火墙

在这里插入图片描述

  • 把webapps.dist目录换成webapps。 这时由于高版本的 Tomcat 将 tomcat 首页移动到了 webapps.dist 目录当中了,但是我们启动 tomcat 找的首页路径是从 webapps 下找的。

​ 先成功启动 tomcat ,进入到 tomcat 当中

root@localhost ~]# docker exec -it a33defdceb0e /bin/bash

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

root@a33defdceb0e:/usr/local/tomcat# rm -r webapps
root@a33defdceb0e:/usr/local/tomcat# mv webapps.dist webapps

在这里插入图片描述

想让我们虚拟机外面的浏览器可以访问到 Linux 系统当中的 Tomcat 需要配置Linux 系统当中的防火墙,让其对 Tomcat 8080端口对外开放

firewall-cmd --add-port=8080/tcp --zone=public --permanent //添加8080端口

在这里插入图片描述

firewall-cmd --add-port=80/tcp --zone=public --permanent //添加80端口

在这里插入图片描述

firewall-cmd --reload //刷新防火墙使设置生效

在这里插入图片描述

[root@localhost ~]# firewall-cmd --list-all

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


从上面的情况来,看,由于我们拉取pull的 Tomcat 的版本过高导致的,这里我可以拉取 pull 指定 Tomcat 版本。就不用修改文件了。这里。我们拉取 tomcat8-jdk8 的版本的内容。

[root@localhost ~]# docker stop t01

在这里插入图片描述

在这里插入图片描述

docker pull billygoo/tomcat8-jdk8

在这里插入图片描述

启动 billygoo/tomcat8-jdk8 运行,并访问 http://localhost:8080/

[root@localhost ~]# docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

在这里插入图片描述

在这里插入图片描述

2. Docker 容器当中安装 MySQL5.7

  1. docker hub上面查找mysql镜像:

在这里插入图片描述

  1. 从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7:
[root@localhost ~]# docker pull mysql:5.7

在这里插入图片描述

  1. 使用mysql5.7镜像创建容器(也叫运行镜像):
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

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[root@localhost ~]# docker exec -it f900264e1dff /bin/bash
bash-4.2# mysql -uroot -p

在这里插入图片描述

  1. 进入到 mysql 容器实例当中:建库建表插入数据
show databases;

在这里插入图片描述

create database db01;

在这里插入图片描述

create table t1(id int,name varchar(20))

在这里插入图片描述

insert into t1 values(1,"z3");

在这里插入图片描述

  1. 外部Win10也来连接运行在dokcer上的mysql容器实例服务

在这里插入图片描述

USE db01;

SELECT * 
FROM t1;


INSERT INTO t1 VALUES(2,"lihua");

在这里插入图片描述

在这里插入图片描述

问题: 插入中文数据试试

在这里插入图片描述

为什么报错?

docker上默认字符集编码隐患

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

 SHOW VARIABLES LIKE 'character%';

在这里插入图片描述

在这里插入图片描述

同时还存在一个致命的问题:删除容器后,里面的mysql数据如何办。容器实例一删除,你还有什么? 删容器到跑路。。。。。?

在这里插入图片描述

解决方法:同时我们这里重新生成一个新的 mysql 容器实例进行处理

  1. 新建mysql容器实例: 同时指定配合容器数据卷,对 MySQL 容器实例当中的数据进行备份。
docker run -d -p 3306:3306 --privileged=true -v /rainbowsea/mysql/log:/var/log/mysql -v /rainbowsea/mysql/data:/var/lib/mysql -v /rainbowsea/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  --name mysql mysql:5.7

在这里插入图片描述

  1. 新建my.cnf 。注意是在你配置的:本机容器数据卷的路径下 rainbowsea/mysql/conf
cd /rainbowsea/mysql/conf

在这里插入图片描述

[root@localhost conf]# vim my.cnf

在 my.cof 文件当中配置,如下信息,这样,我们 MySQL 容器实例启动的时候,就会读取该配置其中的配置信息。

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

在这里插入图片描述

在这里插入图片描述

  1. **重新启动mysql容器实例再重新进入并查看字符编码 ** ,因为这里 MySQL 容器实例再次启动的时候,就是读取到我们在容器数据卷路径当中配置的 my.cnf 当中的配置信息。
docker restart mysql

在这里插入图片描述

[root@localhost conf]# docker exec -it mysql /bin/bash
bash-4.2# mysql -uroot -p

在这里插入图片描述

mysql>  SHOW VARIABLES LIKE 'character%';

在这里插入图片描述

mysql> create database db01;
Query OK, 1 row affected (0.00 sec)

mysql> use db01;
Database changed
mysql> create table t1(id int,name varchar(20));
Query OK, 0 rows affected (0.02 sec)

mysql> insert into t1 values(1,"z3");
Query OK, 1 row affected (0.01 sec)

mysql> select * from t1;
+------+------+
| id   | name |
+------+------+
|    1 | z3   |
+------+------+
1 row in set (0.00 sec)

mysql> 

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

假如将当前容器实例删除,再重新来一次,之前建的db01实例还有吗

在这里插入图片描述

在这里插入图片描述

重新新建,我们上次的那个 MySQL 容器实例,看看数据是否还在:

[root@localhost conf]# docker run -d -p 3306:3306 --privileged=true -v /rainbowsea/mysql/log:/var/log/mysql -v /rainbowsea/mysql/data:/var/lib/mysql -v /rainbowsea/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456  --name mysql mysql:5.7b99c5163f9ea7621d5e2497b170a13995e5ea80c79acdbcb585326cb881ff929

在这里插入图片描述

[root@localhost conf]# docker exec -it mysql /bin/bash
bash-4.2# mysql -uroot -p

在这里插入图片描述

需要注意一点:就是你删除了容器实例,当你配置了容器数据卷,那么你恢复新建的那个对于的容器实例,要和你删除的容器实例是一样的(执行同一个指令)。需要指定到你配置的容器数据卷的路径位置,数据才会读取到本机的容器数据卷,恢复数据

3. Docker 容器当中安装 Redis

  1. 从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8
[root@localhost conf]# docker pull redis:6.0.8

在这里插入图片描述

  1. 进入到 redis 当中:
[root@localhost conf]# docker run -d -p 6379:6379 redis:6.0.8

在这里插入图片描述

[root@localhost conf]# docker exec -it c9aacb0990ba /bin/bash

在这里插入图片描述

[root@localhost conf]# docker exec -it c9aacb0990ba /bin/bash
root@c9aacb0990ba:/data# redis-cli

在这里插入图片描述

  1. 在CentOS宿主机下新建目录/app/redis:
[root@localhost ~]# mkdir -p /app/redis

在这里插入图片描述

在这里插入图片描述

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

拷贝配置文件,将准备好的redis.conf(这是 redis 的配置文件)文件放进/app/redis目录下

在这里插入图片描述

[root@localhost redis]# cp /etc/redis.conf /app/redis/
  1. /app/redis 目录下修改redis.conf文件

在这里插入图片描述

在这里插入图片描述

  1. 使用redis6.0.8镜像创建容器(也叫运行镜像)

在这里插入图片描述

docker run -p 6379:6379 --name myredis01 --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

重新新建一个 配置了 容器数据卷 将数据保存备份到 主机当中

在这里插入图片描述

[root@localhost redis]# docker run -d -p 6379:6379 --name myredis03 --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
  1. 测试redis-cli连接上来
 docker exec -it 运行着Rediis服务的容器ID redis-cli

在这里插入图片描述

  1. 请证明docker启动使用了我们自己指定的配置文件:

修改前 :

在这里插入图片描述

修改后: 修改了配置,记得重启 Redis 才会生效。

在这里插入图片描述

  1. 测试redis-cli连接上来第2次

在这里插入图片描述

4. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述


http://www.kler.cn/a/549276.html

相关文章:

  • WebMvcConfigurer 介绍
  • 有关计算机的英语单词、短语、句子
  • Python 文本探秘:正则表达式的易错迷宫穿越 -- 7. 正则表达式
  • Redis初阶笔记
  • Qt的QListWidget样式设置
  • Unity中如何判断URL是否为RTSP或RTMP流
  • C语言----共用体
  • Linux基础21-C语言篇之流程控制Ⅱ【入门级】
  • 基于SSM+uniapp的鲜花销售小程序+LW示例参考
  • Qt笔记31-69
  • 使用 GPT-SoVITS 克隆声音,很详细
  • 计算机视觉-尺度不变区域
  • vue3+element-plus中的el-table表头和el-table-column内容全部一行显示完整(hook函数)
  • Field ‘id‘ doesn‘t have a default value
  • Java 实现 Redis中的GEO数据结构
  • AtCoder Beginner Contest 393 —— E - GCD of Subset 补题 + 题解 python
  • Ubuntu添加桌面快捷方式
  • 深度学习在天文观测中的应用:解锁宇宙的奥秘
  • 虚拟环境测试部署应用
  • STM32的HAL库开发---内存保护(MPU)