• Docker学习(5)—— 在Docker上安装软件


    一. 安装Tomcat

    1. 下载最新版 

    (1) 拉取Tomcat镜像

    docker pull tomcat

    (2) 查看是否拉取到Tomcat镜像

    docker images tomcat

    (3) 创建Tomcat容器并启动

    docker run -d -p 8080:8080 tomcat

    这时访问tomcat首页报404错误,有以下两个原因:①防火墙未关闭8080端口;②由于最新版的版本问题,需要执行步骤(4)

    (4) 把webapps.dist目录重命名为webapps

    ①查看Tomcat容器id

    docker ps

    ②进入Tomcat容器内并以命令行交互

    docker exec -it 容器ID /bin/bash

    ③删掉原本的webapps目录

    rm -rf webapps

    ④将webapps.dist目录重命名为webapps

    mv webapps.dist webapps

    这时访问tomcat首页就可以访问到了 

    2. 下载Tomcat8版本

    (1) 拉取Tomcat镜像

    docker pull billygoo/tomcat8-jdk8

    (2) 查看是否拉取到Tomcat镜像

    docker images tomcat

    (3) 创建Tomcat容器并启动

    docker run -d -p 8080:8080 billygoo/tomcat8-jdk8

    这时访问tomcat首页,可以访问到

    二. 安装MySQL

    1. 简单版 

    (1) 拉取mysql镜像

    docker pull mysql

    (2) 查看是否拉取到mysql镜像

    docker images mysql

    (3) 创建mysql容器并启动

    docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql

    如果端口被占用,则杀死占用3306端口的进程(如果进程杀不掉,说明Mysql 启动了守护进程,我们需要将其关闭掉:service mysqld stop) 

    (4) 进入正在运行的mysql容器并以命令行交互

    docker exec -it 容器ID /bin/bash

    (5) 登录mysql数据库 

    mysql -uroot -p

    外部(windows)也可以通过本机ip和3306端口号连接到该容器内的mysql,但是会存在中文乱码

    (6) 查看字符集编码

    SHOW VARIABLES LIKE 'character%';

     可以看到字符编码为latin,我们需要将其改完utf8

    2. 实际应用版

     为了防止数据库内的数据丢失,需要使用容器卷。

    (1) 拉取mysql镜像

    docker pull mysql

    (2) 查看是否拉取到mysql镜像

    docker images mysql

    (3) 创建mysql容器并启动

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

    (4) 解决中文乱码问题

    在容器外执行以下步骤: 

    ①在/usr/mysql/conf目录下创建my.cnf文件

    vim /usr/mysql/conf/my.cnf

    ②添加以下内容

    1. [client]
    2. default_character_set=utf8
    3. [mysqld]
    4. collation_server=utf8_general_ci
    5. character_set_server=utf8

    (5) 重启mysql容器

    docker restart 容器ID

    (6)  进入正在运行的mysql容器并以命令行交互

    docker exec -it 容器ID /bin/bash

    (7) 登录mysql数据库 

    mysql -uroot -p

    (8) 查看字符集编码

    SHOW VARIABLES LIKE 'character%';

     可以看到字符集编码已经改完utf8

    由于有容器卷,就算该容器被删了,由于容器卷和本机有数据映射,再创建一个新的容器,只要该容器还添加相同的容器卷,就会再次与本机上的数据互通,能够获得之前的数据

    三. 安装Redis

    1. 简单版 

    (1) 拉取redis镜像

    docker pull redis

    (2) 查看是否拉取到redis镜像

    docker images redis

    (3) 创建redis容器并启动

    docker run -d -p 6379:6379 redis

    (4)  进入正在运行的redis容器并以命令行交互

    docker exec -it 容器ID /bin/bash

    (5) 连接redis服务

    redis-cli

    2. 实际应用版

     为了防止数据库内的数据丢失,需要使用容器卷。

     (1) 拉取redis镜像

    docker pull redis

    (2) 查看是否拉取到redis镜像

    docker images redis

    (3) 在本机下创建一个/app/redis目录

    mkdir -p /app/redis

    (4) 将本机上原本的redis的conf文件复制到/app/redis目录下

    cp /usr/local/redis-4.0.0/redis.conf /app/redis

    即在本机上下载的redis的初始配置文件redis.conf文件复制到 /app/redis目录下

    (5) 修改/app/redis目录下的redis.conf文件内容

    ①设置为需要密码连接:(1)进入/app/redis目录,打开配置文件:vim redis.conf;(2)查找pass:/requirepass foobared;(3)将文件中的#requirepass foobared改为requirepass 123456(将注释放开,并将密码改为123456)

    ②设置远程连接:1)进入/app/redis目录,打开配置文件:vim redis.conf;(2)查找bind:/bind;(3)将文件中的bind 127.0.0.1注释掉,#bind 127.0.0.1

    ③daemonize no:(1)进入/app/redis目录,打开配置文件:vim redis.conf;(2)查找daemonize:/daemonize;(3)将文件中的daemonize yes改为daemonize no,或者将daemonize yes屏蔽,因为该配置和docker run中-d参数冲突,会导致容器一直启动失败

    (6) 创建redis容器并启动

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

    (7)  进入正在运行的redis容器并以命令行交互

    docker exec -it 容器ID /bin/bash

    (8) 连接redis服务

    redis-cli -a 123456
  • 相关阅读:
    【bug】内存占用过高,当前为[61G]
    一篇文章搞清楚Redis 缓存预热,缓存击穿,缓存雪崩,缓存穿透。
    uniapp移动端地图,点击气泡弹窗并实现精准定位
    OpenGL 波浪特效
    CSP202206-1 归一化处理 (C/C++)
    离散傅里叶变换(DFT)
    基于AE-Tiny YOLOV3的小目标检测模型
    华为设备配置VRRP负载分担
    Python(一)基础入门
    Collection和Iterator接口
  • 原文地址:https://blog.csdn.net/Archer__13/article/details/128040832