本文中创建的容器会连接到自定义网络,有两个选择:
- 创建网络:参考 Docker——创建网络
- 忽略网络:移除命令中的参数
--network topeid-network
Apache Tomcat 软件是 Jakarta Servlet, Jakarta Server Pages, Jakarta Expression Language, Jakarta WebSocket, Jakarta Annotations and Jakarta Authentication 等规范的开源实现。而这些规范又是 Jakarta EE 平台的组成部分。
创建容器
- 拉取 Tomcat8 镜像。
pull tomcat:8-jdk8
8-jdk8: Pulling from library/tomcat
d1669123f281: Pull complete
7723b4ddeaef: Pull complete
76d9edfe8d91: Pull complete
a151c444d575: Pull complete
0b18e06f60c8: Pull complete
efbcba6506bb: Pull complete
c31997a26382: Pull complete
Digest: sha256:e672ce42a999669743ec21f444e5e8b65a089055382dfcc87bb152301efcd2d8
Status: Downloaded newer image for tomcat:8-jdk8
docker.io/library/tomcat:8-jdk8
- 运行 Tomcat8 容器。
docker run -d --network topeid-network --name tomcat8-temp -p 8080:8080 tomcat:8-jdk8
aa52b5e36ebee89e1ad55df47143d9cdb404071c83270e265f3fbac1747484b0
- 查看容器运行状态。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aa52b5e36ebe tomcat:8-jdk8 "catalina.sh run" 6 seconds ago Up 4 seconds 0.0.0.0:8080->8080/tcp tomcat8-temp
Tomcat 容器已经正常运行了。
- 创建挂载目录。
如果我们需要部署网站文件,就需要把所有相关文件拷贝到 Tomcat 容器里面。
如果我们需要查看 Tomcat 运行的日志,修改配置文件,也需要进入容器内部进行操作。
为了便于开发和运维,我们可以把部署Web应用的文件夹,日志文件夹和配置文件夹挂载到主机目录下。
首先,创建需要进行挂载文件的基础目录,比如, /your/path/tomcat.
然后,在基础目录下创建两个子目录:webapps, logs.
cd /your/path/tomcat
mkdir webapps logs
接着,从刚刚创建的 Tomcat 容器中拷贝配置文件目录到基础目录下面。
docker cp tomcat8-temp:/usr/local/tomcat/conf /your/path/tomcat
此时,可以停止并删除 tomcat8-temp 容器。
docker sotp tomcat8-temp
docker rm tomcat8-temp
或者
docker sotp tomcat8-temp && docker rm tomcat8-temp
- 再次运行 Tomcat8 容器。
在 macOS 或 Linux 系统中, 执行下列命令。
docker run -d \
--network topeid-network \
-p 8080:8080 \
--name tomcat8 \
-v $PWD/webapps:/usr/local/tomcat/webapps \
-v $PWD/logs:/usr/local/tomcat/logs \
-v $PWD/conf:/usr/local/tomcat/conf \
tomcat:8-jdk8
在 Windows 的命令行(cmd.exe)中,执行下列命令。
docker run -d ^
--network topeid-network ^
-p 8080:8080 ^
--name tomcat8 ^
-v %CD%/webapps:/usr/local/tomcat/webapps ^
-v %CD%/logs:/usr/local/tomcat/logs ^
-v %CD%/conf:/usr/local/tomcat/conf ^
tomcat:8-jdk8
- 查看容器运行状态。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e70275b6bb4a tomcat:8-jdk8 "catalina.sh run" 15 seconds ago Up 14 seconds 0.0.0.0:8080->8080/tcp tomcat8
- 查看容器挂载目录。
docker inspect --format='{{json .Mounts}}' tomcat8
[
{
"Type":"bind",
"Source":"/your/path/tomcat8/conf",
"Destination":"/usr/local/tomcat/conf",
"Mode":"",
"RW":true,
"Propagation":"rprivate"},
{
"Type":"bind",
"Source":"/your/path/tomcat8/logs",
"Destination":"/usr/local/tomcat/logs",
"Mode":"",
"RW":true,
"Propagation":"rprivate"},
{
"Type":"bind",
"Source":"/your/path/tomcat8/webapps",
"Destination":"/usr/local/tomcat/webapps",
"Mode":"",
"RW":true,
"Propagation":"rprivate"}
]
Source: 表示主机目录。Destination: 表示容器目录。