欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 8. Docker 常规安装简介(安装 Tomcat ,安装 MySQL,安装Redis 同时指定安装的版本)

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

2025/2/22 2:06:02 来源:https://blog.csdn.net/weixin_61635597/article/details/145604250  浏览:    关键词: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. 最后:

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

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词