复制右侧的命令即可下载最新版的 Tomcat 。
$ docker pull tomcat
Tomcat 的镜像还算是比较大的,一共 680 MB 。
docker images
查看是否有拉取到 Tomcat 镜像。$ docker images -a
$ docker run -d -p 8080:8080 --name t1 tomcat:latest
这一步的 Docker 命令是比较复杂的,各个可选项的说明如下。
可选参数 | 说明 |
---|---|
-p | 设置端口映射,宿主机端口:容器端口 |
-P | 随机分配端口 |
-i | 前台交互式启动,通常与 -t 配合使用 |
-t | 启动容器内的伪终端,通常与 -i 配合使用 |
-d | 后台守护式启动 |
–name | 为容器命名 |
查看正在运行的容器。
$ docker ps
Tomcat 容器 t1
已经成功运行了。
注意,确保你的宿主机防火墙关闭或者开放了 8080 端口。
如果你是新手,很懒,我建议你直接关闭宿主机的防火墙:
$ systemctl stop firewalld
$ systemctl disable firewalld
$ firewall-cmd --reload
如果你在企业,不能关闭防火墙,那就只放开 Tomcat 的端口 8080 :
$ firewall-cmd --zone=public --remove-port=8080/tcp --permanent
查看宿主机已经放开的端口:
$ firewall-cmd --zone=public --list-ports
在 Windows 电脑上打开浏览器,地址栏输入:
http://192.168.168.101:8080
但是访问失败,这是因为最新版的 Tomcat 在首页上的访问是不一样的。
【解决办法】
首先以前台交互式进入 Tomcat 容器 t1
中。
$ docker exec -it t1 /bin/bash
查看当前目录。
$ ls -l
所有网页资源都应该在 webapps
目录下,进入看看。
$ cd webapps
$ ls -l
发现是空的,这就解释了为什么没办法访问 Tomcat 猫首页了。新版的 Tomcat 的猫首页放在了 webapps.dist
里,我们只需要把 webapps
目录删除,再把 webapps.dist
重命名为 webapps
即可。
$ rm -rf webapps
$ mv webapps.dist webapps
再次在浏览器中访问:
http://192.168.168.101:8080
成功访问 Tomcat 首页。此时也可以发现 Tomcat 版本是 10.0 ,算是比较高的版本了,一般现在企业用的还都是 8 或 9 。
正如上面所演示的,最新的 Tomcat 10 在主页上的改动对新手是不太友好的。在企业中绝大部分都还在用 Tomcat 8.0 或 9.0 ,这已经够用了。因此,我们删除最新版的 Tomcat 容器和镜像,转而下载带有 JDK 8 的 Tomcat 8.0 版本镜像。
删除 Tomcat 容器:
$ docker rm -f t1
删除 Tomcat 镜像:
$ docker rmi -f tomcat:latest
拉取带有 JDK 8 的 Tomcat 8.0 版本镜像:
$ docker pull billygoo/tomcat8-jdk8
使用该镜像创建 Tomcat 容器实例 t8
。
$ docker run -d -p 8080:8080 --name t8 billygoo/tomcat8-jdk8:latest
在浏览器中访问:
http://192.168.168.101:8080
直接就可以访问 Tomcat 的主页,不需要做任何修改。可以看到 Tomcat 版本是 8.0.53 ,比最新版的 Tomcat 10.0 对新手更友好。