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

系列文章目录

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


文章目录

  • 系列文章目录
  • 整体步骤
  • Tomcat安装步骤
    • [1. 搜索镜像](#1. 搜索镜像)
    • [2. 拉取镜像](#2. 拉取镜像)
    • [3. 查看镜像](#3. 查看镜像)
    • [4. 启动容器 : 服务端口映射](#4. 启动容器 : 服务端口映射)
    • [5. 停止容器](#5. 停止容器)
    • [6. 移除容器](#6. 移除容器)
    • [7. 免修改版说明](#7. 免修改版说明)
  • Mysql安装步骤
  • Redis安装步骤
    • 简单版
    • [1. 搜](#1. 搜)
      • [2. 拉](#2. 拉)
      • [3. 启](#3. 启)
      • [4. 测](#4. 测)
    • 生产版(同样需要使用容器数据卷)
      • [1. 新建redis配置文件目录,使用自己的config配置](#1. 新建redis配置文件目录,使用自己的config配置)
      • [2. 运行镜像(启动redis容器)](#2. 运行镜像(启动redis容器))
      • [3. 证明我们使用的自己的配置文件](#3. 证明我们使用的自己的配置文件)
      • [4. 修改redis配置](#4. 修改redis配置)
  • 结尾

整体步骤

搜索镜像

拉取镜像

查看镜像

启动镜像 : 服务端口映射

停止容器

移除容器

Tomcat安装步骤

1. 搜索镜像

bash 复制代码
docker search tomcat

2. 拉取镜像

bash 复制代码
docker pull tomcat

3. 查看镜像

bash 复制代码
docker images

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

bash 复制代码
docker run -it -p 8080:8080 tomcat
bash 复制代码
docker run -d -p 8080:8080 --name t1 tomcat

-p(小写),主机端口:docker容器端口

-P(大写),随机分配端口

访问下服务器http://192.168.248.128:8080/,测试下tomcat是否启动成功

(不出意外的话会发现404)

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

查看防火墙状态

bash 复制代码
systemctl status firewalld

关闭防火墙

bash 复制代码
systemctl stop firewalld

然后再访问,会发现还是404,(●ˇ∀ˇ●)

其实这是因为最新版本的tomcat,自带的坑(默认就没有tomcat的首页),进去tomca目录下看一下就知道了

bash 复制代码
docker exec -it t1 /bin/bash
cd /usr/local/tomcat
ls

进入到webapp下面,看一下你会发现是空的(默认启动就会去webapps下面找项目)

接着,我们要吧webapps.dist目录下的所有东西复制进去

bash 复制代码
cp -r -b webapps.dist/* webapps

再次访问,发现能看的tomcat首页了

bash 复制代码
http://192.168.248.128:8080/

5. 停止容器

bash 复制代码
docker stop t1

6. 移除容器

bash 复制代码
docker rm t1

7. 免修改版说明

以上说的需要修改webapp的版本是最新的版本,通常我们也不需要使用最新的,下载8.xx版本的tomcat可以不需要修改webapps目录

(run,本地没有该镜像会直接去pull)

bash 复制代码
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

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

Mysql安装步骤

1. 搜

bash 复制代码
docker search mysql

2. 拉

bash 复制代码
docker pull mysql:5.7

3. 查

bash 复制代码
docker images

4. 启

测试版

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

bash 复制代码
ps -ef | grep mysql

只有一条,说明没有占用过

接下来启动mysql

bash 复制代码
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里面了,可以测试一下

bash 复制代码
create database db01;
use db01;
create table t1(id int, name varchar(20));
select * from t1;

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

测试插入发现:

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

bash 复制代码
show variables like 'character%';

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

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

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

bash 复制代码
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默认编码

bash 复制代码
cd /zzyyuse/mysql/conf/
vim my.cnf

配置文件内容

bash 复制代码
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8 

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

bash 复制代码
docker restart mysql

再次进入查看mysql编码

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

重建数据库

bash 复制代码
create database db01;
use db01;
create table t1(id int, name varchar(20));
select * from t1;

再次测试插入中文

bash 复制代码
insert into t1 values(2,'王五');

成功插入

删除容器后,再使用绑定数据卷的命令重启一个mysql容器,会发现容器依然在,这样保证了数据的持久性。

实战时必须使用这种方式。

Redis安装步骤

简单版

1. 搜

https://hub.docker.com/官网上搜索redis,找到想要下载的镜像及版本号。


我们这里以6.0.8版本为例

2. 拉

bash 复制代码
docker pull redis:6.0.8

3. 启

bash 复制代码
docker run -d -p 6379:6379 redis:6.0.8

4. 测

bash 复制代码
docker ps

docker exec -it ac80c54b17dc /bin/bash
bash 复制代码
redis-cli
set k1 v1
keys *

证明启动成功

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

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

bash 复制代码
mkdir -p /app/redis

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

bash 复制代码
cp /myredis/redis.conf /app/redis/

修改属性文件:

bash 复制代码
vi /app/redis/redis.conf

将bind 127.0.0.1 注释(前加#),表示允许外部连接

daemonize -> no 或注释起来(会与docker中的 run -d 冲突)

protected-mode->no

appendonly --> yes (开启持久化)

requirepass (去掉#)->ndsc (设置连接密码)

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

bash 复制代码
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. 证明我们使用的自己的配置文件

bash 复制代码
docker exec -it myr3 /bin/bash

连接上redis客户端

bash 复制代码
redis-cli 

选择15号库

bash 复制代码
select 15 

这时是成功的,接着我们选择18号库

显示失败,因为redis默认配置中一共允许使用16个库,超出的库不能使用。

我们利用这一点,修改配置文件中默认库的数量,来进行测试。

4. 修改redis配置

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

bash 复制代码
vim /app/redis.conf

找到databases,将值改成10

重启容器

bash 复制代码
docker ps
bash 复制代码
docker restart 0540fecac1cd
bash 复制代码
docker exec -it myr3 /bin/bash
bash 复制代码
redis-cli
bash 复制代码
select 15

配置已生效,选择不到15库了

结尾

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

相关推荐
wusam1 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习04(环境准备)
学习·docker·centos
攸攸太上1 小时前
Spring Gateway学习
java·后端·学习·spring·微服务·gateway
wusam4 小时前
螺蛳壳里做道场:老破机搭建的私人数据中心---Centos下Docker学习03(网络及IP规划)
运维·服务器·网络·docker·容器
一直在进步的派大星4 小时前
Docker 从安装到实战
java·运维·docker·微服务·容器
技术钱10 小时前
docker简介
运维·docker·容器
roman_日积跬步-终至千里10 小时前
【docker】docker常见命令
运维·docker·容器
Gogeof11 小时前
云原生化 - 基础镜像(简约版)
微服务·云原生·基础镜像
Gogeof13 小时前
云原生化 - 旅程(简约版)
微服务·云原生
王彬泽14 小时前
【微服务】负载均衡 - LoadBalance(day4)
微服务·负载均衡
编程老船长14 小时前
第24章 Spring Boot RESTful API安全防护:JWT认证实战
spring boot·后端·微服务