大部分命令都可以運(yùn)行在一個或多個服務(wù)上。如果沒有特別的說明,命令則應(yīng)用在項(xiàng)目所有的服務(wù)上。
執(zhí)行 docker-compose [COMMAND] --help 查看具體某個命令的使用說明。
基本的使用格式是
docker-compose [options] [COMMAND] [ARGS...]
--verbose 輸出更多調(diào)試信息。--version 打印版本并退出。-f, --file FILE 使用特定的 compose 模板文件,默認(rèn)為 docker-compose.yml。-p, --project-name NAME 指定項(xiàng)目名稱,默認(rèn)使用目錄名稱。build構(gòu)建或重新構(gòu)建服務(wù)。
服務(wù)一旦構(gòu)建后,將會帶上一個標(biāo)記名,例如 web_db。
可以隨時在項(xiàng)目目錄下運(yùn)行 docker-compose build 來重新構(gòu)建服務(wù)。
help獲得一個命令的幫助。
kill通過發(fā)送 SIGKILL 信號來強(qiáng)制停止服務(wù)容器。支持通過參數(shù)來指定發(fā)送的信號,例如
$ docker-compose kill -s SIGINT
logs查看服務(wù)的輸出。
port打印綁定的公共端口。
ps列出所有容器。
pull拉取服務(wù)鏡像。
rm刪除停止的服務(wù)容器。
run在一個服務(wù)上執(zhí)行一個命令。
例如:
$ docker-compose run ubuntu ping docker.com
將會啟動一個 ubuntu 服務(wù),執(zhí)行 ping docker.com 命令。
默認(rèn)情況下,所有關(guān)聯(lián)的服務(wù)將會自動被啟動,除非這些服務(wù)已經(jīng)在運(yùn)行中。
該命令類似啟動容器后運(yùn)行指定的命令,相關(guān)卷、鏈接等等都將會按照期望創(chuàng)建。
兩個不同點(diǎn):
如果不希望自動啟動關(guān)聯(lián)的容器,可以使用 --no-deps 選項(xiàng),例如
$ docker-compose run --no-deps web python manage.py shell
將不會啟動 web 容器所關(guān)聯(lián)的其它容器。
scale設(shè)置同一個服務(wù)運(yùn)行的容器個數(shù)。
通過 service=num 的參數(shù)來設(shè)置數(shù)量。例如:
$ docker-compose scale web=2 worker=3
start啟動一個已經(jīng)存在的服務(wù)容器。
stop停止一個已經(jīng)運(yùn)行的容器,但不刪除它。通過 docker-compose start 可以再次啟動這些容器。
up構(gòu)建,(重新)創(chuàng)建,啟動,鏈接一個服務(wù)相關(guān)的容器。
鏈接的服務(wù)都將會啟動,除非他們已經(jīng)運(yùn)行。
默認(rèn)情況, docker-compose up 將會整合所有容器的輸出,并且退出時,所有容器將會停止。
如果使用 docker-compose up -d ,將會在后臺啟動并運(yùn)行所有的容器。
默認(rèn)情況,如果該服務(wù)的容器已經(jīng)存在, docker-compose up 將會停止并嘗試重新創(chuàng)建他們(保持使用 volumes-from 掛載的卷),以保證 docker-compose.yml 的修改生效。如果你不想容器被停止并重新創(chuàng)建,可以使用 docker-compose up --no-recreate。如果需要的話,這樣將會啟動已經(jīng)停止的容器。
環(huán)境變量可以用來配置 Compose 的行為。
以DOCKER_開頭的變量和用來配置 Docker 命令行客戶端的使用一樣。如果使用 boot2docker , $(boot2docker shellinit) 將會設(shè)置它們?yōu)檎_的值。
COMPOSE_PROJECT_NAME設(shè)置通過 Compose 啟動的每一個容器前添加的項(xiàng)目名稱,默認(rèn)是當(dāng)前工作目錄的名字。
COMPOSE_FILE設(shè)置要使用的 docker-compose.yml 的路徑。默認(rèn)路徑是當(dāng)前工作目錄。
DOCKER_HOST設(shè)置 Docker daemon 的地址。默認(rèn)使用 unix:///var/run/docker.sock,與 Docker 客戶端采用的默認(rèn)值一致。
DOCKER_TLS_VERIFY如果設(shè)置不為空,則與 Docker daemon 交互通過 TLS 進(jìn)行。
DOCKER_CERT_PATH配置 TLS 通信所需要的驗(yàn)證(ca.pem、cert.pem 和 key.pem)文件的路徑,默認(rèn)是 ~/.docker 。