0. 前言
本文在 Centos 上从零安装 docker,以及基于 docker 安装 nginx + tomcat,实现简单的反向代理功能
Mac 环境需要安装 VMware Fusion 虚拟机的,参考这篇文章
1. 安装并启动 docker
- 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
- 配置远程镜像仓库
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 安装 docker
# 查看版本
yum list docker-ce --showduplicates | sort -r
# 安装指定版本
yum install -y docker-ce-cli-24.0.7 docker-ce-24.0.7 containerd.io
- 设置自启动 docker 并查看运行状态
systemctl enable docker
systemctl restart docker
systemctl status docker
- 验证 docker
docker -v
2. 安装并启动 nginx
- 下载镜像
docker pull nginx:1.25
- 创建容器挂载目录
cd /root
mkdir nginx
cd nginx/
mkdir conf
docker run -d --name nginx nginx:1.25
docker cp nginx:/etc/nginx/nginx.conf /root/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /root/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html/ /root/nginx
- 删除容器
docker rm -f nginx
- 重新启动容器,这里用挂载的方式启动 nginx 容器
docker run -d -p 80:80 --name nginx --privileged --restart always -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /root/nginx/conf/conf.d:/etc/nginx/conf.d -v /root/nginx/html:/usr/share/nginx/html -v /root/nginx/log:/var/log/nginx nginx:1.25
3. 安装并启动 tomcat
- 查看 tomcat
docker search tomcat
- 下载镜像
# 不建议
docker pull tomcat
这里默认下载的是最近版本的 tomcat 镜像。建议指定特定版本的 tomcat 镜像,例如:
docker pull tomcat:9.0
- 查看下载的镜像
docker images
- 运行容器
docker run -d -p 8080:8080 --name tomcat tomcat:9.0
- 查看 tomcat 容器
docker ps |grep tomcat
- 查看 tomcat 是否正常运行。
curl localhost:8080
或者在浏览器上出现:
出现这种情况,是由于 tomcat 配置为空,进入到第七步
- 进入 tomcat 容器
docker exec -it tomcat bash
查看 webapps 目录是否为空
ll webapps
如果为空的话,则:
# 进入到 webapps.dist 目录下
cd webapps.dist/
# 将目录拷贝到 webapps 目录下
cp -r * ../webapps
再重新刷新浏览器:
4. 将 nginx 反向代理到 tomcat
- 在 host 配置域名。
我是 Mac 上用虚拟机运行 Linux,Mac 安装虚拟机教程:《Mac 安装 VMware Fusion 虚拟机软件》。所以对于我而言需要在 Mac 主机上配置 Linux 主机域名,以便在 Mac 浏览器中访问。对于 Windows 用虚拟机的话同样需要配置 hosts 域名。以 Mac 为例:
sudo vim /etc/hosts
安装你的真实 Linux 主机 ip 去配置,域名可以自定义:
ps:Linux 的 ip 如何查看:
ip a
# 或者
ifconfig
- 在 nginx 中配置 server 配置文件
在安装启动 nginx 的章节中,用挂载文件的方式启动了,因此仅需在宿主机上修改配置文件即可:
vi /root/nginx/conf/conf.d/default.conf
# 当然也可以进入到 nginx 容器中去修改配置
docker exec -it nginx bash
vi /etc/nginx/conf.d/default.conf
- 重启 nginx 服务
# 如果已经在 nginx 容器里的话,直接执行 nginx -s reload 即可
docker exec -it nginx nginx -s reload
- 查看效果
访问宿主机的80端口,则会转到 nginx 80端口,然后根据配置转到 tomcat 服务器上:
后续实现 nginx 挂载多台 tomcat 服务器,进一步可查阅 《docker 安装及配置 nginx + tomcat(二):负载均衡》
5. 参考
《安装 docker》
《访问 tomcat 404》
《docker 安装及配置 nginx + tomcat(二):负载均衡》