以下是在 Docker 中运行 Tomcat 并将 webapps 目录和日志目录映射到宿主机以及暴露 8080 端口的步骤:
在命令行中执行以下命令拉取 Tomcat 官方镜像:
root@hxstrive:~# docker pull tomcat Using default tag: latest latest: Pulling from library/tomcat eb993dcd6942: Pull complete ef6d67df44eb: Pull complete a6557c86db85: Pull complete ef80f85cafa0: Pull complete 9481abb39622: Pull complete 6eff7f04a2af: Pull complete 4f4fb700ef54: Pull complete b65ba9907e75: Pull complete Digest: sha256:c2f5450b66e82f44bcf9e90ba64bee6175e641cd5d03ae0dde64267b3cfed8d9 Status: Downloaded newer image for tomcat:latest docker.io/library/tomcat:latest
假设你要将宿主机的 /path/to/host/webapps 目录映射到容器的 /usr/local/tomcat/webapps 目录,将宿主机的 /path/to/host/logs 目录映射到容器的 /usr/local/tomcat/logs目录,可以执行以下命令:
root@hxstrive:~# docker run -d -p 8080:8080 --name tomcat1 -v /opt/wwwroot/webapps:/usr/local/tomcat/webapps -v /opt/wwwroot/logs:/usr/local/tomcat/logs tomcat 3c059c5e6cdb95c766cdaf8057e110cce156bb77df600e2ac1afddaf2410000f root@hxstrive:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3c059c5e6cdb tomcat "catalina.sh run" 5 minutes ago Up 5 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp tomcat1
命令说明:
--name tomcat1 为容器指定一个名称,这里是“tomcat1”,你可以根据自己的需求修改。
-p 8080:8080 将容器的 8080 端口映射到宿主主机的 8080 端口,以便外部可以访问 Tomcat。
-v /opt/wwwroot/webapps:/usr/local/tomcat/webapps 将宿主机的指定目录映射到容器中的 webapps 目录。
-v /opt/wwwroot/logs:/usr/local/tomcat/logs 将宿主机的指定目录映射到容器中的日志目录。
-d 表示以守护进程(后台)模式运行容器。
上面成功启动了容器,现在到宿主主机的 /opt/wwwroot/webapps 目录创建一个 ROOT 目录,然后在 ROOT 目录中创建 index.html 文件,如下:
# 创建目录 root@hxstrive:/opt/wwwroot/webapps# mkdir ROOT # 进入到 ROOT 目录 root@hxstrive:/opt/wwwroot/webapps# cd ROOT/ # 创建 index.html 文件 root@hxstrive:/opt/wwwroot/webapps/ROOT# echo '<h1>hxstrive.com</h1>' > index.html
然后访问 tomcat 服务,如下图:
注意:笔者使用 WSL2 安装 Ubuntu Linux,然后在 ubuntu 中安装 docker 服务,因此可以采用 🌐localhost:8080 进行访问。