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