本文适合 docker 零基础,且但愿使用 docker 运行 Java Web 应用的人士。由于是傻瓜教程,这里没有使用 docker 的高级功能,本教程旨在用最简单方法实现目标。javascript
curl -sSL https://get.daocloud.io/docker | sh
workdir
workdir
中。编写 Dockerfile
在 workdir
中建立一个名为 Dockerfile 的文件,文件内容以下:java
FROM tomcat:7.0
MAINTAINER admin <admin@domain.com>
ADD ./*.war /usr/local/tomcat/webapps/ EXPOSE 8080复制代码
根据实际状况,该文件可能要进行一些修改。
下面对该 Dockerfile 进行详解:web
6.0.48-jre7, 6.0-jre7, 6-jre7, 6.0.48, 6.0, 6 (6/jre7/Dockerfile)
6.0.48-jre8, 6.0-jre8, 6-jre8 (6/jre8/Dockerfile)
7.0.73-jre7, 7.0-jre7, 7-jre7, 7.0.73, 7.0, 7 (7/jre7/Dockerfile)
7.0.73-jre7-alpine, 7.0-jre7-alpine, 7-jre7-alpine, 7.0.73-alpine, 7.0-alpine, 7-alpine (7/jre7-alpine/Dockerfile)
7.0.73-jre8, 7.0-jre8, 7-jre8 (7/jre8/Dockerfile)
7.0.73-jre8-alpine, 7.0-jre8-alpine, 7-jre8-alpine (7/jre8-alpine/Dockerfile)
8.0.39-jre7, 8.0-jre7, 8-jre7, jre7, 8.0.39, 8.0, 8, latest (8.0/jre7/Dockerfile)
8.0.39-jre7-alpine, 8.0-jre7-alpine, 8-jre7-alpine, jre7-alpine, 8.0.39-alpine, 8.0-alpine, 8-alpine, alpine (8.0/jre7-alpine/Dockerfile)
8.0.39-jre8, 8.0-jre8, 8-jre8, jre8 (8.0/jre8/Dockerfile)
8.0.39-jre8-alpine, 8.0-jre8-alpine, 8-jre8-alpine, jre8-alpine (8.0/jre8-alpine/Dockerfile)
8.5.9-jre8, 8.5-jre8, 8.5.9, 8.5 (8.5/jre8/Dockerfile)
8.5.9-jre8-alpine, 8.5-jre8-alpine, 8.5.9-alpine, 8.5-alpine (8.5/jre8-alpine/Dockerfile)
9.0.0.M15-jre8, 9.0.0-jre8, 9.0-jre8, 9-jre8, 9.0.0.M15, 9.0.0, 9.0, 9 (9.0/jre8/Dockerfile)
9.0.0.M15-jre8-alpine, 9.0.0-jre8-alpine, 9.0-jre8-alpine, 9-jre8-alpine, 9.0.0.M15-alpine, 9.0.0-alpine, 9.0-alpine, 9-alpine (9.0/jre8-alpine/Dockerfile)复制代码
将冒号后面的部分替换为要求的版本。构建镜像
首先请确认你的当前目录是 workdir
,而后执行命令:docker build -t <image name>:<tag> .
这里有两个参数。docker
<image name>
:这个是你要制做的镜像的名称,这个名称要求是英文,不得有特殊字符,好比说能够叫: mywebsite
<tag>
:这个是版本号,能够写为该 Web 项目的版本号,好比说:v0.1
注意,该命令的最后有一个 .
, 这个表示 Dockerfile 所在的路径(更新:经评论中的朋友提醒,此处的路径应表述为 Dockerfile 要运行的 context
, 如上文所述,Dockerfile 和编译镜像所需的 war 包都在这个路径中),由于你的当前目录就是 workdir
,而 Dockerfile 在 workdir
里,因此这里只须要写 .
表示当前目录便可。
那么在这个例子中,这条命令就应该写成:docker build -t mywebsite:v0.1 .
当看到 Successfully built 01a82bc1cf37
的字样时,说明镜像构建成功了,这时经过 docker images
命令能够看到刚才制做的镜像。windows
启动容器
最后一步是启动容器,启动命令为:docker run -d -p <host port>:<container port> <image name>:<tag>
tomcat
<host port>
:这个是你暴露在宿主机上的端口,也就是最终用户访问的端口,好比说 8081。<container port>
:这个是容器内对应的端口,也就是咱们上面写在 Dockerfile 中 EXPOSE 一行的端口号,此例中为 8080。<image name>&<tag>
参见上一节,此例中为:mywebsite:v0.1
因此这条命令在此例中应当写成:docker run -d -p 8081:8080 mywebsite:v0.1
网络
若是你的应用须要环境变量,则能够在 docker run 后面添加 -e "<key1>=<value1>" -e "<key2>=<value2>" ...
app
至此,你的 Web 应用已经跑在 docker 容器里了,相应地你能够经过 <host ip>:<host port>/
访问 tomcat 和你的网站。dom