Docker入門酗捌,Part 1:方向
非常的開心呢诬,我們能夠一起來學(xué)習(xí)Docker。通過Docker入門手冊(cè)我們將一起學(xué)習(xí)了解以下幾個(gè)方面的內(nèi)容:
- 配置Docker環(huán)境
- 構(gòu)建鏡像并啟動(dòng)容器
- 運(yùn)行多個(gè)容器擴(kuò)容你的應(yīng)用
- 添加后端數(shù)據(jù)庫實(shí)現(xiàn)應(yīng)用棧
- 在生產(chǎn)環(huán)境上部署應(yīng)用
Docker相關(guān)概念
Dockers為開發(fā)運(yùn)維人員提供一個(gè)利用容器實(shí)現(xiàn)的開發(fā)胖缤,部署尚镰,運(yùn)行的統(tǒng)一平臺(tái)。利用Linux的容器技術(shù)實(shí)現(xiàn)應(yīng)用的部署稱之為容器化哪廓。容器并不是一門新的技術(shù)狗唉,但是通過容器來實(shí)現(xiàn)便捷的應(yīng)用部署卻是非常新穎的技術(shù)和方向。
容器化越來越流行是因?yàn)椋?/p>
- 靈活:即使是非常復(fù)雜的應(yīng)用也能夠?qū)崿F(xiàn)容器化
- 輕量:容器與主機(jī)是共用同一個(gè)內(nèi)核涡真,我們可以這么理解容器實(shí)際上就是主機(jī)上的一個(gè)進(jìn)程(當(dāng)然這個(gè)描述不一定準(zhǔn)確)
- 可變:我們能夠?qū)崿F(xiàn)快捷的云部署和更新
- 便捷:我們能夠在本地構(gòu)建分俯,在云端部署,在任何地方運(yùn)行
- 可擴(kuò)展:我們能夠自動(dòng)化的增加分布式容器的副本
-
堆棧:能夠?qū)崿F(xiàn)垂直的堆棧
鏡像和容器
通過運(yùn)行鏡像來啟動(dòng)一個(gè)容器哆料。鏡像是一個(gè)可執(zhí)行的包缸剪,包括運(yùn)行應(yīng)用所必需的所有東西(代碼,運(yùn)行環(huán)境东亦,依賴庫杏节,環(huán)境變量和配置文件等)
一個(gè)容器就是運(yùn)行鏡像的實(shí)例。在Linux環(huán)境下我們可以通過命令docker ps
來查看所有正在運(yùn)行的容器
容器和虛擬機(jī)
容器運(yùn)行于原生的主機(jī)系統(tǒng)中并與其他容器共同使用主機(jī)內(nèi)核典阵。每個(gè)容器都是獨(dú)立運(yùn)行的進(jìn)程奋渔,不占用任何不必要的內(nèi)存,所以非常的輕量
相比而言萄喳,虛擬機(jī)則是通過虛擬機(jī)管理程序虛擬訪問主機(jī)資源運(yùn)行了一個(gè)完整的操作系統(tǒng)卒稳。一般情況下,虛擬機(jī)提供的運(yùn)行環(huán)境會(huì)比應(yīng)用程序?qū)嶋H需要的資源更多他巨。贊成資源的浪費(fèi)和環(huán)境的笨重充坑。
[圖片上傳失敗...(image-381cc3-1533459729457)]
[圖片上傳失敗...(image-3c6c54-1533459729457)]
準(zhǔn)備我們的Doker環(huán)境
該章節(jié)會(huì)通過而外一篇文章來介紹减江,請(qǐng)?jiān)谡緝?nèi)查找
測(cè)試Doker
- 運(yùn)行
docker --version
確保安裝是可用的版本 - 運(yùn)行
docker info
(或者docker version
,不添加--
)查看更多的docker安裝信息
為避免權(quán)限的問題捻爷,需要將用戶添加到docker組
測(cè)試Docker
- 我們從運(yùn)行一個(gè)非常簡(jiǎn)單的容器開始辈灼,運(yùn)行萬能的hello-world開始測(cè)試我們的安裝是否成功
docker run hello-world
,如果一切OK也榄,我們能夠在終端看到運(yùn)行成功的提示信息 - 查看本機(jī)上下面的鏡像信息
docker image ls
- 查看上文提到的hello-world容器信息巡莹,
docker container ls --all
(如果上文的hello-world容器一直在運(yùn)行,可以不用添加--all
選項(xiàng))
回顧
## 列出Docker命令行命令
docker
docker container --help
## 查看Docker版本和相關(guān)信息
docker --version
docker version
docker info
## 運(yùn)行Docker鏡像
docker run hello-world
## 查看鏡像
docker image ls
## 查看容器 (運(yùn)行中, 所有,所有關(guān)閉模式的)
docker container ls
docker container ls --all
docker container ls -aq
總結(jié)
容器化是CI/CD無縫的集成甜紫,例如:
- 應(yīng)用不再有系統(tǒng)的依賴(一處構(gòu)建降宅,多處運(yùn)行)
- 能夠?qū)σ寻l(fā)布的應(yīng)用任何一部分進(jìn)行更新
- 資源使用率得到優(yōu)化
使用Docker,擴(kuò)展應(yīng)用程序的就僅僅在于啟動(dòng)新的容器囚霸,而不是運(yùn)行笨重的VM主機(jī)