前言
在《docker化你的java應(yīng)用(上)》中乌妙,我們已經(jīng)初步接觸了docker的核心概念與思想,本篇博客將對(duì)docker進(jìn)行實(shí)踐建钥,會(huì)介紹一些docker常用的命令藤韵,并通過(guò)docker化一個(gè)java項(xiàng)目來(lái)進(jìn)一步認(rèn)識(shí)docker。
安裝docker
我們可以通過(guò)docker的官網(wǎng)(https://www.docker.com/community-edition#/download)來(lái)選擇在linux/mac/windows上進(jìn)行安裝熊经,不過(guò)在國(guó)內(nèi)下載比較慢泽艘。給大家提供一個(gè)高速下載地址:http://get.daocloud.io/欲险,具體的安裝方法,網(wǎng)上有比較多的教程匹涮,這里就不介紹了天试。
運(yùn)行docker版本的hello world
要運(yùn)行docker版本的hello world,那么自然需要先獲取鏡像焕盟,注意到docker官方給我們提供了一個(gè)鏡像中心:https://hub.docker.com/秋秤,一般公司內(nèi)部也會(huì)給我們提供一個(gè)公司專(zhuān)用的鏡像中心。
docker pull : 從鏡像倉(cāng)庫(kù)中拉取或者更新指定鏡像脚翘,鏡像除了名稱(chēng)之外灼卢,還有一個(gè)tag的概念,如果不提供tag来农,就是表示latest鞋真。
docker images : 列出本地鏡像。
docker run :創(chuàng)建一個(gè)新的容器并運(yùn)行一個(gè)命令
在圖中沃于,我們已經(jīng)看到了輸出涩咖,就說(shuō)明hello-world運(yùn)行成功了。
不可不知的docker網(wǎng)絡(luò)
在實(shí)際開(kāi)發(fā)中繁莹,要知道我們的服務(wù)檩互,一般是在某個(gè)端口進(jìn)行監(jiān)聽(tīng),一直在后臺(tái)運(yùn)行的咨演,那么就涉及到宿主機(jī)/宿主機(jī)中的容器它們之間的網(wǎng)絡(luò)問(wèn)題了闸昨。
docker的網(wǎng)絡(luò)類(lèi)型分3種:bridge,host薄风,none饵较。(這里和vmware的網(wǎng)絡(luò)設(shè)置部分非常相似)
bridge,就是橋接模式遭赂,docker容器會(huì)有自己獨(dú)立的network namespace循诉,也就是會(huì)有虛擬的ip和port,那么如何通過(guò)宿主機(jī)來(lái)訪問(wèn)容器內(nèi)部的端口呢撇他?這里就涉及到一個(gè)技術(shù):端口映射了茄猫。
host,不會(huì)分配獨(dú)立的network namespace逆粹,而是和宿主機(jī)進(jìn)行共用網(wǎng)絡(luò)募疮。
none,不使用網(wǎng)絡(luò)僻弹,docker容器不會(huì)和外界進(jìn)行通訊阿浓。
docker化一個(gè)springboot項(xiàng)目
要docker化一個(gè)項(xiàng)目,首先得提供一個(gè)Dockerfile文件蹋绽,然后進(jìn)行鏡像制作芭毙。我們直接來(lái)看一個(gè)實(shí)際項(xiàng)目中的Dockerfile示例: