本篇文章給大家?guī)砹薲ocker中compose的相關(guān)知識(shí),其中包括了compose文件結(jié)構(gòu)以及安裝docker compose工具的相關(guān)知識(shí),希望對(duì)大家有幫助。
什么是docker compose?
docker compose是一個(gè)容器編排功能,將運(yùn)行在不同容器中的不同服務(wù)器進(jìn)行編排,聯(lián)合在一起。
可以用于對(duì)多數(shù)容器進(jìn)行統(tǒng)一管理:包括但不限于:網(wǎng)絡(luò)、端口、掛載等可以用于實(shí)現(xiàn)容器的集群化,相關(guān)于容器、鏡像的一系列操作,compose都可以進(jìn)行操作,就是一個(gè)對(duì)于容器進(jìn)行管理的功能
一、compose文件結(jié)構(gòu)
1、yml文件
compose中文件結(jié)構(gòu)通常是指yml文件的結(jié)構(gòu),那什么是yml文件?
yml文件是一種鍵值對(duì)格式的文件。
yml文件對(duì)于格式非常的敏感,需要注意以下幾種事項(xiàng):
- 只識(shí)別空格進(jìn)行的縮進(jìn),不識(shí)別tab鍵的縮進(jìn)形式
- 通常開頭部分縮進(jìn)兩個(gè)空格
- 字符后面縮進(jìn)一格空格,包括但不限于:冒號(hào)、逗號(hào)、橫杠等這些字符。字符后面必須縮進(jìn)一格
- 支持使用#來進(jìn)行注釋
- 如果包含特殊字符,需要使用單引號(hào)引用起來
- 布爾值必須使用引號(hào)括起來
例如:
house: family: name: Doe parents: - John - Jane children: - Paul - Mark - Simone address: number: 34 street: Main Street city: Nowheretown zipcode: 1234
yml文件格式例如上面,需要進(jìn)行一級(jí)級(jí)的對(duì)應(yīng),不同級(jí)之間,有兩個(gè)空格的間隔。
注:如果在一個(gè)層級(jí)中,一個(gè)鍵有多個(gè)值,可以使用在下一個(gè)層級(jí),同樣是空余兩格,以短橫杠起始,有幾個(gè)值寫幾個(gè)端橫杠
2、Compose配置常用的字段
字段 | 描述 |
---|---|
build dockerfile centext | 指定Dockerfile文件名構(gòu)建鏡像上下文的路徑 |
images | 指定鏡像 |
command | 執(zhí)行命令,覆蓋默認(rèn)命令 |
container name | 指定容器名稱,由于容器名稱是唯一的。如果指定自定義名稱,則是無法創(chuàng)建scale |
deploy | 指定部署和運(yùn)行服務(wù)相關(guān)配置,只能再Swarm模式使用 |
environment | 添加環(huán)境變量 |
networks | 加入網(wǎng)絡(luò) |
ports | 暴露容器端口,與-p相同,但是端口號(hào)必須大于60 |
volumts | 掛載宿主機(jī)路徑或者命令卷 |
restart | 重啟策略,默認(rèn)no,always, on-failure,unless-stoped |
hostname | 容器主機(jī)名 |
build:構(gòu)造一個(gè)鏡像時(shí)候的一個(gè)定義方式
dockerfile:方式是使用dockerfile的方式構(gòu)建
context:服務(wù)docerfile文件的路徑
images:可以指定使用的鏡像名字,例如:images: 鏡像名,注意:后面有個(gè)空格
command:執(zhí)行一個(gè)語句
container name:用于指定容器的名稱,因?yàn)槿萜髅质俏ㄒ坏?。如果指定自定義名稱,則無法scale(設(shè)置副本集)
#副本集:將一個(gè)鏡像制作成多個(gè)容器,這多個(gè)容器之間,運(yùn)行環(huán)境等方面都是一模一樣。當(dāng)容器架構(gòu)中的一個(gè)容器掛掉之后,可以直接啟動(dòng)一個(gè)相同的容器,用以保持副本集的數(shù)量,這是副本集的概念,同樣也是K8s的核心。可以提高微服務(wù)的速度,提高容災(zāi),高并發(fā)性能
deploy:是一個(gè)控制器,在k8s中是控制管理副本集的一個(gè)插件
restart:一種重啟策略,默認(rèn)是關(guān)閉之后不啟動(dòng),如果always則是不管是手動(dòng)關(guān)閉還是非手動(dòng)關(guān)閉,都會(huì)自動(dòng)把關(guān)閉狀態(tài)的容器啟動(dòng),unless-stoped只拉取關(guān)閉狀態(tài)的容器,on-failure,只會(huì)啟動(dòng)容器返回碼非零的容器
3、Compose在外部的常用命令
字段 | 描述 |
---|---|
build | 重新構(gòu)建一個(gè)鏡像信息 |
ps | 列出容器當(dāng)前docker compose所控制的容器 |
up | 創(chuàng)建以及啟動(dòng)容器 |
exec | 在容器內(nèi)執(zhí)行命令 |
scale | 指定一個(gè)服務(wù)器的啟動(dòng)數(shù)量,相當(dāng)于副本集的數(shù)量 |
top | 顯示容器進(jìn)程,所有docker compose控制的進(jìn)程啟動(dòng)的容器 |
logs | 查看容器的輸出信息 |
down | 刪除容器、網(wǎng)絡(luò)、數(shù)據(jù)卷和鏡像 |
stop/start/restart | 停止/啟動(dòng)/重啟容器服務(wù) |
docker compose基本使用格式:docker-compose [options] [COMMAND] [ARGS…]
docker-compose選項(xiàng):
- –verbose:輸出