1. 搜索tomcat镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看当前所有镜像
ubuntu@VM-0-4-ubuntu:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 74435f89ab78 7 days ago 73.9MB
ubuntu 18.04 8e4ce0a6ce69 7 days ago 64.2MB
nginx latest 2622e6cca7eb 2 weeks ago 132MB
mysql latest be0dbf01a0f3 2 weeks ago 541MB
hello-world latest bf756fb1ae65 5 months ago 13.3kB

# 远程仓库搜索tomcat
ubuntu@VM-0-4-ubuntu:~$ sudo docker search tomcat
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tomcat Apache Tomcat is an open source implementati… 2759 [OK]
tomee Apache TomEE is an all-Apache Java EE certif… 79 [OK]

. . . . . .

2. 下载tomcat镜像

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 查看当前所有镜像
ubuntu@VM-0-4-ubuntu:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 74435f89ab78 7 days ago 73.9MB
ubuntu 18.04 8e4ce0a6ce69 7 days ago 64.2MB
nginx latest 2622e6cca7eb 2 weeks ago 132MB
mysql latest be0dbf01a0f3 2 weeks ago 541MB
hello-world latest bf756fb1ae65 5 months ago 13.3kB

# 下载版本为9.0的tomcat
ubuntu@VM-0-4-ubuntu:~$ sudo docker pull tomcat:9.0
9.0: Pulling from library/tomcat
e9afc4f90ab0: Pull complete
989e6b19a265: Pull complete
af14b6c2f878: Pull complete
5573c4b30949: Pull complete
fb1a405f128d: Pull complete
612a9f566fdc: Pull complete
cf63ebed1142: Pull complete
fbb20561cd50: Pull complete
e99c920870d7: Pull complete
b7f793f2be47: Pull complete
Digest: sha256:81c2a95e5b1b5867229d75255abe54928d505deb81c8ff8949b61fde1a5d30a1
Status: Downloaded newer image for tomcat:9.0
docker.io/library/tomcat:9.0

# 再次查看当前所有镜像,验证 nginx 是否安装成功
ubuntu@VM-0-4-ubuntu:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 74435f89ab78 7 days ago 73.9MB
ubuntu 18.04 8e4ce0a6ce69 7 days ago 64.2MB
tomcat 9.0 2eb5a120304e 2 weeks ago 647MB
nginx latest 2622e6cca7eb 2 weeks ago 132MB
mysql latest be0dbf01a0f3 2 weeks ago 541MB
hello-world latest bf756fb1ae65 5 months ago 13.3kB
ubuntu@VM-0-4-ubuntu:~$

DockerHub 官方的下载命令 : docker run -it --rm tomcat:9,其多用于测试,即表示当使用完 tomcat 容器后立即将其删除.

3.运行tomcat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 查看当前正在运行的容器
ubuntu@VM-0-4-ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

# 查看本地所有镜像
ubuntu@VM-0-4-ubuntu:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 74435f89ab78 7 days ago 73.9MB
ubuntu 18.04 8e4ce0a6ce69 7 days ago 64.2MB
tomcat 9.0 2eb5a120304e 2 weeks ago 647MB
nginx latest 2622e6cca7eb 2 weeks ago 132MB
mysql latest be0dbf01a0f3 2 weeks ago 541MB
hello-world latest bf756fb1ae65 5 months ago 13.3kB

# 以后台运行的方式启动tomcat : docker run -d <image name>
# -d : 后台运行,
# --name : 为容器起别名
# -p 9999:8080 : 暴露端口,-p 宿主机端口:容器内部端口
ubuntu@VM-0-4-ubuntu:~$ sudo docker run -d -p 9999:8080 --name MyTomcat tomcat
4001aad00b7579fb9ecee4e36477bd4868015655b6b0c414da8e403a0f683162

# 再次查看当前正在运行的容器,验证 tomcat 是否已经启动
ubuntu@VM-0-4-ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4001aad00b75 tomcat "catalina.sh run" 34 seconds ago Up 32 seconds 0.0.0.0:9999->8080/tcp MyTomcat

此时访问 http://ip:9999 页面如下图所示,这是因为 dockerhub 中的 tomcat 是被阉割( 例如缺少linux命令… )过的,所以相关配置文件并不完整.

为了访问 http://ip:9999 时能够看到 tomcat 首页,我们需要进入后台正在运行的 tomcat 容器中配置一下 webapps 中的内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 查看当前正在运行的所有容器
ubuntu@VM-0-4-ubuntu:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4001aad00b75 tomcat "catalina.sh run" 14 minutes ago Up 14 minutes 0.0.0.0:9999->8080/tcp MyTomcat

# 进入后台正在运行的 tomcat 容器,发现 webapps 目录下并没有文件
ubuntu@VM-0-4-ubuntu:~$ sudo docker exec -it MyTomcat /bin/bash
root@4001aad00b75:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
root@4001aad00b75:/usr/local/tomcat# cd webapps
root@4001aad00b75:/usr/local/tomcat/webapps# ls -la
total 12
drwxr-xr-x 2 root root 4096 Jun 10 08:17 .
drwxr-xr-x 1 root root 4096 Jun 10 08:17 ..

# 方式一 : 将 webapps.dist 目录下的文件复制到 webapps 目录中,然后刷新浏览器会发现能够正确显示 tomcat 首页( 如下图所示 )
# 方式二 : 将 webapps.dist 改名为 webapps 也可以达到与方式一相同的效果
root@4001aad00b75:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
root@4001aad00b75:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@4001aad00b75:/usr/local/tomcat# cd webapps
root@4001aad00b75:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager

# 最后学习完毕后记得停止 tomcat 容器哟
ubuntu@VM-0-4-ubuntu:~$ sudo docker ps # 查看当前正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4001aad00b75 tomcat "catalina.sh run" 35 minutes ago Up 34 minutes 0.0.0.0:9999->8080/tcp MyTomcat
ubuntu@VM-0-4-ubuntu:~$ sudo docker stop 4001aad00b75 # 根据id停止正在运行的容器
4001aad00b75
ubuntu@VM-0-4-ubuntu:~$ sudo docker ps # 再次查看当前正在运行的容器,验证 tomcat 容器是否已经停止运行
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ubuntu@VM-0-4-ubuntu

思考

以后部署项目后,如果每次修改配置都要进入容器中感觉是不是非常麻烦 ? 所以我们要做的是 : 在容器外部提供一个映射路径( 例如 webapps ),进而使得在外部放置的项目能够自动同步到内部容器中. 那么该怎么实现这个想法呢 ? ( 嘿嘿… 目前我也不知道该如何实现这个想法,等我回来更新吧哈哈哈哈 )