一. 安装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
②添加以下内容
[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%';
可以看到字符集编码已经改完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