本文適合 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