本文涉及到的項目:java
cloud-simple-docker:一個簡單的spring boot應用linux
Docker是一種虛擬機技術,準確的說是在linux虛擬機技術LXC基礎上又封裝了一層,能夠當作是基於LXC的容器技術。能夠把容器看作是一個簡易版的Linux環境(包括root用戶權限、進程空間、用戶空間和網絡空間等)和運行在其中的應用程序。容器是用來裝東西的,Docker能夠裝載應用自己及其運行環境進容器,這是一個很小的文件,而後把這個文件扔到任何兼容的服務器上就能夠運行,也是基於這一點,Docker能夠同時讓應用的部署、測試和分發都變得史無前例的高效和輕鬆!git
下面例子參考「Spring Boot with Docker」官方例子。web
1)創建一個簡單的應用,只有一個類,包含main方法,代碼以下:spring
@SpringBootApplicationdocker
@RestControllercentos
public class Application {瀏覽器
@RequestMapping("/")tomcat
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步,分別是建立鏡像、運行。
將編譯後的jar文件考到服務器某個目錄,這裏是tmp目錄。而後將Dockerfile也考到該目錄,最後進入到該目錄下運行命令:
docker build -t local/cloud-docker-hello .
別掉了後面的「.」符號,這個符號表示目錄,這個命令執行成功,你會看到如下界面:
運行成功後,就建立了一個鏡像,可使用docker images來查看該鏡像。
有了鏡像就能夠運行了,使用下面命令運行:
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 --permanent
firewall-cmd –reload
成功後可使用docker ps –a查看鏡像運行狀況:
local/cloud-docker-hello | latest | 3ef51d55eb27 | 22 minutes ago | 667.2 MB
能夠看到這個包括了java運行環境的web應用鏡像是667MB。
該步驟運行結果以下:
最後使用curl命令或者直接在瀏覽器打開,能夠直接測試該應用。使用curl命令以下:
返回:Hello Docker World
docker應用,水比較深,這裏只是舉一個hello world級別的例子。Spring Boot with Docker例子還提供了一個maven插件docker-maven-plugin,這個插件能夠直接將項目編譯爲docker鏡像。另外這個插件還可讓你結合jenkins完成項目的持續集成和自動部署。具體來講就是jenkins自動經過git或svn拉到工程代碼,而後使用maven進行編譯,再調用項目中的Dockerfile生成鏡像。如此以來無論是什麼應用,只須要部署docker就能夠了,那些配置,那些亂七八糟的環境搭建都不須要了。