1. 下载Tomcat镜像
首先可以去官网查看想要下载的tomcat版本:https://hub.docker.com/_/tomcat
官方的使用(不推荐):
# 官方文档解释
# -it :交互模式
# --rm:容器启动成功并退出以后容器就自动移除,一般在测试情况下使用!
docker run -it --rm tomcat
推荐先下载镜像再使用,如下:
[root@localhost /]# docker pull tomcat
# 测试是否下载成功docker images
[root@localhost /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat latest 040bdb29ab37 3 weeks ago 649MB
nginx latest f6d0b4767a6c 3 weeks ago 133MB
centos latest 300e315adb2f 8 weeks ago 209MB
[root@localhost /]#
2. 启动
把容器外部的3355映射给容器内部的8080
# -d 后台运行
# --name 给容器起名字
# -p 暴露端口。宿主机端口:容器内部端口
docker run -d -p 3355:8080 --name tomcat01 tomcat
3. 进入Tomcat
# 进入Tomcat
[root@localhost /]# docker exec -it tomcat01 /bin/bash
root@90c144b3aceb:/usr/local/tomcat# ls
BUILDING.txt NOTICE RUNNING.txt lib temp work
CONTRIBUTING.md README.md bin logs webapps
LICENSE RELEASE-NOTES conf native-jni-lib webapps.dist
ll#出错,说明官方的Tomcat连ll命令都没有,命令被阉割
root@90c144b3aceb:/usr/local/tomcat# ll
bash: ll: command not found
root@90c144b3aceb:/usr/local/tomcat#
ls -al # 发现存在webapps目录(tomcat项目都放在webapp)
root@90c144b3aceb:/usr/local/tomcat# ls -al
total 128
drwxr-xr-x. 1 root root 30 Jan 13 08:25 .
drwxr-xr-x. 1 root root 20 Jan 13 08:19 ..
-rw-r--r--. 1 root root 18982 Dec 3 11:48 BUILDING.txt
-rw-r--r--. 1 root root 5409 Dec 3 11:48 CONTRIBUTING.md
-rw-r--r--. 1 root root 57092 Dec 3 11:48 LICENSE
-rw-r--r--. 1 root root 2333 Dec 3 11:48 NOTICE
-rw-r--r--. 1 root root 3257 Dec 3 11:48 README.md
-rw-r--r--. 1 root root 6898 Dec 3 11:48 RELEASE-NOTES
-rw-r--r--. 1 root root 16507 Dec 3 11:48 RUNNING.txt
drwxr-xr-x. 2 root root 4096 Jan 13 08:25 bin
drwxr-xr-x. 1 root root 22 Feb 5 15:40 conf
drwxr-xr-x. 2 root root 4096 Jan 13 08:25 lib
drwxrwxrwx. 1 root root 177 Feb 5 15:40 logs
drwxr-xr-x. 2 root root 134 Jan 13 08:25 native-jni-lib
drwxrwxrwx. 2 root root 30 Jan 13 08:25 temp
drwxr-xr-x. 2 root root 6 Jan 13 08:25 webapps
drwxr-xr-x. 7 root root 81 Dec 3 11:45 webapps.dist
drwxrwxrwx. 2 root root 6 Dec 3 11:43 work
进入webapps,却发现webapps是空的
root@90c144b3aceb:/usr/local/tomcat# cd webapps
root@90c144b3aceb:/usr/local/tomcat/webapps# ls
root@90c144b3aceb:/usr/local/tomcat/webapps#
上述操作之后我们不难发现两个问题:
- linux命令少了
- 没有webapps
导致上述问题出现的原因:官方的镜像是阉割版的,默认是最小的镜像,会把所有不必要的都剔除掉。保证最小可运行的环境
接下来我们开始在webapps下部署一些项目
执行命令如下:
cd ..
ls # 发现有webapps.list
cd webapps.dist
ls# 发现有root,因此我们可以把webapp.list的内容复制到webapps或把webapps.list改个名字
cd ..
cp -r webapps.dist/* webapps # 把webapps.dist下的所有内容拷贝到webapps下
cd webapps
ls
至此相当于我们成功在webapps下部署了一些项目
整个执行过程
root@90c144b3aceb:/usr/local/tomcat/webapps# cd ..
root@90c144b3aceb:/usr/local/tomcat# ls
BUILDING.txt NOTICE RUNNING.txt lib temp work
CONTRIBUTING.md README.md bin logs webapps
LICENSE RELEASE-NOTES conf native-jni-lib webapps.dist
root@90c144b3aceb:/usr/local/tomcat# cd webapps.dist
root@90c144b3aceb:/usr/local/tomcat/webapps.dist# ls
ROOT docs examples host-manager manager
root@90c144b3aceb:/usr/local/tomcat/webapps.dist# cd ..
root@90c144b3aceb:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@90c144b3aceb:/usr/local/tomcat# cd webapps
root@90c144b3aceb:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
root@90c144b3aceb:/usr/local/tomcat/webapps#
思考题:我们部署项目每次都需要进入容器十分麻烦,若可以在容器外部提供一个映射路径,webapps,在外部放置项目,就自动同步到内部将十分方便
如今的docker包含了tomcat+网站,若把容器删了将面临着删库跑路的风险。容易想到docker中安装mysql也是不安全的(把docker容器删除掉,同样面临删库跑路风险)。因此急需解决