前言:
Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
Docker由三部分組成:
倉庫(Repository):Docker用於存放鏡像文件的倉庫
鏡像(image):就是構建容器的源代碼,是一個只讀的模板,由一層一層的文件系統組成的,類似於虛擬機的鏡像
容器(Container):是由Docker鏡像創建的運行實例,類似於虛擬機,容器之間是相互隔離的,包含特定的應用及其所需的依賴文件
1、Docker 安裝
前提條件:
Docker 要求 Ubuntu 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的 Ubuntu 版本是否支持 Docker。
通過 uname -r 命令查看你當前的內核版本:
1.1、切換到root用戶,執行下apt-get update 將apt-get更新到最新版本
1.2、使用apt-get install -y docker.io 下載docker
1.3、下載好docker后,可以使用docker version查看docker版本:
1.4 如果1.3中提示無法連接到docker deemon,可以使用service docker start 啟動docker服務
1.5 測試運行hello-world
出現上圖結果,表名ubuntu docker安裝成功
2、下載tomcat鏡像
2.1 使用 docker images 來列出本地主機上的鏡像
各個選項說明:
1)REPOSITORY:表示鏡像的倉庫源
2)TAG:鏡像的標簽
3)IMAGE ID:鏡像ID
4)CREATED:鏡像創建時間
5)SIZE:鏡像大小
同一倉庫源可以有多個 TAG,代表這個倉庫源的不同個版本,如tomcat倉庫源里,有7.0、8.0等多個不同的版本,我們使用 REPOSITORY:TAG 來定
義不同的鏡像。如果你不指定一個鏡像的版本標簽,將默認使用 latest 版本
2.2 使用 docker pull 命令來下載(鑒於國內網絡問題,后續拉取 Docker 鏡像十分緩慢,我們可以需要配置加速器來解決,我使用的是網易的鏡像
地址:https://c.163.com/hub#/m/home/)
2.3 再使用 docker images 查看本地的docker 鏡像
3、制作鏡像
3.1 在用戶目錄下,創建docker目錄,在docker目錄下,創建一個images目錄:
3.2 將java web工程打包成war文件,導出方法可參考:https://blog.csdn.net/gaohuanjie/article/details/52354367)
樓主導出的war文件為seckill.war,然后放到images目錄下
3.3 在docker目錄下,創建一個Dockerfile文件。文件內容如下:
1、FROM,指定使用哪個鏡像源
2、MAINTAINER ,指定所有者及郵箱(也可以不寫)
3、COPY ,將本地文件(seckill.war)拷貝到tomcat/webapps下
3.4 通過 docker build 命令來構建一個鏡像
參數說明:
1)-t 指定要創建的目標鏡像名(這里指定鏡像名為seckill,tag為0.0.1)
2). Dockerfile 文件所在目錄
3.5 使用docker images 查看創建的鏡像已經在列表中存在,鏡像ID為8eeedbd84830
4、運行容器
4.1 使用 docker run 命令來在容器內運行一個應用程序:
參數說明:
1)-d 后台運行容器,並返回容器ID (下面的893b開頭的id就是容器id)
2)-p 是容器內部端口綁定到指定的主機端口(這里是docker中tomcat的8080映射到主機的8888端口)
4.2 使用 docker ps 列出容器
可以看到容器中有seckill鏡像,容器id取的4.1中返回值的前12位
4.3 在瀏覽器中訪問8888端口:
可以正常訪問我們的查詢列表,表示我們的seckill鏡像在容器中運行正常
docker更多指令可參考:http://www.runoob.com/docker/docker-command-manual.html