总体步骤
安装Tomcat
docker hub 上查找Tomcat 镜像
https://registry.hub.docker.com/
从docker hub 上拉取Tomcat 镜像到本地
docker pull tomcat
docker pull tomcat:版本号
docker images 查看是否有拉取到的Tomcat
docker images
使用Tomcat 镜像创建容器实例(运行镜像)
docker run -d -it -p 8080:8080 —name=tom1 tomcat
-p: 小写 ,主机端口:docker 容器端口
-P 大写, 随机分配端口
-i: 交互
-t: 终端
-d: 后台
访问Tomcat首页
如果是是使用云服务的,请注意,需要先开启防火墙 对应端口 入站规则
访问404 的原因 ; 由于最新版Tomcat的webapps 为空
解决方法
将 webapps 删除
rm -r webapps
修改 webapps.dist 名字 为 webapps
mv webapps.dist webapps
再次访问 :
免修改版说明
下载安装不用处理 webapps 的文件处理,但建议使用最新的,安全性高,已修复相关漏洞的
安装MySQL
docker hub 上面查找mysql 镜像
docker pull mysql:8.0.27
从docker hub上(阿里云加速器) 拉取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
建库建表插入数据
连接 mysql的容器
docker exec -it 5a13c2881f89 /bin/bash
mysql -uroot -p
创建数据库、建表
create database db01;
use db01
create table t1(id int, name varchar(20));
insert into t1 values(1, ‘zs’);
select * from t1;
外部链接docker的mysql容器实例
使用外部工具链接的时候注意,开放对应的端口号,还有连接工具是否支持对应的mysql 版本, 8版是有要求的
问题
1)插入中文数据
SHOW VARIABLES LIKE ‘character%’;
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | utf8mb4 |
| character_set_system | utf8mb3 |
| character_sets_dir | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
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
再新建库新建表再插入中文测试
结论
删除容器卷,后重启容器,能直接使用原有数据
安装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 正常
证明docker启动使用了指定的配置文件
通过修改redis配置文件 的默认库
databases 16
修改为 10
然后重启redis1容器
docker restart redis1
docker exec -it redis1 /bin/bash
redis-cli
auth 123456
select 15