一土全、安裝
查看github上的docker-compose
發(fā)行版本的地址:
https://github.com/docker/compose/tags
當(dāng)前最新的版本是1.26.2
会涎。
安裝的命令如下:
# 1.拉取
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 2.設(shè)置文件具備執(zhí)行權(quán)限
chmod +x /usr/local/bin/docker-compose
# 3.查看版本信息
docker-compose -version
實例:
[root@localhost ~]# curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 638 100 638 0 0 1714 0 --:--:-- --:--:-- --:--:-- 1719
100 11.6M 100 11.6M 0 0 22827 0 0:08:56 0:08:56 --:--:-- 24434
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose
[root@localhost ~]# docker-compose -version
docker-compose version 1.26.2, build eefe0d31
二末秃、卸載
# 二進(jìn)制包方式安裝的,刪除二進(jìn)制文件即可
rm /usr/local/bin/docker-compose
三练慕、基本使用
- 查看命令的基本用法
可以使用docker-compose [命令] --help|-h
來實現(xiàn)技掏。docker-compose build -h
- 命令選項如下
-f项鬼,–file FILE指定使用的Compose模板文件,默認(rèn)為docker-compose.yml鸠真,可以多次指定龄毡。
-p,–project-name NAME指定項目名稱沦零,默認(rèn)將使用所在目錄名稱作為項目名。
-x-network-driver 使用Docker的可拔插網(wǎng)絡(luò)后端特性(需要Docker 1.9 及以后版本)
-x-network-driver DRIVER指定網(wǎng)絡(luò)后端的驅(qū)動序攘,默認(rèn)為bridge(需要Docker 1.9 及以后版本)
-verbose輸出更多調(diào)試信息
-v寻拂,–version打印版本并退出 - docker-compose常用命令列表
命令 說明 build 構(gòu)建項目中的服務(wù)容器 help 獲得一個命令的幫助 kill 通過發(fā)送SIGKILL信號來強制停止服務(wù)容器 con?g 驗證和查看compose文件配置 create 為服務(wù)創(chuàng)建容器。只是單純的create祭钉,還需要使用start啟動compose down 停止并刪除容器,網(wǎng)絡(luò)距境,鏡像和數(shù)據(jù)卷 exec 在運行的容器中執(zhí)行一個命令 logs 查看服務(wù)容器的輸出 pause 暫停一個服務(wù)容器 port 打印某個容器端口所映射的公共端口 ps 列出項目中目前的所有容器 pull 拉取服務(wù)依賴的鏡像 push 推送服務(wù)鏡像 restart 重啟項目中的服務(wù) rm 刪除所有(停止?fàn)顟B(tài)的)服務(wù)容器 run 在指定服務(wù)上執(zhí)行一個命令 scale 設(shè)置指定服務(wù)運行的容器個數(shù) start 啟動已經(jīng)存在的服務(wù)容器 stop 停止已經(jīng)處于運行狀態(tài)的容器垮卓,但不刪除它 top 顯示運行的進(jìn)程 unpause 恢復(fù)處于暫停狀態(tài)中的服務(wù) up 自動完成包括構(gòu)建鏡像、創(chuàng)建服務(wù)粟按、啟動服務(wù)并關(guān)閉關(guān)聯(lián)服務(wù)相關(guān)容器的一些列操作 version 打印版本信息
四、常用命令使用
-
up
格式為:docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
up命令十分強大疼鸟,它嘗試自動完成包括構(gòu)建鏡像庙曙,(重新)創(chuàng)建服務(wù),啟動服務(wù),并關(guān)聯(lián)服務(wù)相關(guān)容器的 一些列操作张抄。鏈接的服務(wù)都將會被自動啟動舶斧,除非已經(jīng)處于運行狀態(tài)。
多數(shù)情況下我們可以直接通過該命令來啟動一個項目茴厉。
選項包括:-d 在后臺運行服務(wù)容器
–no-color 不使用顏色來區(qū)分不同的服務(wù)的控制輸出
–no-deps 不啟動服務(wù)所鏈接的容器
–force-recreate 強制重新創(chuàng)建容器,不能與–no-recreate同時使用
–no-recreate 如果容器已經(jīng)存在怀酷,則不重新創(chuàng)建嗜闻,不能與–force-recreate同時使用
–no-build 不自動構(gòu)建缺失的服務(wù)鏡像
–build 在啟動容器前構(gòu)建服務(wù)鏡像
–abort-on-container-exit 停止所有容器,如果任何一個容器被停止琉雳,不能與-d同時使用
-t, --timeout TIMEOUT 停止容器時候的超時(默認(rèn)為10秒)
–remove-orphans 刪除服務(wù)中沒有在compose文件中定義的容器
–scale SERVICE=NUM 設(shè)置服務(wù)運行容器的個數(shù),將覆蓋在compose中通過scale指定的參數(shù) -
ps
格式為:docker-compose ps [options] [SERVICE...]
列出項目中目前的所有容器檐束。
選項包括:-q 只打印容器的ID信息
-
stop
格式為:docker-compose stop [options] [SERVICE...]
停止已經(jīng)處于運行狀態(tài)的容器束倍,但不刪除它。
選項包括:-t, --timeout TIMEOUT 停止容器時候的超時(默認(rèn)為10秒)
-
down
格式為:docker-compose down [options]
停止和刪除容器甥桂、網(wǎng)絡(luò)邮旷、卷黄选、鏡像婶肩,這些內(nèi)容是通過docker-compose up命令創(chuàng)建的. 默認(rèn)值刪除 容器 網(wǎng)絡(luò),可以通過指定 rmi 、volumes參數(shù)刪除鏡像和卷蜂嗽。
選項包括:–rmi type 刪除鏡像,類型必須是: ‘a(chǎn)ll’: 刪除compose文件中定義的所以鏡像辱揭;‘local’: 刪除鏡像名為空的
鏡像
-v, --volumes 刪除已經(jīng)在compose文件中定義的和匿名的附在容器上的數(shù)據(jù)卷
–remove-orphans 刪除服務(wù)中沒有在compose中定義的容器在root目錄下,移除root的實例:
[root@localhost ~]# docker-compose down Stopping root_mysql_1 ... done Stopping root_php_1 ... done Removing root_mysql_1 ... done Removing root_php_1 ... done Removing root_nginx_1 ... done Removing network root_web-net
-
restart
格式為:docker-compose restart [options] [SERVICE...]
重啟項目中的服務(wù)亥鬓。
選項包括:-t, --timeout TIMEOUT 指定重啟前停止容器的超時(默認(rèn)為10秒)
-
rm
格式為:docker-compose rm [options] [SERVICE...]
刪除所有(停止?fàn)顟B(tài)的)服務(wù)容器域庇。
選項包括:–f, --force 強制直接刪除,包括非停止?fàn)顟B(tài)的容器
-v 刪除容器所掛載的數(shù)據(jù)卷 -
start
格式為:docker-compose start [SERVICE...]
啟動已經(jīng)存在的服務(wù)容器听皿。
-
run
格式為:docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
在指定服務(wù)上執(zhí)行一個命令。
例如:docker-compose run ubuntu ping www.baidu.com
將會執(zhí)行一個ubuntu容器庵朝,并執(zhí)行ping www.baidu.com命令又厉。
將會執(zhí)行一個ubuntu容器,并執(zhí)行ping www.baidu.com命令覆致。
默認(rèn)情況下,如果存在關(guān)聯(lián)勾怒,則所有關(guān)聯(lián)的服務(wù)將會自動被啟動声旺,除非這些服務(wù)已經(jīng)在運行中。該命令類似于啟動容器后運行指定的命令腮猖,相關(guān)卷、鏈接等都會按照配置自動創(chuàng)建坪创。有兩個不同點:- 給定命令將會覆蓋原有的自動運行命令
- 不會自動創(chuàng)建端口姐赡,以避免沖突
如果不希望自動啟動關(guān)聯(lián)的容器,可以使用–no-deps選項项滑,例如:
docker-compose run --no-deps web
將不會啟動web容器關(guān)聯(lián)的其他容器。
選項包括:-d 在后臺運行服務(wù)容器
–name NAME 為容器指定一個名字
–entrypoint CMD 覆蓋默認(rèn)的容器啟動指令
-e KEY=VAL 設(shè)置環(huán)境變量值危喉,可多次使用選項來設(shè)置多個環(huán)境變量
-u, --user="" 指定運行容器的用戶名或者uid
–no-deps 不自動啟動管理的服務(wù)容器
–rm 運行命令后自動刪除容器,d模式下將忽略
-p, --publish=[] 映射容器端口到本地主機
–service-ports 配置服務(wù)端口并映射到本地主機
-v, --volume=[] 綁定一個數(shù)據(jù)卷辜限,默認(rèn)為空
-T 不分配偽tty,意味著依賴tty的指令將無法運行
-w, --workdir="" 為容器指定默認(rèn)工作目錄 -
con?g
格式為:docker-compose config [options]
驗證并查看compose文件配置氧急。
選項包括:–resolve-image-digests 將鏡像標(biāo)簽標(biāo)記為摘要
-q, --quiet 只驗證配置岂座,不輸出。 當(dāng)配置正確時费什,不輸出任何內(nèi)容,當(dāng)文件配置錯誤瘩蚪,輸出錯誤信息
–services 打印服務(wù)名稿黍,一行一個
–volumes 打印數(shù)據(jù)卷名,一行一個 -
kill
格式為:docker-compose kill [options] [SERVICE...]
通過發(fā)送SIGKILL信號來強制停止服務(wù)容器巡球。 支持通過-s參數(shù)來指定發(fā)送的信號,例如:通過如下指令發(fā)送SIGINT信號:
docker-compose kill -s SIGINT
-
create
格式為:docker-compose create [options] [SERVICE...]
為服務(wù)創(chuàng)建容器.只是單純的create险胰,還需要使用start啟動compose矿筝。
選項包括:–force-recreate 重新創(chuàng)建容器,即使它的配置和鏡像沒有改變窖维,不兼容–no-recreate參數(shù)
–no-recreate 如果容器已經(jīng)存在,不需要重新創(chuàng)建. 不兼容–force-recreate參數(shù)
–no-build 不創(chuàng)建鏡像鼻疮,即使缺失
–build 創(chuàng)建容器前琳轿,生成鏡像 -
exec
格式為:docker-compose exec [options] SERVICE COMMAND [ARGS...]
與docker exec 命令功能相同震贵,可以通過service name登陸到容器中水评。
選項包括:-d 分離模式媚送,后臺運行命令.
–privileged 獲取特權(quán).
–user USER 指定運行的用戶.
-T 禁用分配TTY. By default docker-compose exec分配 a TTY.
–index=index 當(dāng)一個服務(wù)擁有多個容器時,可通過該參數(shù)登陸到該服務(wù)下的任何服務(wù)塘偎,例如:docker-compose exec --index=1 web /bin/bash ,web服務(wù)中包含多個容器
五咱扣、docker-compose模版文件使用
模板文件是docker-compose
的核心涵防。在文件中闹伪,可以根據(jù)自己的定義壮池,管理多個容器的操作,包括他們的運行厅克,通信等橙依。模板文件的模式名稱是docker-compose.yml
,格式是YAML
合適窗骑。
一個模板文件的格式如下
version: "2"
services:
volumes:
networks:
services:
定義應(yīng)用需要的服務(wù)的項目,包括定義服務(wù)的名字鲤竹,鏡像昔榴,數(shù)據(jù)卷,所屬網(wǎng)絡(luò)互订,依賴的其他服務(wù)等。
volumes:
這里定義數(shù)據(jù)卷的名稱氮墨,供不同服務(wù)下的應(yīng)用使用。
networks:
這里定義網(wǎng)路的名稱规揪,供不同的服務(wù)下的應(yīng)用使用。
Docker Compose常用模板文件主要命令:
指令 | 功能 |
---|---|
build | 指定服務(wù)鏡像Docker?le所在路徑 |
cap_add字支,cap_drop | 指定容器的內(nèi)核能力(capacity)分配 |
command | 覆蓋容器啟動后默認(rèn)執(zhí)行的命令 |
cgroup_parent | 指定父cgroup組奸忽,意味著將基礎(chǔ)該組的資源限制 |
container_name | 指定容器名稱。默認(rèn)將會使用項目名稱服務(wù)名稱序號這樣的格式 |
devices | 指定設(shè)置映射關(guān)系 |
dns | 自定義DNS服務(wù)器欠雌。可以是一個值富俄,也可以是一個列表 |
dns_search | 配置DNS搜索域而咆。可以是一個值翘盖,也可以是一個列表 |
docker?le | 指定額外編譯鏡像的Docker?le文件,可以通過該指令來指定 |
env_?le | 從文件中獲取環(huán)境變量阁危,可以為單獨的文件路徑或列表 |
environment | 設(shè)置環(huán)境變量汰瘫,可以使用數(shù)組或字典兩種格式 |
expose | 暴露端口 |
external_links | 鏈接到docker-compose.yml外部的容器,甚至可以是非Compose管理的外部容器 |
extra_hosts | 指定額外的host名稱映射信息 |
image | 指定為鏡像名稱或鏡像ID趴乡。如果鏡像在本地不存在蝗拿,Compose將會嘗試?yán)∵@個鏡像 |
labels | 指定服務(wù)鏡像Docker?le所在路徑 |
links | 鏈接到其他服務(wù)中的容器 |
log_driver | 指定日志驅(qū)動類型,類似于Docker中的–log-driver參數(shù)哀托。目前支持三種日志驅(qū)動類型:log_driver:“json-?le”、 log_driver:“syslog”仓手、log_driver:“none” |
log_opt | 日志驅(qū)動的相關(guān)參數(shù) |
net | 設(shè)置網(wǎng)絡(luò)模式。參數(shù)類似于docker clinet的–net參數(shù)一樣 |
pid | 跟主機系統(tǒng)共享進(jìn)程命名空間呀伙。打開該選項的容器之間,以及容器和宿主機系統(tǒng)之間可以通過進(jìn)程ID來相互訪問和操作 |
ports | 暴露端口信息 |
security_opt | 指定容器模板標(biāo)簽(label)機制的默認(rèn)屬性(如用戶干像、角色驰弄、類型速客、級別等) |
ulimits | 指定容器的ulimits限制值 |
volumes | 數(shù)據(jù)卷所掛載路徑設(shè)置∧缰埃可以設(shè)置宿主機路徑(HOST:CONTAINER)或加上訪問模式(HOST:CONTAINER:ro) 卷-官方文檔 |
這里展示了一個使用模板文件的實例:
version: '1'
services:
redis:
image: redis
ports:
- "6379:6379"
container_name: "redis"
networks:
- dev
mysql:
image: centos/mysql-57-centos7
environment:
MYSQL_ROOT_PASSWORD: "root"
ports:
- "3306:3306"
container_name: "mysql"
networks:
- dev
web:
image: tomcat
ports:
- "9090:8080"
container_name: "web"
networks:
- dev
- pro
networks:
dev:
driver: bridge
pro:
driver: bridge