总体步骤

安装Tomcat

docker hub 上查找Tomcat 镜像

https://registry.hub.docker.com/
image.png

从docker hub 上拉取Tomcat 镜像到本地

docker pull tomcat
docker pull tomcat:版本号

docker images 查看是否有拉取到的Tomcat

docker images
image.png

使用Tomcat 镜像创建容器实例(运行镜像)

docker run -d -it -p 8080:8080 —name=tom1 tomcat

-p: 小写 ,主机端口:docker 容器端口
-P 大写, 随机分配端口
-i: 交互
-t: 终端
-d: 后台

image.png

访问Tomcat首页

如果是是使用云服务的,请注意,需要先开启防火墙 对应端口 入站规则
image.png
访问404 的原因 ; 由于最新版Tomcat的webapps 为空
image.png
解决方法
将 webapps 删除
rm -r webapps
修改 webapps.dist 名字 为 webapps
mv webapps.dist webapps

再次访问 :
image.png

免修改版说明

下载安装不用处理 webapps 的文件处理,但建议使用最新的,安全性高,已修复相关漏洞的

安装MySQL

docker hub 上面查找mysql 镜像

docker pull mysql:8.0.27

从docker hub上(阿里云加速器) 拉取mysql 镜像到本地标签为8.0.27

docker pull mysql:8.0.27

使用mysql8.0.27镜像创建容器(运行容器)

命令哪来的

https://registry.hub.docker.com/_/mysql?tab=description

简单版

使用mysql 镜像

docker run —name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.27
image.png

建库建表插入数据

连接 mysql的容器
docker exec -it 5a13c2881f89 /bin/bash

mysql -uroot -p

image.png
创建数据库、建表

create database db01;
use db01
create table t1(id int, name varchar(20));
insert into t1 values(1, ‘zs’);
select * from t1;

image.png

外部链接docker的mysql容器实例

使用外部工具链接的时候注意,开放对应的端口号,还有连接工具是否支持对应的mysql 版本, 8版是有要求的

问题

1)插入中文数据
SHOW VARIABLES LIKE ‘character%’;

  1. mysql> SHOW VARIABLES LIKE 'character%';
  2. +--------------------------+--------------------------------+
  3. | Variable_name | Value |
  4. +--------------------------+--------------------------------+
  5. | character_set_client | latin1 |
  6. | character_set_connection | latin1 |
  7. | character_set_database | utf8mb4 |
  8. | character_set_filesystem | binary |
  9. | character_set_results | latin1 |
  10. | character_set_server | utf8mb4 |
  11. | character_set_system | utf8mb3 |
  12. | character_sets_dir | /usr/share/mysql-8.0/charsets/ |
  13. +--------------------------+--------------------------------+
  14. 8 rows in set (0.00 sec)

2)删除容器后,MySQL的数据如何处理

实战版

新建mysql 容器实

普通版
docker run —name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.27

加强版
docker run -d —name mysql -p 3306:3306 —privileged=true -v /ljxuse/docker/mysql/log:/var/log/mysql -v /ljxuse/docker/mysql/data:/var/lib/mysql -v /ljxuse/docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.27

-d:后台运行
—name : 容器名称
-p :端口映射
—privileged=true :开启容器权限
-v : 容器卷映射
-e : 容器参数设置
mysql:8.0.27 :镜像:版本号

新建my.cnf

将来路径切换到 宿主机 conf下
cd ../ljxuse/docker/mysql/conf

添加my.conf文件
vim my.cnf,文件内容为:
[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
character_set_server=utf8

åå重新启动mysql 容器实例再重新进入并查看字符编码åå

docker restart mysql

再新建库新建表再插入中文测试

image.png

结论

删除容器卷,后重启容器,能直接使用原有数据

安装redis

简单版安装

拉取镜像

docker pull redis

启动容器

docker run -d -p 6370:6379 redis

链接容器

docker exec -it cb10f41863c2 /bin/bash

操作redis

redis-cli
set k1 v1
get k1

升级版安装

命令提醒: 容器卷记得加入 —privileged=true

在宿主机下新建目录 /app/redis

mkdir -p /app/redis

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

如果本机没有,可以直接 下载一个最新版的redis,拷贝redis.conf 文件内容

/app/redis目录下修改redis.conf 文件,默认出厂的原始redis.conf

修改redis.conf 配置文件信息
1、开启redis验证
requirepass 123
2、允许redis 外地连接 必须
注释掉 # bind 127.0.0.1

3、daemonize no
将daemonize yes 注释或者 daemonize no 设置, 因为 该配置和 docker run 中-d参数冲突 ,会导致容器一直启动失败

使用redis镜像创建容器

docker run -d -p 6371:6379 —name=redis1 —privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data redis redis-server /etc/redis/redis.conf

此时如果启动失败,有问题,可以通过docker 的日志查询问题
docker logs 容器id/容器名

测试redis-cli 链接

连接容器
docker exec -it redis1 /bin/bash
连接redis
redis-cli
操作数据
set k1 v1
此时可能出现认证不通过,(error) NOAUTH Authentication required.
需要进行 校验,auth 123456 , 123456 是密码

set k1 v1
get k1 正常
image.png

证明docker启动使用了指定的配置文件

通过修改redis配置文件 的默认库

databases 16
image.png

修改为 10

然后重启redis1容器
docker restart redis1

docker exec -it redis1 /bin/bash
redis-cli
auth 123456
select 15
image.png

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

安装Nginx