6、docker 常规安装简介
6.1 总体步骤
- 搜索镜像 (docker search xx)
- 拉取镜像 (docker pull xx)
- 查看镜像 (docker images xx)
- 启动镜像 (docker run -it -p 8080:8080 tomcat)
- 停止容器 (docker stop xx)
- 移除容器 (docker rmi -f xx)
6.2 安装tomcat
拉取tomcat 镜像
docker pull tomact
运行该容器至8080端口
docker run -d -p 8080:8080 --name t1 tomcat
访问首页 看看有没有成功 发现出现404页面
- 可能没有映射端口或者没有关闭防火墙 (很小可能)
- 把webapps.dist 目录换成webapps (因为新版的tomcat换掉了访问的目录)
重新进入tomcat终端 以此来排查问题
docker exec -it 07d56fc8f126 /bin/bash
进入目录
cd webapps
查看当前目录下文件 发现没有任何文件
ls -l
切换到上层目录
cd ../
删除目录 因为这个目录没有想要的文件
rm -r webapps
将有内容的文件改名为 webapps 让tomcat找到对应的文件
mv webapps.dist webapps
再次访问 发现可以正常访问
如果觉得修改最新版的太过于麻烦,那么可以放弃上面的操作,下载免修改版的
docker pull billygoo/tomcat8-jdk8
docker run -d-p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8
6.3 安装mysql
先拉取镜像 拉取一个5.7版本的mysql
docker pull mysql:5.7
6.3.1 简单操作
使用mysql 镜像 以3306端口打开 并配置mysql 的root密码为123456
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
进入mysql容器实例
docker exec -it 341f7322fd22 /bin/bash
运行mysql 输入密码后进入mysql操作端
mysql -u -root -p
之后可以进行一些基本的mysql命令操作、这里不作演示。 证明了读写操作在容器中的mysql依旧可以使用。
6.3.2 远程链接mysql
我的虚拟机是使用nat模式 参考下这篇文章 centos7 网络配置nat
在当前环境中查看本机ip (ens33网卡) (我的是192.168.2.102)
在主机上使用ping 命令可以ping通
记得关闭虚拟机上的防火墙
-
1、命令行界面输入命令“systemctl status firewalld.service”并按下回车键。
2、然后在下方可以查看得到“active(running)”,此时说明防火墙已经被打开了。
3、在命令行中输入systemctl stop firewalld.service命令,进行关闭防火墙。
4、然后再使用命令systemctl status firewalld.service,在下方出现disavtive(dead),这权样就说明防火墙已经关闭。
5、再在命令行中输入命令“systemctl disable firewalld.service”命令,即可永久关闭防火墙。
使用navicat 工具连接 虚拟机->centos7->docker容器->mysql,发现连接成功!!!
连接成功后、当我们插入中文数据的时候会出现报错(mysql 8已修复)。这是docker容器下mysql,我们没有对字符集编码进行修正。
6.3.3 mysql实战板 操作
通过之前的简单操作、我们可以成功的安装mysql,但是还是会出现很多的问题(中文乱码、数据备份、敏感数据据迁移等等问题) 所以我们需要挂载容器数据卷、避免误操作!
挂载容器数据卷
docker run -d -p 3306:3306 --privileged=true -v /soup/mysql/log:/var/log/myql -v /soup/mysql/data:/var/lib/mysql -v /soup/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
解决中文乱码
cd /soup/mysql/conf/
vim my.cnf
cat my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server =utf8
在mysql中重新查看
SHOW VARIABLES LIKE 'character%';
至此解决了mysql中文乱码问题、并且删除当前实例也不会清空之前的数据、因为数据已经挂载
6.4 安装redis
拉取镜像
docker pull redis:6.0.8
运行镜像、挂载容器数据卷
docker run -p 6379:6379 --name my_redis --privileged=true -v /app/redis/redis.conf:/etc/redis/redis.conf -v /app/redis/data:/data -d redis:6.0.8 redis-server /etc/redis/redis.conf
配置redis.conf 文件 参考此链接