年輕人的第一個 Docker 應(yīng)用,大大提高生產(chǎn)力!

Java技術(shù)棧
www.javastack.cn
關(guān)注閱讀更多優(yōu)質(zhì)文章
上一篇:年輕人的第一個 Spring Boot 應(yīng)用!
哈哈,標(biāo)題我抄了雷總的,不重要哦,重要的是 Docker 真的很年輕,雖然現(xiàn)在才不到 8 歲,但卻是個冉冉升起的巨星,火得一塌糊涂。
這幾年 Docker 實(shí)在太火了,Docker 是干嘛的?做 Java 的怎么能不知道 Docker?所以,本篇棧長帶大家來做第一個 Docker 應(yīng)用,你就有個基本認(rèn)識了。
可能有些人覺得 Docker 和自己沒多大關(guān)系,自己寫好代碼就行了,Docker 那是運(yùn)維用的東西,看完這篇,我想改變你的想法。
一、什么是 Docker?
Docker 是現(xiàn)在最主流的開源容器,遵循 Apache 2.0 協(xié)議,使用 GO 語言進(jìn)行開發(fā),始于 2013 年,現(xiàn)已加入 Linux 基金會。
Docker 的核心思想是:"Build?once, Run?anywhere",即:一次構(gòu)建,處處運(yùn)行,這里可以是一個操作系統(tǒng)、一個 Web 應(yīng)用,或者一個數(shù)據(jù)庫服務(wù)等。
我們可以將 Docker 理解為一個輕量級的沙盒,Docker 容器完全使用沙盒機(jī)制,每個容器內(nèi)都有其獨(dú)立運(yùn)行的環(huán)境和組件,容器之間是相互隔離互不影響的,也可以進(jìn)行容器間的通信。
Docker 支持所有主流的操作系統(tǒng),如:Linux/Mac/Windows,所有主流的云服務(wù)也支持 Docker,所以,我們可以將應(yīng)用及依賴、環(huán)境信息等打包到一個 Docker 容器中,可以很輕松的實(shí)現(xiàn)應(yīng)用發(fā)布、遷移等。
Docker 官網(wǎng):
https://www.docker.com/
Docker 代碼托管:
https://github.com/docker
二、安裝 Docker
Docker 有社區(qū)版、企業(yè)版。社區(qū)版是開源免費(fèi)的,企業(yè)版是收費(fèi)的,當(dāng)然也會有更牛逼的特性和服務(wù),一般的應(yīng)用社區(qū)版的足夠了。
Docker 的安裝十分簡單,棧長這里以 Mac 和 Docker 社區(qū)版為例作為安裝演示。
打開 Docker 開始頁:
https://www.docker.com/get-started

下載 Mac 版 Docker 安裝包直接安裝即可。
安裝完后使用 docker -v 命令進(jìn)行可以查看 Docker 版本:
$?docker?-v
Docker?version?19.03.13,?build?4484c46d9d、
使用 docker version 還可以看到完整版本信息:
docker?version
Client:?Docker?Engine?-?Community
?Cloud?integration??0.1.18
?Version:???????????19.03.13
?API?version:???????1.40
?Go?version:????????go1.13.15
?Git?commit:????????4484c46d9d
?Built:?????????????Wed?Sep?16?16:58:31?2020
?OS/Arch:???????????darwin/amd64
?Experimental:??????false
Server:?Docker?Engine?-?Community
?Engine:
??Version:??????????19.03.13
??API?version:??????1.40?(minimum?version?1.12)
??Go?version:???????go1.13.15
??Git?commit:???????4484c46d9d
??Built:????????????Wed?Sep?16?17:07:04?2020
??OS/Arch:??????????linux/amd64
??Experimental:?????false
?containerd:
??Version:??????????v1.3.7
??GitCommit:????????8fba4e9a7d01810a393d5d25a3621dc101981175
?runc:
??Version:??????????1.0.0-rc10
??GitCommit:????????dc9208a3303feef5b3839f4323d9beb36df0a9dd
?docker-init:
??Version:??????????0.18.0
??GitCommit:????????fec3683
看到 Docker 版本信息表示安裝成功了。
三、啟動 Docker
Mac 版本的 Docker 只要點(diǎn)擊應(yīng)用圖標(biāo)進(jìn)入就自動啟動了,也可以設(shè)置開機(jī)自動啟動。
Mac 版 Docker 官方就自帶了控制臺客戶端,通過 Dashboard 菜單進(jìn)入。

通過控制臺可以進(jìn)行容器、鏡像的管理、設(shè)置等。
總之 Docker 的安裝和啟動都非常簡單,不同的系統(tǒng)環(huán)境都可以輕松完成。
四、第一個 Docker 應(yīng)用
熟悉 Tomcat 的朋友都知道,Tomcat 安裝后 Webapp 下面會自帶一些 Web 項(xiàng)目。關(guān)于 Tomcat 系列教程可以關(guān)注公眾號Java技術(shù)棧搜索閱讀,這里不再展開。
Docker 也是如此,Docker 安裝完后也會自帶一些鏡像,可以在控制臺中看到,也可以使用docker images 命令查看本地所有 Docker ?鏡像。
如下圖所示,切換到 Images:
Docker 自帶了一個 docker tutorial 鏡像,這是一個學(xué)習(xí) Docker 的向?qū)хR像,本身是一個 Web 應(yīng)用的鏡像,怎么把它啟動起來呢?
鏡像只是一個只讀的靜態(tài)文件,不能運(yùn)行,容器才是鏡像的運(yùn)行實(shí)例,所以需要新增一個容器來運(yùn)行。
客戶端運(yùn)行
最簡單的方法是點(diǎn)擊該鏡像右邊的運(yùn)行按鈕:

在上面的對話框中填寫容器的必要信息,如這里容器的端口和映射本機(jī)的端口都是 80,最后點(diǎn)擊運(yùn)行按鈕。

這里 Docker 容器中多了一個剛才新建的 docker-tutorial 容器,并且運(yùn)行在 80 端口。
那么我們來訪問一下這個 Docker 應(yīng)用,通過該容器右側(cè)的打開瀏覽器或者輸入 http://localhost/ 進(jìn)行訪問:

恭喜你,已經(jīng)運(yùn)行成功了!
命令行運(yùn)行
客戶端操作只是輔助,命令行才是精髓,學(xué)習(xí) Docker 我們也要記住常用的命令,其實(shí)我們剛才新建容器、運(yùn)行容器都是通過這條命令一次完成的:
docker run -d -p 80:80 docker/getting-started
這樣就等同于基于鏡像新建容器、再運(yùn)行該容器。
簡單解釋下各個參數(shù)的意思:

也可以縮簡成:
docker run -dp 80:80 docker/getting-started
所以還是以這個鏡像為例,先在客戶端停掉該容器,然后再用命令來啟動下:
$?docker?run?-dp?80:80?docker101tutorial
9df38488adcc2a53dad65691854ffc603e1fb3e25954183b83200809805b0d93
啟動成功會輸出該容器的 ID.
通過 docker ps 命令可以查看所有正在運(yùn)行中的容器:
$?docker?ps
CONTAINER?ID????????IMAGE???????????????COMMAND??????????????????CREATED?????????????STATUS??????????????PORTS????????????????NAMES
9df38488adcc????????docker101tutorial???"/docker-entrypoint.…"???3?minutes?ago???????Up?3?minutes????????0.0.0.0:80->80/tcp???hopeful_gauss
可以看到,我們的 docker101tutorial 容器又運(yùn)行起來了,也可以正常訪問。
另外,通過 docker ps -a 命令可以查看所有容器。
更多 Docker?命令參考:
Docker 核心概念、安裝及常用操作命令
四、結(jié)語
本文棧長簡單介紹了下 Docker 的基本概念,Docker 的安裝和啟動,以及第一個 Docker 應(yīng)用的運(yùn)行。
有了 Docker 鏡像,我們就能在任何安裝有 Docker 的機(jī)器上運(yùn)行,不用再重復(fù)配置環(huán)境安裝依賴等,是不是很爽?
Docker 公共倉庫中還有許多官方提供好的鏡像,如:Nginx、MySQL、Redis 等,都可以直接就能拿來用,所以,別再說 Docker 只是運(yùn)維用的東西,和 Java 開發(fā)沒多大關(guān)系,用好它,我們開發(fā)效率杠杠的,也能提高我們的技術(shù)水平。
好了,第一個年輕人的 Docker 應(yīng)用就到這里了,后續(xù)棧長還會帶來更多 Docker 實(shí)用性的教程,比如 Spring Boot 的部署以及與 IDEA 的集成使用等,關(guān)注公眾號Java技術(shù)棧第一時間推送。
覺得不錯,在看、分享轉(zhuǎn)發(fā)一下,寫文章不易,需要你們的鼓勵,感謝各位老鐵們!
版權(quán)申明:本文系公眾號 "Java技術(shù)棧" 原創(chuàng),原創(chuàng)實(shí)屬不易,轉(zhuǎn)載、引用本文內(nèi)容請注明出處,禁止抄襲、洗稿,請自重,尊重他人勞動成果和知識產(chǎn)權(quán)。






關(guān)注Java技術(shù)??锤喔韶?/strong>


