docker的使用主要是通過編輯Dockerfile文件構(gòu)建成鏡像溜在,然后利用經(jīng)銷啟動(dòng)一個(gè)容器雁歌,啟動(dòng)的時(shí)候可以傳一些參數(shù)臭觉,啟動(dòng)后容器里的應(yīng)用可以在容器隔離環(huán)境中運(yùn)行。
可以通過容器的套接字和容器外的服務(wù)交互辨液,還可以通過卷功能掛載寄主機(jī)的目錄和其他容器共享存儲空間虐急,也可以通過改變該存儲空間的文件,讓容器內(nèi)程序運(yùn)行不同文件滔迈。
主要目的就是使容器內(nèi)程序有穩(wěn)定的可管理的運(yùn)行環(huán)境止吁。
一,利用Dockerfile編輯docker鏡像
Dockerfile是由一系列指令和參數(shù)組成燎悍。
1敬惦,F(xiàn)ROM ,指定基礎(chǔ)鏡像谈山。因?yàn)殓R像是一層一層的仁热,可以在原有鏡像的基礎(chǔ)上再編輯。和類的繼承差不多勾哩。
2,MAINTAINER ,標(biāo)識鏡像的作者和郵箱举哟。
3思劳,RUN , 該指令會(huì)在當(dāng)前鏡像中運(yùn)行指定的命令。比如升級apt-get,下載軟件安裝包妨猩,轉(zhuǎn)移文件等潜叛。
4,EXPOSE , 后面跟端口號壶硅, 該指令指定docker容器里的應(yīng)用程序?qū)⒁褂萌萜鞯奶囟ǘ丝凇?/p>
5威兜,CMD , 該指令用于指定使用該鏡像的容器啟動(dòng)時(shí),執(zhí)行的一個(gè)命令庐椒。和RUN指令區(qū)別:RUN指令是指鏡像被構(gòu)建時(shí)運(yùn)行的命令椒舵,可以有多個(gè)RUN指令;CMD是容器啟動(dòng)時(shí)執(zhí)行的一個(gè)命令约谈,一般用于啟動(dòng)容器內(nèi)程序的守護(hù)線程笔宿。
6,ENTRYPOINT ,功能和CMD類似棱诱,但是ENTRYPOINT不會(huì)被覆蓋泼橘。同時(shí)使用ENTRYPOINT和CMD的時(shí)候,CMD的參數(shù)會(huì)傳給ENTRYPOINT迈勋,運(yùn)行ENTRYPOINT炬灭。
7 ,WORKDIR ,使用該指令為后續(xù)的一系列指令設(shè)置工作目錄靡菇,也可以為最終的容器設(shè)置工作目錄重归,ENTRYPOINT或CMD指定的命令也會(huì)在WORKDIR指定的目錄中執(zhí)行米愿。
8 ,ENV 提前,該指令用于在鏡像中指定環(huán)境變量吗货。設(shè)置變量的名字和值,后續(xù)的命令里面可以使用被ENV聲明過的變量狈网。
9宙搬,USER , USER指令用于指定鏡像會(huì)以怎樣的用戶的身份來運(yùn)行。
10拓哺,VOLUME ,VOLUME用于向基于該鏡像創(chuàng)建的任何容器添加一個(gè)或多個(gè)卷勇垛。對卷的修改是及時(shí)生效的。對卷的修改不會(huì)對鏡像產(chǎn)生影響士鸥。卷會(huì)一直存在直到?jīng)]有容器使用它闲孤。卷可以讓我們將數(shù)據(jù)(如源代碼)、數(shù)據(jù)庫或其他內(nèi)容添加到鏡像中而不是將這些內(nèi)容提交到鏡像中烤礁,并且允許我們可以容器間共享這些內(nèi)容讼积。我們可以利用此功能來測試容器和容器內(nèi)的程序代碼,管理日志脚仔,或者處理容器內(nèi)部的數(shù)據(jù)庫勤众。
11,ADD鲤脏,ADD指令用來將構(gòu)建環(huán)境中的文件和目錄復(fù)制到鏡像中们颜。ADD指令需要源文件位置和目的文件位置兩個(gè)參數(shù)。
12猎醇,COPY窥突, COPY指令類似于ADD,根本不同是COPY只關(guān)注復(fù)制文件硫嘶,而不去做文件提取和解壓的工作阻问。
13,ONBUILD, 該指令能為鏡像添加觸發(fā)器(trigger),當(dāng)一個(gè)鏡像被用作其他鏡像的基礎(chǔ)鏡像時(shí)沦疾,該鏡像中的觸發(fā)器將會(huì)被執(zhí)行则拷。