[003-02-08].第8节:Docker安装tomcat + MySQL + Redis

8.1.安装步骤

a.安装说明:

  • 1.Docker使安装步骤变得统一,命令相似:
    在这里插入图片描述

b.安装步骤

  • 1.搜索镜像
  • 2.拉取镜像
  • 3.查看镜像
  • 4.启动镜像 + 服务端口映射
  • 5.停止容器
  • 6.移除容器

c.端口映射

容器内的网络服务和外部机器不能直接通信
外部机器和宿主机可以直接通信
宿主机和容器可以直接通信
当容器中的网络服务需要被外部机器访问时,可以将容器中提供服务的端口映射到宿主机的端口上。外部机器访问宿主机的该端口,从而间接访问容器的服务。
这种操作称为:`端口映射`

在这里插入图片描述

d.挂载举例说明:

  • 1.创建容器以及文件挂载和端口映射
docker run -p 3306:3306 \
--name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7


参数说明
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql/:将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码


`-p 3306:3306`:将Linux的端口与docker容器的3306端口对应
`–name`:给容器取名
`-v`:目录挂载,创建一个Linux文件与:后面的容器内部文件夹挂载 
	- 文件:将日志文件挂载到主机
	- 将运行期间的数据(备份等作用)与MySQL配置信息挂载到主机
`-e`:改变MySQL参数 :初始化root用户的密码
`-d`:以mysql 5.7来启动容器

在这里插入图片描述


8.2.Docker安装tomcat:

  • 1.docker hub上面查找tomcat镜像
    在这里插入图片描述
  • 2.从docker hub上拉取tomcat镜像到本地:docker pull tomcat
    在这里插入图片描述
  • 3.docker images:查看是否有拉取到的tomcat
    在这里插入图片描述
  • 4.使用tomcat镜像创建容器实例(也叫运行镜像):docker run -it -p 8080:8080 tomcat
    -p 小写,主机端口:docker容器端口
    -P 大写,随机分配端口
    i:交互
    t:终端
    d:后台
    在这里插入图片描述
  • 5.容器启动后,去访问Tomcat首页,如果发现有404的报错,可以去查看webapps 文件夹查看为空
    在这里插入图片描述
  • 6.解决:可能没有映射端口或者没有关闭防火墙;
    在这里插入图片描述
  • 7.删除原来的webapps目录,把webapps.dist目录换成webapps:
    在这里插入图片描述
    在这里插入图片描述
  • 8.对于上述问题的出现,免修改版说明:
    • docker pull billygoo/tomcat8-jdk8
    • docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8
      在这里插入图片描述
      在这里插入图片描述

8.3.Docker安装mysql:

a.MySQL镜像查询网站:

b.简单安装mysql版:

  • 1.下载镜像:
    在这里插入图片描述
  • 2.使用mysql5.7镜像创建容器(也叫运行镜像)
    在这里插入图片描述
    在这里插入图片描述

c.两个问题说明:

  • 问题1:外部Win10可以使用Navicat来连接运行在dokcer上的mysql容器实例服务,会发现插入中文数据的时候,出现乱码问题,这个是因为docker上默认字符集编码隐患(服务器上的字符编码问题);

  • 问题2:同时上述问题再启动容器的时候,也没有添加容器数据卷,这就导致数据库数据在容器删除后,所有的数据就都损失了。
    在这里插入图片描述

d.实战版安装MySQL:

  • 1.新建mysql容器实例:
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
  • 2.在宿主机上的/zzyyuse/mysql/conf目录下新建my.cnf,写入如下内容,通过容器卷同步给mysql容器实例
 [client]
 default-character-set=utf8
 [mysql]
 default-character-set=utf8
 [mysqld]
 init_connect='SET collation_connection = utf8_unicode_ci' 
 init_connect='SET NAMES utf8' 
 character-set-server=utf8
 collation-server=utf8_unicode_ci
 skip-character-set-client-handshake
 skip-name-resolve

注意:解决 MySQL 连接慢的问题
在配置文件中加入如下,并重启 mysql
[mysqld]
skip-name-resolve
解释:
skip-name-resolve:跳过域名解析

  • 3.重新启动mysql容器实例,再重新进入并查看字符编码
    在这里插入图片描述
  • 4.再新建库新建表再插入中文测试,发现乱码已经没了;
  • 5.结论:docker安装完MySQL并run出容器后,建议先修改完字符集编码后再新建mysql库-表-插数据 ,改变完字符集后需要重启下容器;
  • 6.假如将当前容器实例删除,再重新来一次,之前建的db01实例在宿主机中还存在;

8.4.Docker安装redis:

  • 1.从docker hub上(阿里云加速器)拉取redis镜像到本地标签为6.0.8
  • 2.命令注意点:Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied解决办法:在挂载目录后多加一个--privileged=true参数即可
  • 3.在CentOS宿主机下新建目录/app/redis:mkdir -p /app/redis;将一个redis.conf文件模板拷贝进/app/redis目录下
    在这里插入图片描述
  • 4.在/app/redis目录下修改redis.conf文件
    在这里插入图片描述
  • 5.使用redis6.0.8镜像创建容器(也叫运行镜像)同时实现目录的挂载:
 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   
  • 6.测试redis-cli连接上来:docker exec -it redis redis-cli
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值