详细解读docker中如何运行redis mysql tomcat

214 阅读5分钟

适合小白,避坑必看,大佬跳过

作者:xiaotong 时间:2023/07/07

1.tomcat执行

docker run -it -p 8080:8080 tomcat curl http://localhost:8080 验证(最新版本需要修改webapps) 修改命令如下: root@9ca54130a317:/usr/local/tomcat# rm -r webapps root@9ca54130a317:/usr/local/tomcat# ls BUILDING.txt CONTRIBUTING.md LICENSE NOTICE README.md RELEASE-NOTES RUNNING.txt bin conf lib logs native-jni-lib temp webapps.dist work root@9ca54130a317:/usr/local/tomcat# mv webapps.dist webapps

2.mysql执行

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 (-e环境 ) 解决中文乱码 要配置MySQL的字符集和校对规则,可以按照以下步骤进行操作:

  1. 在你指定的 /xtstudy/mysql/conf 目录下创建一个新的配置文件,例如 my.cnf
  2. 打开 my.cnf 文件,并添加以下内容:
[client]
default-character-set=utf8

[mysqld]
collation-server=utf8_general_ci
character-set-server=utf8

配置成功后可查看字符集:SHOW VARIABLES LIKE 'character%';

这段配置将在客户端连接时将默认字符集设置为 UTF-8,并在 MySQL 服务器中将校对规则设置为 utf8_general_ci,字符集设置为 UTF-8。

  1. 启动或重新启动 MySQL 容器,确保使用 -v 选项将 my.cnf 文件映射到容器内部的 /etc/mysql/conf.d 目录。例如:
docker run -d -p 3306:3306 --privileged=true \
-v /xtstudy/mysql/log:/var/log/mysql \
-v /xtstudy/mysql/data:/var/lib/mysql \
-v /xtstudy/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql mysql:5.7

通过以上配置,MySQL 将使用指定的字符集和校对规则运行。 将容器内部的MySQL服务端口(3306)映射到主机的同一端口(3306)上。 将主机上的目录 /xtstudy/mysql/log 映射到容器内部的 MySQL 日志目录 /var/log/mysql。 将主机上的目录 /xtstudy/mysql/data 映射到容器内部的 MySQL 数据目录 /var/lib/mysql。 将主机上的目录 /xtstudy/mysql/conf 映射到容器内部的 MySQL 配置文件目录 /etc/mysql/conf.d。 设置 MySQL 的 root 用户密码为 "123456"。

请注意,如果已经有一个正在运行的 MySQL 容器,可以使用 docker exec 命令进入容器,在容器内部修改 /etc/mysql/my.cnf 文件,并重新启动 MySQL 服务使配置生效。

MySQL是一个广泛使用的关系型数据库管理系统,以下是一些常用的MySQL命令:

  1. 登录和退出:

    • 登录MySQL:mysql -u <用户名> -p(提示输入密码)
    • 退出MySQL:exit 或者 quit
  2. 数据库操作:

    • 创建数据库:CREATE DATABASE <数据库名>;
    • 删除数据库:DROP DATABASE <数据库名>;
    • 使用数据库:USE <数据库名>;
    • 显示所有数据库:SHOW DATABASES;
  3. 表操作:

    • 创建表:CREATE TABLE <表名> (列1 数据类型, 列2 数据类型, ...);
    • 删除表:DROP TABLE <表名>;
    • 显示表结构:DESC <表名>;
  4. 数据操作:

    • 插入数据:INSERT INTO <表名> (列1, 列2, ...) VALUES (值1, 值2, ...);
    • 查询数据:SELECT * FROM <表名>;(检索所有列) 或 SELECT 列1, 列2, ... FROM <表名>;
    • 更新数据:UPDATE <表名> SET 列 = 值 WHERE 条件;
    • 删除数据:DELETE FROM <表名> WHERE 条件;
  5. 用户和权限管理:

    • 创建用户:CREATE USER '<用户名>'@'主机' IDENTIFIED BY '<密码>';
    • 授予权限:GRANT <权限> ON <数据库>.<表> TO '<用户名>'@'主机';
    • 刷新权限:FLUSH PRIVILEGES;
    • 撤销权限:REVOKE <权限> ON <数据库>.<表> FROM '<用户名>'@'主机';
    • 删除用户:DROP USER '<用户名>'@'主机';

这只是一小部分MySQL的常用命令。

3.redis执行

docker run -p 6379:6379 --name xtredis --privileged=true -v/etc/redis/redis.conf:/etc/redis/redis.conf -v/etc/redis/data:/data -d redis redis-server /etc/redis/redis.conf 这是一个运行 Redis 容器的 Docker 命令。该命令的含义如下:

  • docker run:运行 Docker 容器命令。
  • -p 6379:6379:将主机的 6379 端口映射到容器的 6379 端口,以便可以从主机访问 Redis 服务。
  • --name xtredis:为容器指定一个名称,此处为 "xtredis"。
  • --privileged=true:给予容器完全的特权,以便在容器内部运行特权命令。
  • -v/etc/redis/redis.conf:/etc/redis/redis.conf:将主机中的 /etc/redis/redis.conf 文件挂载到容器的 /etc/redis/redis.conf 文件,以便使用自定义的 Redis 配置文件。
  • -v/etc/redis/data:data:将主机中的 /app/redis/data 目录挂载到容器的 /data 目录,以便持久化存储 Redis 数据。
  • -d:以后台模式运行容器(即守护态)。
  • redis:指定要使用的镜像,这里使用的是 Redis 镜像。
  • redis-server /etc/redis/redis.conf:在容器内执行的命令,启动 Redis 服务并使用指定的配置文件 /etc/redis/redis.conf。 这只是一个示例命令,具体的路径和参数需要根据您的实际环境和需求进行调整。

Redis 是一个流行的键值存储数据库,以下是一些 Redis 常用命令的示例:

  1. 键操作:
    • SET key value:设置键值对。
    • GET key:获取指定键的值。
    • DEL key:删除指定键及其对应的值。
    • EXISTS key:检查键是否存在。
    • EXPIRE key seconds:设置键的过期时间,单位为秒。

127.0.0.1:6379> SET key1 value1 // 在数据库 0 中设置键值对 OK 127.0.0.1:6379> SELECT 1 // 切换到数据库 1 OK 127.0.0.1:6379[1]> SET key2 value2 // 在数据库 1 中设置键值对 OK 127.0.0.1:6379[1]> GET key2 // 从数据库 1 中获取值 "value2" 127.0.0.1:6379[1]> SELECT 0 // 切换回到数据库 0 OK 127.0.0.1:6379> GET key1 // 从数据库 0 中获取值 "value1"

  1. 列表操作:

    • LPUSH key value1 [value2]:从列表左侧插入一个或多个值。
    • RPUSH key value1 [value2]:从列表右侧插入一个或多个值。
    • LPOP key:从列表左侧移除并返回第一个元素。
    • RPOP key:从列表右侧移除并返回最后一个元素。
    • LLEN key:获取列表的长度。
  2. 哈希操作:

    • HSET key field value:设置哈希表中字段的值。
    • HGET key field:获取哈希表中字段的值。
    • HDEL key field1 [field2]:删除哈希表中的一个或多个字段。
    • HGETALL key:获取哈希表中所有字段和值的列表。
  3. 集合操作:

    • SADD key member1 [member2]:向集合中添加一个或多个成员。
    • SMEMBERS key:获取集合中的所有成员。
    • SREM key member1 [member2]:从集合中移除一个或多个成员。
    • SCARD key:获取集合的成员数量。
  4. 有序集合操作:

    • ZADD key score1 member1 [score2 member2]:向有序集合中添加一个或多个成员,并指定分数。
    • ZRANGE key start stop [WITHSCORES]:按照索引范围获取有序集合中的成员。
    • ZREM key member1 [member2]:从有序集合中移除一个或多个成员。
    • ZCARD key:获取有序集合的成员数量。
  5. 发布与订阅:

    • PUBLISH channel message:向指定频道发布消息。
    • SUBSCRIBE channel:订阅指定频道的消息。

这些只是 Redis 的一小部分常用命令,Redis 还提供了许多其他功能和命令,如事务、Pipeline、Lua 脚本等。