首頁>技術>

最近入職新的公司了,所以更新速度比較慢。大家見諒。

還是老規矩,看本章之前先把之前的文章都看一遍。絕對可以鞏固大家的知識,這一套系列課程,也是目前很多面試會遇到的一些核心問題。

本文涉及到的專案:

cloud-simple-docker:一個簡單的 spring boot 應用

Docker 是一種虛擬機器技術,準確的說是在 linux 虛擬機器技術 LXC 基礎上又封裝了一層,可以看成是基於 LXC 的容器技術。可以把容器看做是一個簡易版的 Linux 環境(包括 root 使用者許可權、程序空間、使用者空間和網路空間等) 和執行在其中的應用程式。容器是用來裝東西的,Docker 可以裝載應用本身及其執行環境進容器,這是一個很小的 檔案,然後把這個檔案扔到任何相容的伺服器上就可以執行,也是基於這一點,Docker 可以同時讓應用的部署、測 試和分發都變得前所未有的高效和輕鬆!

下面例子參考“Spring Boot with Docker”官方例子。 1)建立一個簡單的應用,只有一個類,包含 main 方法,程式碼如下: @SpringBootApplication@RestController

public class Application { @RequestMapping("/") public String home() {

return "Hello Docker World"; }

public static void main(String[] args) { SpringApplication.run(Application.class, args);

} }

2)建立 Dockerfile# 基於那個映象FROM daocloud.io/java:8# 將本地資料夾掛載到當前容器(tomcat使用)VOLUME /tmp# 拷貝檔案到容器ADD cloud-simple-docker-1.0.0.jar /app.jar# 開啟服務埠EXPOSE 8080# 配置容器啟動後執行的命令ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

這裡特別要注意,這裡的 FROM 採用國內的 docker 映象,如果連國外的 docker 映象下載,基本是不太可能下 載下來的,原因大家都知道。

有了 Dockerfile,就可以部署 docker 了。 3)部署 docker 示例

部署分為 2 步,分別是建立映象、執行。 l 建立映象

將編譯後的 jar 檔案考到伺服器某個目錄,這裡是 tmp 目錄。然後將 Dockerfile 也考到該目錄,最後進入到 該目錄下執行命令:docker build -t local/cloud-docker-hello .

別掉了後面的“.”符號,這個符號表示目錄,這個命令執行成功,你會看到以下介面:

執行後介面

執行成功後,就建立了一個映象,可以使用 docker images 來檢視該映象。 l 執行映象

  有了映象就可以運行了,使用下面命令執行:docker run -p 8080:8080 –t local/cloud-simple-docker

其中 8080:8080 表示本機埠對映到 Docker 實

例埠。如果本機埠沒有開啟,還需要開啟該埠,開啟 埠在 centos 7 中使用 firewall-cmd 命令:

firewall-cmd --zone=public --add-port=8080/tcp --permanentfirewall-cmd –reload成功後可以使用 docker ps –a 檢視映象執行情況: local/cloud-docker-hello | latest | 3ef51d55eb27 | 22 minutes ago | 667.2 MB 可以看到這個包括了 java 執行環境的 web 應用映象是 667MB。 該步驟執行結果如下:

啟動成功介面

最後使用 curl 命令或者直接在瀏覽器開啟,可以直接測試該應用。使用 curl 命令如下:curl http://localhost:8080返回:Hello Docker WorldSpring Boot with Docker 例子還提供了一個 maven 外掛 docker-maven-plugin,這個外掛可以直接將專案編譯為 docker 映象。另外這個外掛還可以讓你結合 jenkins 完成專案的持續整合和自動部署。具體來說就是 jenkins 自動通過 git 或 svn 拉到工程程式碼,然後使用 maven 進行編譯,再呼叫專案中的 Dockerfile 生成映象。如此以來 不管是什麼應用,只需要部署 docker 就可以了,那些配置,那些亂七八糟的環境搭建都不需要了,是很方便。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 資料庫基礎筆記-SQL