用vue-cli做的网站,做网站的一些费用,51源码网,网站建设误区图目录
一、安装tomcat
1. tomcat镜像的获取
2. docker创建容器实列
3. 访问测试 404错误
4. 解决方案
5. 使用免修改版容器镜像
5.1. 运行实列的创建
5.2. 出现问题及解决#xff1a;
6. 验证 OK 一、安装tomcat
1. tomcat镜像的获取
docker search tomcat #docker …目录
一、安装tomcat
1. tomcat镜像的获取
2. docker创建容器实列
3. 访问测试 404错误
4. 解决方案
5. 使用免修改版容器镜像
5.1. 运行实列的创建
5.2. 出现问题及解决
6. 验证 OK 一、安装tomcat
1. tomcat镜像的获取
docker search tomcat #docker hub搜索镜像
docker pull tomcat #拉取镜像
docker images #查看是否拉取成功
2. docker创建容器实列
[rootrockylinux ~]# docker run -d --name install_tomcat -p 8080:8080 tomcat
877e614c238979960a211196f368caa034cf9f5c6b4ac5c02b1470e442e45db1
[rootrockylinux ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
877e614c2389 tomcat catalina.sh run 5 seconds ago Up 5 seconds 0.0.0.0:8080-8080/tcp, :::8080-8080/tcp install_tomcat
[rootrockylinux ~]# docker exec -it 877e614c2389 /bin/bash
root877e614c2389:/usr/local/tomcat#
3. 访问测试 404错误 4. 解决方案
把webapps.dist目录换成webapps
root877e614c2389:/usr/local/tomcat# ls -l
total 132
…………………………………………………………………………………………………………………………
drwxr-xr-x. 2 root root 6 Dec 22 2021 webapps
drwxr-xr-x. 7 root root 81 Dec 2 2021 webapps.dist
drwxrwxrwx. 2 root root 6 Dec 2 2021 work
root877e614c2389:/usr/local/tomcat# rm -rf webapps
root877e614c2389:/usr/local/tomcat# mv webapps.dist webapps
将 webapps.dist 目录重命名为 webapps 的目的是恢复 Tomcat 的默认应用和配置这些默认应用和配置通常包含一个管理界面或欢迎页面能够确认 Tomcat 正常工作
5. 使用免修改版容器镜像
5.1. 运行实列的创建
docker pull billygoo/tomcat8-jdk8
docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8
5.2. 出现问题及解决
问题docker run -d 之后docker ps 查看不掉运行的容器实列直接退出
解决流程直接 -it 进入容器手动运行服务脚本
root4f06e97e71c8:/usr/local/tomcat# ./bin/catalina.sh run
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/lib/jvm/java-8-openjdk-amd64
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
library initialization failed - unable to allocate file descriptor table - out of memoryAborted (core dumped)
root4f06e97e71c8:/usr/local/tomcat#
问题的核心是 library initialization failed - unable to allocate file descriptor table - out of memory。这表明在尝试初始化库时由于内存不足无法分配文件描述符表。
宿主机查看内存充足 内存OK
free -m
如果内存不足可以手动给容器分配 docker run -d -p 8080:8080 --name mytomcat8 --memory2g billygoo/tomcat8-jdk8
查看系统文件描述符
[rootrockylinux ~]# ulimit -n
1024
当前的文件描述符限制为 1024这对于运行 Tomcat 这样的应用程序可能不足。需要增加这个限制
宿主机配置
vim /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536vim /etc/sysctl.conf
fs.file-max 2097152sysctl -p 应用配置重新登录系统或重启系统后检查文件描述符限制是否已经生效
ulimit -n
文件描述符限制
文件描述符是操作系统用来管理对文件、网络连接等资源的引用。每个进程都有一个文件描述符限制即它可以同时打开的文件、网络连接等资源的数量
*: 这表示配置适用于所有用户。soft nofile 65536: 设置软限制表示单个用户进程可以打开的最大文件描述符数量为 65536。软限制可以在会话期间临时增加但不能超过硬限制。hard nofile 65536: 设置硬限制表示单个用户进程可以打开的最大文件描述符数量的上限为 65536。硬限制只能由超级用户增加。
这些修改确保系统允许用户进程包括 Docker 容器中的进程打开足够多的文件描述符以防止因为文件描述符数量不足而导致的服务中断或性能问题。Tomcat 服务器在处理大量连接时可能需要大量文件描述符因此增加这个限制是必要的
系统内核参数配置
fs.file-max: 这个参数设置系统范围内的最大文件描述符数量。2097152 表示系统最多可以同时打开 2097152 个文件描述符增加 fs.file-max 参数的值确保系统内核允许足够多的文件描述符供所有用户和进程使用。这对高负载服务器尤为重要能够防止系统因为文件描述符耗尽而发生崩溃。
Docker Daemon 配置
vim /etc/docker/daemon.json
{default-ulimits: {nofile: {Name: nofile,Hard: 65536,Soft: 65536}}
}重启docker daemon
systemctl daemon-reload
systemctl restart docker
注意此处 , ”不要忘掉因为是json文件我的完整配置如下 Docker Daemon 配置
default-ulimits: 配置 Docker 守护进程的默认资源限制。nofile: 配置容器的文件描述符限制。Name: 资源类型这里是文件描述符。Hard: 硬限制65536。Soft: 软限制65536。
确保 Docker 容器在启动时继承适当的文件描述符限制避免容器内应用因为文件描述符不足而发生错误。
为了确保系统和 Docker 容器内的应用程序能够稳定运行建议同时进行以下调整
上述操作做完之后重新doker run即可 6. 验证 OK