【微服务实战之Docker容器】第五章-常规软件安装(Tomcat、Mysql、Redis)

系列文章目录

【微服务实战之Docker容器】第一章-下载及安装



整体步骤

搜索镜像
拉取镜像
查看镜像
启动镜像 : 服务端口映射
停止容器
移除容器

Tomcat安装步骤

1. 搜索镜像

docker search tomcat

在这里插入图片描述

2. 拉取镜像

docker pull tomcat

3. 查看镜像

docker images

在这里插入图片描述

4. 启动容器 : 服务端口映射

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

-p(小写),主机端口:docker容器端口
-P(大写),随机分配端口
访问下服务器http://192.168.248.128:8080/,测试下tomcat是否启动成功
(不出意外的话会发现404)
在这里插入图片描述

出现这种情况,可能是没有关闭防火墙,查看一下
查看防火墙状态

systemctl status firewalld

关闭防火墙

systemctl stop firewalld

然后再访问,会发现还是404,(●ˇ∀ˇ●)
其实这是因为最新版本的tomcat,自带的坑(默认就没有tomcat的首页),进去tomca目录下看一下就知道了

docker exec -it t1 /bin/bash
cd /usr/local/tomcat
ls

在这里插入图片描述
进入到webapp下面,看一下你会发现是空的(默认启动就会去webapps下面找项目)
接着,我们要吧webapps.dist目录下的所有东西复制进去

cp -r -b webapps.dist/* webapps

在这里插入图片描述
再次访问,发现能看的tomcat首页了

http://192.168.248.128:8080/

在这里插入图片描述

5. 停止容器

docker stop t1

6. 移除容器

docker rm t1

7. 免修改版说明

以上说的需要修改webapp的版本是最新的版本,通常我们也不需要使用最新的,下载8.xx版本的tomcat可以不需要修改webapps目录
(run,本地没有该镜像会直接去pull)

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

8xx版本的不需要做那些无聊的修改

在这里插入图片描述

Mysql安装步骤

1. 搜

docker search mysql

在这里插入图片描述

2. 拉

docker pull mysql:5.7

3. 查

docker images

4. 启

测试版

启动之前,先检查一下系统是否已经安装过mysql,占用了3306端口

ps -ef | grep 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  
123456

一顿操作,就进到mysql里面了,可以测试一下

create database db01;
use db01;
create table t1(id int, name varchar(20));
select * from t1;

在这里插入图片描述

也可以使用连接工具进行连接。

在这里插入图片描述

测试插入发现:

在这里插入图片描述
中文失效,插入不了,这是由于docker默认安装的mysql字符集编码是latinl

show variables like 'character%';

在这里插入图片描述
这种测试还有一个问题,就是我们没有使用容器数据卷将容器中的数据在宿主机上进行备份,这样我们容器干掉后,重启就找不到原有的数据了。

实战版–使用容器数据卷备份数据

重新新建实例,设置宿主机容器卷映射关系

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

新建my.cnf,配置mysql默认编码

cd /zzyyuse/mysql/conf/
vim my.cnf

配置文件内容

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

修改完之后重启容器,使配置生效

docker restart mysql

再次进入查看mysql编码

docker exec -it mysql /bin/bash
mysql -uroot -p
123456
show variables like 'character%';

在这里插入图片描述
重建数据库

create database db01;
use db01;
create table t1(id int, name varchar(20));
select * from t1;

再次测试插入中文

insert into t1 values(2,'王五');

成功插入
在这里插入图片描述
删除容器后,再使用绑定数据卷的命令重启一个mysql容器,会发现容器依然在,这样保证了数据的持久性。
实战时必须使用这种方式。

Redis安装步骤

简单版

1. 搜

去https://hub.docker.com/官网上搜索redis,找到想要下载的镜像及版本号。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我们这里以6.0.8版本为例

2. 拉

docker pull redis:6.0.8

3. 启

docker run -d -p 6379:6379 redis:6.0.8

4. 测

docker ps

docker exec -it ac80c54b17dc /bin/bash

在这里插入图片描述

redis-cli
set k1 v1
keys *

在这里插入图片描述
证明启动成功

生产版(同样需要使用容器数据卷)

1. 新建redis配置文件目录,使用自己的config配置

mkdir -p /app/redis

找一个已有的redis配置复制进来

cp /myredis/redis.conf /app/redis/

修改属性文件:

vi /app/redis/redis.conf

将bind 127.0.0.1 注释(前加#),表示允许外部连接
daemonize -> no 或注释起来(会与docker中的 run -d 冲突)
protected-mode->no
appendonly --> yes (开启持久化)
requirepass (去掉#)->ndsc (设置连接密码)

2. 运行镜像(启动redis容器)

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

3. 证明我们使用的自己的配置文件

docker exec -it myr3 /bin/bash

连接上redis客户端

redis-cli 

选择15号库

select 15 

在这里插入图片描述
这时是成功的,接着我们选择18号库
在这里插入图片描述
显示失败,因为redis默认配置中一共允许使用16个库,超出的库不能使用。
我们利用这一点,修改配置文件中默认库的数量,来进行测试。

4. 修改redis配置

输入exit,退出redis和docker交互页面

vim /app/redis.conf

找到databases,将值改成10
在这里插入图片描述
重启容器

docker ps

在这里插入图片描述

docker restart 0540fecac1cd
docker exec -it myr3 /bin/bash
redis-cli
select 15

配置已生效,选择不到15库了
在这里插入图片描述

结尾

好了,本篇就到这里,接下来我们要学Docker习高阶啦~~ (●’◡’●) 继续努力吧

相关推荐

  1. : Spring cloud 服务调用-OpenFeign

    2024-05-11 11:34:15       62 阅读
  2. 实战

    2024-05-11 11:34:15       56 阅读
  3. k8s学习 — (实践 服务发现

    2024-05-11 11:34:15       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-11 11:34:15       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-11 11:34:15       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-11 11:34:15       87 阅读
  4. Python语言-面向对象

    2024-05-11 11:34:15       96 阅读

热门阅读

  1. Unity构建详解(12)——自动构建

    2024-05-11 11:34:15       27 阅读
  2. AlmaLinux 文件重命名 mv命令用法示例

    2024-05-11 11:34:15       33 阅读
  3. pnpm包管理工具的理解

    2024-05-11 11:34:15       31 阅读
  4. 根据地址栏url上key获取值

    2024-05-11 11:34:15       34 阅读
  5. JVM进程缓存 Caffeine

    2024-05-11 11:34:15       30 阅读
  6. MATLAB在工程计算领域使用情况

    2024-05-11 11:34:15       35 阅读
  7. vue+elmentuiplus中Table-column 动态添加calss

    2024-05-11 11:34:15       36 阅读