阿里云服务器使用Docker安装tomcat、mysql、redis、mq

1,476 阅读3分钟

前提条件

  • 服务器已安装Docker,并拉取所需的镜像(如果未配置请参考juejin.cn/post/684490…
  • 掌握常用命令
     *  docker ps                查看已经运行的docker镜像
     * docker ps -a             查看所有的容器
     * docker search 关键字      搜索镜像
     *  docker images            查看所有本地镜像
     *  docker pull 镜像名:tag    拉取镜像
     *  docker start 容器id       启动容器
     *  docker stop 容器id或容器名  停止运行中的容器
     *  略

tomcat的安装

  • 启动容器
    docker run-d -it --rm -p 8888:8080 tomcat:latest
    -d   后台运行
    -rm   关闭即移除
    -p 8888:8080   端口映射:将容器的8080端口映射到服务器的8888端口
    tomcat:latest   运行镜像的版本
  • 开放端口

    我这里使用的阿里云轻量级服务器,在阿里云控制台开放端口,为了简便,开放了所有端口。如果使用的本地虚拟机,可以关闭防火墙,或者指定端口开放

  • 测试连接
    访问出现404,我们已经启动了容器并成功开放端口,但是为什么会出现这个问题呢? 原因是拉取下来的镜像启动后生成的webapps文件夹下是空的,而webapps.dist文件夹下有完整的文件。
  • 进入容器
    docker exec -it 容器Id /bin/bash

解决

  1. 删除webapps\
 rm -rf webapps
  1. 将webapps.dist重命名webapps\
  mv webapps.dist/ webapps
  1. 退出容器\
 exit
  1. 不需要重启tomcat容器,否则会再次生成两个文件夹(可以把webapps挂载到服务器上,或者修改后重新制作镜像) 重新测试连接,访问正常(我这边测试需要一定的生效时间,耐心等待一分钟左右)

Mysql的安装

  • 启动容器
    docker run --name mysql5.7 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
    
    复杂写法:docker run -di --name scf_mysql -p 33306:3306 
    -v /var/supplychain/image:/var/supplychain/image -e MYSQL_ROOT_PASSWORD=123456 mysql 
    --lower_case_table_names=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    参数说明:
    -d
    后台执行
    -i
    开控制台交互
    --name
    为这个开启的容器,命名
    -p
    进行端口映射,将宿主机的33306端口映射到容器的3306
    -v
    挂载宿主机/var/supplychain/image/这个目录到容器的/var/supplychain/image/目录
    -e
    指定容器的环境变量,这里是指定的mysql容器中mysql的密码为123456
    --lower_case_table_names=1
    忽略数据表名的大小写
    --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    设置中文编码格式为utf8

  • 测试连接 外部连接

容器内连接 进入容器内 docker exec -it 容器id /bin/bash

redis

  • 下载镜像
    docker pull redis
  • 启动容器
    docker run --name redis -d -it --rm -p 6379:6379 redis redis-server --appendonly yes
  • 启动容器并设置密码
    docker run -d --name myredis -p 6379:6379 redis --requirepass "mypassword"
  • 连接redis客户端
    进入容器
    docker exec -i -t 镜像id或者镜像名称 /bin/bash  
    
    找到redis执行脚本
    # 进入redis容器
    docker exec -it f9eb2360ed36 bash
    # 找到redis执行脚本
    /usr/local/bin# cd /usr/local/bin/
    /usr/local/bin# ls -l
    
  • 进入客户端 docker exec -it redis redis-cli
  • 测试连接
    这里使用的工具是redis desktop manager

RabbitMQ

  • 下载镜像 docker pull rabbitmq:tag

    # docker pull rabbitmq (镜像未配有控制台)
    # docker pull rabbitmq:management (镜像配有控制台)
    
  • 启动容器\

    docker run --name rabbitmq -d -p 15672:15672 -p 5672:5672 rabbitmq:management
    # 15672是管理界面的端口
    # 5672 是服务的端口
    # RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password 不配置默认登录界面账号密码都是guest
    

未完待续、、、