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%';

Docker学习(5)—— 在Docker上安装软件_第1张图片

 可以看到字符编码为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

②添加以下内容

[client]
default_character_set=utf8
[mysqld]
collation_server=utf8_general_ci
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%';

Docker学习(5)—— 在Docker上安装软件_第2张图片

 可以看到字符集编码已经改完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

你可能感兴趣的:(Docker,Docker)