??Docker是作為新一代運(yùn)維必會(huì)的工具职祷。它是容器云時(shí)代的產(chǎn)物。
容器云是基于微服務(wù)框架產(chǎn)生的泄伪,微服務(wù)的部署離不開環(huán)境的搭建资厉。每次產(chǎn)品上線,環(huán)境的搭建總是最頭疼的事情。
??港口中的集裝箱就是容器云中的容器最好的比喻,不管你是汽車、飛機(jī)辜贵、大炮等,各種各樣的貨物都被封裝在集裝箱中归形,只要是集裝箱托慨,港口就能接收。
??產(chǎn)品就好像貨物暇榴,每種貨物需要的環(huán)境不同厚棵,你比如海鮮,需要冷凍蔼紧。汽車需要架子擺放婆硬,需要避震裝置〖槔化學(xué)物品需要隔離裝置等等彬犯。這種環(huán)境的搭建都被封裝在集裝箱之中(我們這里就是docker)。
??下面就來啟動(dòng)一個(gè)Docker所需要的步驟和其中涉及到的講述命令查吊。
安裝
這里只演示mac下安裝谐区,mac下安裝很簡(jiǎn)單,去官網(wǎng)找到它的下載地址逻卖。
啟動(dòng)
啟動(dòng)一個(gè)docker需要鏡像宋列。
- 鏡像
Docker 鏡像是一個(gè)特殊的文件系統(tǒng),除了提供容器運(yùn)行時(shí)所需的程序评也、庫炼杖、資源灭返、配置等文件外,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(如匿名卷坤邪、環(huán)境變量熙含、用戶等)。鏡像不包含任何動(dòng)態(tài)數(shù)據(jù)罩扇,其內(nèi)容在構(gòu)建之后也不會(huì)被改變婆芦。說白了就是一個(gè)文件系統(tǒng)。 - 倉庫
最常使用的 Registry 公開服務(wù)是官方的 Docker Hub喂饥,這也是默認(rèn)的 Registry,并擁有大量的高質(zhì)量的官方鏡像肠鲫。除此以外员帮,還有 CoreOS 的 Quay.io,CoreOS 相關(guān)的鏡像存儲(chǔ)在這里导饲;Google 的 Google Container Registry捞高,Kubernetes 的鏡像使用的就是這個(gè)服務(wù)。
要啟動(dòng)一個(gè)Docker首先就要看看本地有哪些鏡像
docker images
找出你想要啟動(dòng)的鏡像渣锦,比如nginx
docker -d -p 80:80 --name webserver nginx
- -d 將這個(gè)docker放在后臺(tái)作為守護(hù)進(jìn)程硝岗。
- -p <宿主機(jī)要映射的端口(也可以是ip:端口)>:<docker要暴露的端口>
- --name docker的名字,有時(shí)候打id太煩了可以用這個(gè)袋毙。
之后你就可以的打開網(wǎng)址:127.0.0.1去查看nginx的歡迎test頁面了型檀。
如果你想要換一個(gè)歡迎頁面,就要進(jìn)入這個(gè)docker
docker exec -it <容器名或者ID> bash //bash是指使用bash命令行
echo '<h1>hello Docker</h1>' > /usr/share/nginx/html/index.html
然后你在打開127.0.0.1听盖,歡迎界面就變了胀溺。
保存鏡像
一個(gè)docker相當(dāng)于一個(gè)虛擬機(jī),你可以對(duì)這個(gè)虛擬機(jī)裝很多服務(wù)和環(huán)境皆看,裝好之后你希望下棋啟動(dòng)的時(shí)候繼續(xù)用這個(gè)虛擬機(jī)而不是去重新新建一個(gè)仓坞,所以你需要將這個(gè)鏡像保存,下次啟動(dòng)腰吟。
其實(shí)无埃,把docker當(dāng)成git來理解其實(shí)是很好的。因?yàn)橄嗤乃麄兌加袀}庫毛雇,都可以將修改過的鏡像/代碼提交嫉称。并且可以回退。所以禾乘,有一種很簡(jiǎn)單但卻不推薦使用的方法
docker commit
--author <作者名>
--message <相當(dāng)于git的commit -m>
[容器名澎埠、ID]
[倉庫名:TAG]
這樣就可以保存了,下次再啟動(dòng)的時(shí)候找到你保存的鏡像始藕,就可以了蒲稳。但是這種方法的缺陷就在于
我們修改了容器的文件氮趋,也就是改動(dòng)了容器的存儲(chǔ)層。我們可以通過 docker diff 命令看到具體的改動(dòng).
要知道江耀,當(dāng)我們運(yùn)行一個(gè)容器的時(shí)候(如果不使用卷的話)剩胁,我們做的任何文件修改都會(huì)被記錄于容器存儲(chǔ)層里。而 Docker 提供了一個(gè) docker commit 命令祥国,可以將容器的存儲(chǔ)層保存下來成為鏡像昵观。換句話說,就是在原有鏡像的基礎(chǔ)上舌稀,再疊加上容器的存儲(chǔ)層啊犬,并構(gòu)成新的鏡像。以后我們運(yùn)行這個(gè)新鏡像的時(shí)候壁查,就會(huì)擁有原有容器最后的文件變化觉至。
所以真正的使用方法不會(huì)去使用這個(gè)命令,而是用dockerfile代替睡腿。