-
TomCat
-
假如你要安装最新版的tomcat请看下面第一部分
第一部分:
- 先通过docker images 查看安装的镜像
- 使用docker pull tomcat,等待运行之后查看docker images
- 使用docker run -d -p 8080:8080 --name tom tomcat启动tomcat(注意如果你的电脑上已经启动了tomcat会出现8080端口冲突,可以先关掉原来的tomcat使用指令ps -ef | grep tomcat查看是否有tomcat进程,如果有可以使用kill -9 进程号或者进入tomcat的bin目录下cd /opt/tomcat/apache-tomcat-8.5.59/bin使用./shutdown.sh脚本指令停止)再次重新启动docker指令即可!
- 使用docker ps查看进程,此时访问tomcat地址会出现404界面不必担心,正常现象,最新版的tomcat服务器就是这样子,那么怎么改变呢?接下来看:
- 访问原因:
- 在tomcat服务器进入之后我们发现在webapps这个目录下是空的,正常情况下应该是有一个访问界面的,这就是因为新版的tomcat的webapps被放在了webapps.dist中了
-
解决问题(不解决也没关系都能用的):
-
我们退出到上一级目录,删除掉webapps并且把webapps.dist移动到webapps中就可以到正常界面了!(补充:在我们进入的每一个容器都相当于一个精简版的Linux内核可以操作简单的Linux指令)
假如你要安装指定版的tomcat请看下面第二部分
第二部分:
- 直接使用:docker pull billygoo/tomcat8-jdk8拉取镜像,拉取得是tomcat 8.x的版本
- 使用:docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8直接运行即可访问服务器不再报404
- 建议使用指定版本的tomcat更稳定(小技巧分享删除镜像释放磁盘空间方法:指令指令:docker ps -a | awk '{print $1}' | grep -v '128fb068d11f' | xargs docker rm,解释:docker ps -a 是列出所有的容器包括已经停止的,通过awk '{print $1}'拿到第一列数据即ID,grep -v '128fb068d11f'是表示你要排除的那些数据也就是你要保留的容器,最后通过xargs获取输入的数据即管道符输入的xargs docker rm进行删除)
-
MySQL(以5.7版本为例)
- 第一步拉取镜像:docker pull mysql:5.7
- 查看:docker images如果没出错就有了
- 接下来运行MySQL:docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 注意要有运行环境就是设置密码!(如果你的系统上已经启动了一个MySQL会产生端口冲突可以停止原来的MySQL服务:查看systemctl status mysqld停止服务:systemctl stop mysqld)
- 最好是使用一次docker ps查看是否确定已经启动!
- 进入MySQL容器操作MySQL:docker exec -it 035af3972f5f /bin/bash并且可以使用mysql -uroot -p在输入当时设置的密码即可!(在外部的可不短例如sqlyog也可以连接成功)
- 此时有个问题:就是在插入含有中文的数据时会出现乱码报错解决方案:在docker的MySQL中运行show variables like 'character%';显示出当前的MySQL的编码发现都是拉丁文;
还有一个问题:假如有一个“很贱的人”删除了你的容器:docker rm -f “容器id”,此时你的MySQL数据就全完了,只能跑路了,为了避免这样的事情发生,接下来会有解决方案:数据卷;
7.问题一(乱码问题)解决:通过下面问题二运行镜像之后在/alibaixiu/mysq/conf下面创建一个 文 件:vim my.cnf 在里面写入
-
[client] default_character_set=utf8 [mysqld] collation_server = utf8_general_ci character_set_server = utf8
就是把编码改为utf8;然后重启MySQL服务即可解决编码问题!查看编码:
-
注意:修改之后编码字符集之前的数不会生效只有在之后创建的参会生效,建议在启用容器之后第一件事就是修改编码!!!
-
问题二(删库跑路问题)解决:使用容器数据卷来进行一种备份使用指令:
-
Docker run -d -p 3306:3306 --privileged=true
-v /alibaixiu/mysql/log:/var/log/mysql
-v /alibaixiu/mysql/data:/var/lib/mysql
-v /alibaixiu/mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=root
--name mysql
mysql:5.7
(可以在宿主机上提前创建好一个目录/alibaixiu)
执行完这个命令之后就会有数据卷存在防止有删库跑路的行为破坏!
怎么使用数据卷恢复数据呢?接下来继续说:
没错,很简单!直接运行:
Docker run -d -p 3306:3306 --privileged=true
-v /alibaixiu/mysql/log:/var/log/mysql
-v /alibaixiu/mysql/data:/var/lib/mysql
-v /alibaixiu/mysql/conf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=root
--name mysql
mysql:5.7
即可,数据还是存在的!!!
好了!结束了!问题全部解决!各位去试一下吧!
-
Redis(以redis:6.0.8为例)
··如果你需要密码就找到requirepass ‘密码’开启注释即可!
··必须要做的:开启是否允许外部连接:注释掉#bind 127.0.0.1即可!
··必须要做的把daemonize yes注释掉或者改为no因为该配置会与 docker run中的-d冲突,导致 启动失败!
··是否要开启redis持久化appendonly yes可以做也可以不做!
注意这里的启动方式变了是redis-server /etc/redis/redis.conf是要让宿主机读取config文件来启动redis
启动之后查看ps:docker ps然后进入容器:docker exec -it myredis /bin/bash最后直接启动:redis-cli有密码就是:redis-cli -a 1234即可!
8.最后我们修改宿主机上的配置时对应的docker容易也会被同步,并且保证数据安全!
写在最后:每次安装软件都要实操,实践出真知!!!
- 准备好环境
- 同样redis拉取:docker pull redis:6.0.8
- Docker run -d -p 6379:6379 redis:6.0.8然后执行redis.cli就行了?注意这个命令不能达到是实战要求,这里就不废话了,直接上复杂强度!!
- 先新建一个redis的目录:mkdir -p /app/redis
- 拷贝一份redis.conf到我们的目录下:cp /myredis/redis.conf /app/redis 注意路径是个性化的!!!注意修改!!!
- 修改redis.conf文件:vim redis.conf;是否需要密码:
- 运行镜像:
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:6.0.8 redis-server /etc/redis/redis.conf
- 注意这里的启动方式变了是redis-server /etc/redis/redis.conf是要让宿主机读取config文件来启动redis
- 启动之后查看ps:docker ps然后进入容器:docker exec -it myredis /bin/bash最后直接启动:redis-cli有密码就是:redis-cli -a 1234即可!
- 最后我们修改宿主机上的配置时对应的docker容易也会被同步,并且保证数据安全!
写在最后:每次安装软件都要实操,实践出真知!!!