系列文章目录
文章目录
- 系列文章目录
- 整体步骤
- Tomcat安装步骤
-
- [1. 搜索镜像](#1. 搜索镜像)
- [2. 拉取镜像](#2. 拉取镜像)
- [3. 查看镜像](#3. 查看镜像)
- [4. 启动容器 : 服务端口映射](#4. 启动容器 : 服务端口映射)
- [5. 停止容器](#5. 停止容器)
- [6. 移除容器](#6. 移除容器)
- [7. 免修改版说明](#7. 免修改版说明)
- Mysql安装步骤
-
- [1. 搜](#1. 搜)
- [2. 拉](#2. 拉)
- [3. 查](#3. 查)
- [4. 启](#4. 启)
- 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习高阶啦~~ (●'◡'●) 继续努力吧