Docker安装常见组件

本文详细介绍了如何在Docker中安装和配置Tomcat、MySQL和Redis,包括镜像搜索、拉取、启动、容器管理,并解决了容器外访问和中文数据乱码问题。还演示了高级版MySQL的容器卷配置和数据备份实践。
摘要由CSDN通过智能技术生成

Docker安装常见组件

主要演示Tomcat, Mysql, Redisx在Docker下的安装,其他组件基本和这些类似.

总体步骤:

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

前置条件

之前的学习中,我这把做了阿里云的加速器(也就是会从阿里云上下载)否则会很慢的. 具体操作可以参看我前面的帖子<<Docker基础>>, 当然你也可以从官网下载. 下面附上链接

Docker Hub官网

Tomcat安装

查找镜像

# 一般选择official的,即官方的
docker search tomcat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xHhtuju3-1653231673536)(E:\学习笔记\Docker安装常见组件.assets\1652597748231.png)]在这里插入图片描述

拉取镜像

# 下载可能需要等一会
docker pull tomcat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tqxA9P91-1653231673537)(E:\学习笔记\Docker安装常见组件.assets\1652597991591.png)]

查看镜像

docker images tomcat

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QeZ7anHF-1653231673537)(E:\学习笔记\Docker安装常见组件.assets\1652598063304.png)]

启动镜像

# 取一种即可
docker run -it -p 8080:8080 tomcat # 交互式启动
docker run -d -p 8080:8080 tomcat # 后台启动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-COWJfSGU-1653231673538)(E:\学习笔记\Docker安装常见组件.assets\1652598180284.png)]

问题:

使用外网访问报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s7xHNGYd-1653231673538)(E:\学习笔记\Docker安装常见组件.assets\1652598737921.png)]

容器内访问报404

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5LMqzilq-1653231673538)(E:\学习笔记\Docker安装常见组件.assets\1652598812716.png)]

原因:

新版Tomcat的目录结构发生了变化, webapps下是没有内容的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pH89i0HF-1653231673539)(E:\学习笔记\Docker安装常见组件.assets\1652599031386.png)]

真正有内容的是下面的webapps.dist

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4TbP5cek-1653231673539)(E:\学习笔记\Docker安装常见组件.assets\1652598942968.png)]

方案:

删除webapps, 将webapps.dist重命名为webapps即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gmNXBDCz-1653231673540)(E:\学习笔记\Docker安装常见组件.assets\1652599259310.png)]

尝试外网访问–成功!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NEONR7wr-1653231673540)(E:\学习笔记\Docker安装常见组件.assets\1652599669.png)]

停止容器:

由于我是-it的方式启动的, 我使用ctrl + c快捷键就会停止tomcat了;如果是使用-d的方式可以使用以下命令来停止

docker stop tomcat

删除容器:

docker rm -f 容器id

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vc707Xek-1653231673540)(E:\学习笔记\Docker安装常见组件.assets\1652600460398.png)]

使用Tomcat8

docker pull billygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name=tomcat8 billygoo/tomcat8-jdk8

可以直接运行第二个名称,会自动的帮你下载,这个版本的tomcat就不需要修改webapps文件夹了

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VXsEY9Na-1653231673541)(E:\学习笔记\Docker安装常见组件.assets\1652600772078.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z0MawRJF-1653231673541)(E:\学习笔记\Docker安装常见组件.assets\1652600834598.png)]

Mysql安装

简单版:

安装的过程基本和Tomcat差不多,就直接上命令了(本次以MySQL5.7为例)

# 1. 搜索镜像
docker search mysql
# 2. 拉取镜像
docker pull myslq:5.7
# 3. 查看镜像
docker images mysql:5.7
# 4. 启动镜像(服务端口映射)
docker run -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    # 进入容器内部,查看数据库能否访问
    # 4.1 进入容器内部
    docker exec -it 容器Id bash
    # 4.2 登录MySQL
    mysql -u root -p
    # 4.3 查看MySQL默认表
    show databases;
# 5. 停止容器
docker stop 容器Id
# 6. 移除容器
docker rm -f 容器id

下图为我通过图形化界面工具连接docker上的数据库创建的表,并在图形化工具里面插入了带中文的数据

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MMLXqqmn-1653231673541)(E:\学习笔记\Docker安装常见组件.assets\1653105426829.png)]

实际数据是如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3bAl3IqN-1653231673542)(E:\学习笔记\Docker安装常见组件.assets\1653105461949.png)]

docker安装简单版Mysql会有中文数据乱码问题, 而且这里面还会存在一个最大的问题就是数据备份的问题, 万一容器停止了,那么数据也就没有了, 这时候我们就要想到前面学到的容器卷;

实战版:

# 以下为一条命令, 宿主机之间的日志,数据和配置文件同步.
docker run -d -p 3307:3306 --privileged=true -v /kiwi/mysql/log:/var/log/mysql -v /kiwi/mysql/data:/var/lib/mysql -v /kiwi/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name=mysql mysql:5.7
# 切换到主机/kiwi/mysql/conf目录下并创建my.cnf文件,并在文件中输入以下内容(用于解决中文乱码的问题)
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

启动(带容器卷的Mysql):

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZktRhnPo-1653231673542)(E:\学习笔记\Docker安装常见组件.assets\1653193134562.png)]

创建my.cof文件:

配置好配置文件后建议重启以下镜像:

docker restart mysql

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AsAmV8RP-1653231673542)(E:\学习笔记\Docker安装常见组件.assets\1653193332522.png)]

建库间表插入中文数据:

进入容器内部执行以下命令:

# 进入容器命令:
docker exec -it mysql bash

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uASjdQpz-1653231673542)(E:\学习笔记\Docker安装常见组件.assets\1653193946148.png)]

删除mysql镜像:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OnEfxzB6-1653231673543)(E:\学习笔记\Docker安装常见组件.assets\1653194654355.png)]

重新启动mysql镜像:

docker run -d -p 3307:3306 --privileged=true -v /kiwi/mysql/log:/var/log/mysql -v /kiwi/mysql/data:/var/lib/mysql -v /kiwi/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name=mysql mysql:5.7

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YOLNrXp7-1653231673543)(E:\学习笔记\Docker安装常见组件.assets\1653194883318.png)]

查看删除之前的数据是否还在:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AGBPQMuR-1653231673543)(E:\学习笔记\Docker安装常见组件.assets\1653195015715.png)]

这样实际上就实现了容器的数据备份工作;

Redis安装

简单版的就直接跳过了,没什么实际使用价值.

# 搜索镜像
docker search redis
# 拉取镜像
docker pull redis:6.0.8

宿主机上准备redis配置文件:

不同版本的redis配置文件下载地址

https://redis.io/docs/manual/config/

修改宿主机配置文件:

# 找到对应的配置项,依次修改
bind 0.0.0.0 #也可以将这一行直接注释掉 表示任意IP均可连接

protected-mode no #默认为 yes 表示关闭保护模式

daemonize no #默认为 yes 表示允许后台运行

requirepass  yourpassword # 开启密码

运行redis镜像:

docker run -p 6479:6379 --name myredis --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.2.6 redis-server /etc/redis/redis.conf

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fRUygIl6-1653231673543)(E:\学习笔记\Docker安装常见组件.assets\1653230162347.png)]

剩下的就是连接redis,可参考我的另一篇redis安装帖子

Linux下redis6.2.6安装及RedisDesktopManager远程连接redis

注意:我在docker中使用的是6379端口, 宿主机上映射为6479. 我宿主机的6379端口为我宿主机redis端口;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值