實操:將一個spring boot項目部署到docker容器里運行
實驗需要的環境:
騰訊雲+Ubuntu 16.04 x64+idea+插件docker integration+daocloud
第一步,安裝操作系統
首先在騰訊雲上安裝一個干凈的Ubuntu系統
系統使用Ubuntu 16.04 64位
這里服務市場雖然有docker,但是版本都太低(1.8.2左右),現在的一些鏡像都不支持這些低版本的了,所以自己手動裝個
騰訊雲推薦使用ssh連接,配置好后就不用輸入登入密碼了
秘鑰可以在騰訊雲上創建,也可以在Xshell上創建
創建好密鑰之后,騰訊雲會給你一個私鑰下載,這個應該保存好
然后找到密鑰,綁定到主機
然后在xshell里面建立ssh連接,把用戶秘鑰配置上去,就是騰訊雲發給你的私鑰
然后成功連接上
第二步,搭建docker環境
由於網絡的原因。。。推薦在DaoCloud里安裝docker,國內鏡像快
首先安裝docker:
登錄到daocloud
這里可以使用一鍵腳本,方便快捷
下載地址,按照它的說明安裝
https://download.daocloud.io/Docker_Mirror/Docker
我使用了這個腳本安裝docker
這里可能會卡在-qq這個地方,這是網絡的原因,因為是外鏈。。ctrl+c,在運行,多試多等待就可以了
然后運行腳本
安裝完成后,提示如果想用非root用戶使用docker,應該將其加入docker組里面
把普通用戶加入組后,查看docker版本,發現安裝的是最新的版本,有點高。都18去了
然后配置鏡像加速器(不然pull鏡像會很慢)
也是使用的daocloud
地址:
http://www.daocloud.io/mirror#accelerator-doc
這里當時遇到了一個坑,由於使用的是騰訊雲服務市場里的鏡像(偷了裝docker的懶),然后由於版本太低,它這個腳本是無法正常執行的,它好像需要1.12版本以上吧。。
然后愉快的pull images了,這里run了一個rancher(docker編排用的,圖形化界面,方便管理)
這里提供一個rancher的中文文檔,有興趣研究研究:
http://rancher.com/docs/rancher/v1.6/zh/
發現pull的很快
需要注意docker的版本,不然安裝rancher會出問題,這點文檔里寫的很清楚
成功運行了rancher,當然,現在什么都還沒配置,但是說明docker是安裝好了的
第三步,給docker開啟遠程訪問
參考一份網上的資料
這里我把端口設置為了2375
然后保存文件,重啟服務即可
需要注意的是,如果在centOS7上搭建的docker,這個遠程連接應該這樣配置
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
- 1
查看網絡連接,發現2375端口已經被打開
如果發現還是遠程連不上,可以設置一些騰訊雲的安全策略和防火牆
至此,在Ubuntu上搭建docker環境完成!
附:
由於我系統是win7的,所以也來試試安裝docker,其實docker對win7的支持並不好(都是以虛擬機的形式運行的),推薦win10的系統
關於win7的安裝
首先下載Docker Toolbox
還是在daoyun下載的
然后運行這個安裝上去
這里也有個坑,需要注意virtualbox要5版本以上的,以往安裝過ensp,有個4版本的virtualbox,所以當時沒選virtualbox,所以會出問題
安裝完成!
如果點擊這個會提示找不到bash,在屬性里把自己的bash設置上去即可
更改c盤文件的路徑
運行起來,發現它的虛擬機默認位置在c盤
隨着pull的image越來越多,c盤空間越來越少,所以我把虛擬機磁盤文件移動到了e盤
在管理里面,找到虛擬介質管理器,選擇move,移動到其他盤上
這里不要直接文件操作,把disk.vmdk文件移動到其他盤,然后在導入,這樣會報錯,說uuid沖突的
然后配置鏡像源
在我的文檔里找到config.json
然后配置images源
成功運行docker!
第四步,在IDEA上安裝docker插件
Idea中可以下載docker插件,功能強大
官方文檔
https://www.jetbrains.com/help/idea/docker.html
在setting里找到這個插件,安裝上去
成功安裝插件
點擊+,新增一個docker服務器連接
需要注意的是win7的地址輸入,是https,並且是2376端口!這點官方文檔有寫到
要輸入相應的ip
win7的配置!!!
這樣子就可以啦
同理,雲服務器的,tcp連接,2375端口
連接成功
第五步,在IDEA上操作docker
這里我准備把一個小實驗放進docker容器跑
先寫一個dockerFile
這里注意到add寫的是相對路徑,所以jar包要在docker目錄下,不然build鏡像的時候會找不到文件
為了方便,干脆直接把dockerfile文件放在項目根目錄里,然后寫絕對路徑找到打包好的jar包
這里給了一個前置任務,先打包為jar包,再構建image
配置好就可以run了
運行方式選擇docker
構建鏡像中,由於是雲服務器,這里上傳鏡像需要一段時間,還是蠻快的
構建成功
通過docker ps命令可以看到當前上傳上去的鏡像已經被運行
成功訪問雲服務器!
Spring boot項目已經運行在docker上了!
補充:
docker插件更新之后更加方便部署了
選擇dockerfile
給run built image打鈎,然后綁定上端口,還可以預覽命令行
這樣配置好了之后,直接點idea的run,完成后雲服務器就自動運行這個spring boot應用了
附:
Spring boot項目打包成docker image
沒有這款插件也不要緊
使用一個mvn plugin,可以構建docker image,前提是要安裝docker環境
<plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> <configuration> <imageName>${docker.image.prefix}/${project.artifactId}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <!-- 解決win7 Connect to localhost:2375的問題的其中一種方式,注意要跟docker-machine env相一致 --> <dockerHost>https://192.168.99.100:2376</dockerHost> <dockerCertPath>C:\Users\admin\.docker\machine\machines\default</dockerCertPath> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
在win7環境下的配置,需要指定ip(因為是虛擬機)
雲服務器類似
執行maven命令
原理差不多,也是使用了一個插件,在package打包成jar包后,使用docker的mvn插件構建一個鏡像