什么是DockerCompose
- DockerCompose可以基于Compose文件幫我們快速的部署分布式應(yīng)用,而無需手動(dòng)一個(gè)個(gè)創(chuàng)建和運(yùn)行容器
- Compose文件是一個(gè)文本文件,通過指令定義集群中的每個(gè)容器如何運(yùn)行
version: "3.8"
services:
# 直接拉取鏡像倉庫中的鏡像運(yùn)行
mysql:
image: mysql:5.7.25
environment: # 運(yùn)行參數(shù)
MYSQL_ROOT_PASSWORD: 123
volumes:# 數(shù)據(jù)卷
- /tmp/mysql/data:/var/lib/mysql
- /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf
# 自定義鏡像來運(yùn)行
web_service1:
build:
context: ./gateway
dockerfile: Dockerfile
ports:
- 8080: 8080
web_service2:
build:
context: ./user-service
dockerfile: Dockerfile
ports:
- 8081: 8081
...
Compose文件其實(shí)就是將docker命令通過配置的方式進(jìn)行使用
DockerCompose部分關(guān)鍵字
| 字段 | 描述 |
|---|---|
| build | 指定 Dockerfile 文件名,要指定Dockerfile文件需要在build標(biāo)簽的子級標(biāo)簽中使用dockerfile標(biāo)簽指定 |
| dockerfile | 構(gòu)建鏡像上下文路徑 |
| context | 可以是 dockerfile 的路徑,或者是指向 git 倉庫的 url 地址 |
| image | 指定鏡像(image與build不弄同時(shí)使用) |
| command | 執(zhí)行命令,覆蓋容器啟動(dòng)后默認(rèn)執(zhí)行的命令 |
| container_name | 指定容器名稱,由于容器名稱是唯一的,如果指定自定義名稱,則無法scale指定容器數(shù)量 |
| deploy | 指定部署和運(yùn)行服務(wù)相關(guān)配置,只能在 Swarm 模式使用 |
| environment | 添加環(huán)境變量 |
| networks | 加入網(wǎng)絡(luò),引用頂級networks下條目 |
| network_mode | 設(shè)置容器的網(wǎng)絡(luò)模式,如 host,bridge,... |
| ports | 暴露容器端口,與 -p 相同,但端口不能低于 60 |
| volumes | 掛載一個(gè)宿主機(jī)目錄或命令卷到容器,命名卷要在頂級 volumes 定義卷名稱 |
| volumes_from | 從另一個(gè)服務(wù)或容器掛載卷,可選參數(shù) :ro 和 :rw,僅版本 '2' 支持 |
| hostname | 容器主機(jī)名 |
| sysctls | 在容器內(nèi)設(shè)置內(nèi)核參數(shù) |
| links | 連接到另外一個(gè)容器,- 服務(wù)名稱[:服務(wù)別名] |
| privileged | 用來給容器root權(quán)限,注意是不安全的,true ,false |
| restart | 設(shè)置重啟策略,no,always,no-failure,unless-stopped。no,默認(rèn)策略,在容器退出時(shí)不重啟容器。on-failure,在容器非正常退出時(shí)(退出狀態(tài)非0),才會(huì)重啟容器。on-failure:3,在容器非正常退出時(shí)重啟容器,最多重啟3次。always,在容器退出時(shí)總是重啟容器。unless-stopped,在容器退出時(shí)總是重啟容器,但是不考慮在 Docker 守護(hù)進(jìn)程啟動(dòng)時(shí)就已經(jīng)停止了的容器。 |
| depends_on | 在使用Compose時(shí),最大的好處就是少打啟動(dòng)命令,但一般項(xiàng)目容器啟動(dòng)的順序是有要求的,如果直接從上到下啟動(dòng)容器,可能會(huì)因?yàn)槿萜饕蕾噯栴}而啟動(dòng)失敗。例如在沒啟動(dòng)數(shù)據(jù)庫容器的時(shí)候啟動(dòng)應(yīng)用容器,應(yīng)用容器會(huì)因?yàn)檎也坏綌?shù)據(jù)庫而退出。depends_on標(biāo)簽用于解決容器的依賴、啟動(dòng)先后的問題。 |
DockerCompose詳細(xì)語法參考官網(wǎng):https://docs.docker.com/compose/compose-file/
DockerCompose安裝
# 先在控制臺設(shè)置一個(gè)變量,后面要用到
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
- 命令安裝
curl -SL https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
- 手動(dòng)安裝:
下載地址:https://github.com/docker/compose/releases
mv <手動(dòng)下載的文件> $DOCKER_CONFIG/cli-plugins/docker-compose
# 賦予執(zhí)行權(quán)限
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
# 查看版本
$DOCKER_CONFIG/cli-plugins/docker-compose version
# 或
docker compose version