【微服务实战之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习高阶啦~~ (●'◡'●) 继续努力吧

相关推荐
保持学习ing5 小时前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
susu10830189116 小时前
Debian 11 Bullseye 在线安装docker
运维·docker·debian
love530love6 小时前
Docker 稳定运行与存储优化全攻略(含可视化指南)
运维·人工智能·windows·docker·容器
人生匆匆7 小时前
docker进入启动失败的容器
运维·docker·容器
Code季风9 小时前
Gin Web 层集成 Viper 配置文件和 Zap 日志文件指南(下)
前端·微服务·架构·go·gin
Code季风9 小时前
Gin Web 服务集成 Consul:从服务注册到服务发现实践指南(下)
java·前端·微服务·架构·go·gin·consul
吓死羊了9 小时前
设置nginx和tomcat开机自动启动
后端·node.js·tomcat
魂尾ac11 小时前
Centos Docker 安装(100%成功)
linux·docker·centos
Johny_Zhao17 小时前
Docker + CentOS 部署 Zookeeper 集群 + Kubernetes Operator 自动化运维方案
linux·网络安全·docker·信息安全·zookeeper·kubernetes·云计算·系统运维
zwjapple18 小时前
docker-compose一键部署全栈项目。springboot后端,react前端
前端·spring boot·docker