新聞中心
Docker-Compose簡介
Docker-Compose項(xiàng)目是Docker官方的開源項(xiàng)目,負(fù)責(zé)實(shí)現(xiàn)對(duì)Docker容器集群的快速編排, 并且提供了 scale (服務(wù)擴(kuò)容) 的功能。
成都創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)岷縣,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
Docker-Compose將所管理的容器分為三層,分別是工程(project),服務(wù)(service)以及容器(container)。Docker-Compose運(yùn)行目錄下的所有文件(docker-compose.yml,extends文件或環(huán)境變量文件等)組成一個(gè)工程,若無特殊指定工程名即為當(dāng)前目錄名。一個(gè)工程當(dāng)中可包含多個(gè)服務(wù),每個(gè)服務(wù)中定義了容器運(yùn)行的鏡像,參數(shù),依賴。一個(gè)服務(wù)當(dāng)中可包括多個(gè)容器實(shí)例,Docker-Compose并沒有解決負(fù)載均衡的問題,因此需要借助其它工具實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)及負(fù)載均衡。
Docker-Compose的工程配置文件默認(rèn)為docker-compose.yml,可通過環(huán)境變量COMPOSE_FILE或-f參數(shù)自定義配置文件,其定義了多個(gè)有依賴關(guān)系的服務(wù)及每個(gè)服務(wù)運(yùn)行的容器。
使用一個(gè)Dockerfile模板文件,可以讓用戶很方便的定義一個(gè)單獨(dú)的應(yīng)用容器。在工作中,經(jīng)常會(huì)碰到需要多個(gè)容器相互配合來完成某項(xiàng)任務(wù)的情況。例如要實(shí)現(xiàn)一個(gè)Web項(xiàng)目,除了Web服務(wù)容器本身,往往還需要再加上后端的數(shù)據(jù)庫服務(wù)容器,甚至還包括負(fù)載均衡容器等。
Compose允許用戶通過一個(gè)單獨(dú)的docker-compose.yml模板文件(YAML 格式)來定義一組相關(guān)聯(lián)的應(yīng)用容器為一個(gè)項(xiàng)目(project)。
Docker-Compose項(xiàng)目由Python編寫,調(diào)用Docker服務(wù)提供的API來對(duì)容器進(jìn)行管理。因此,只要所操作的平臺(tái)支持Docker API,就可以在其上利用Compose來進(jìn)行編排管理。
假如,你有一個(gè)java鏡像,一個(gè)MySQL鏡像,一個(gè)nginx鏡像。如果沒有docker-compose,那么每次啟動(dòng)的時(shí)候,你需要敲各個(gè)容器的啟動(dòng)參數(shù),環(huán)境變量,容器命名,指定不同容器的鏈接參數(shù)等等一系列的操作,相當(dāng)繁瑣。而用了docker-composer之后,你就可以把這些命令一次性寫在docker-composer.yml文件中,以后每次啟動(dòng)這一整個(gè)環(huán)境(含3個(gè)容器)的時(shí)候,你只要敲一個(gè)docker-composer up命令就ok了。
先簡單理解 docker 的使用過程,它分為鏡像構(gòu)建與容器啟動(dòng)。
鏡像構(gòu)建:即創(chuàng)建一個(gè)鏡像,它包含安裝運(yùn)行所需的環(huán)境、程序代碼等。這個(gè)創(chuàng)建過程就是使用 dockerfile 來完成的。
容器啟動(dòng):容器最終運(yùn)行起來是通過拉取構(gòu)建好的鏡像,通過一系列運(yùn)行指令(如端口映射、外部數(shù)據(jù)掛載、環(huán)境變量等)來啟動(dòng)服務(wù)的。針對(duì)單個(gè)容器,這可以通過 docker run 來運(yùn)行。
而如果涉及多個(gè)容器的運(yùn)行(如服務(wù)編排)就可以通過docker-compose來實(shí)現(xiàn),它可以輕松的將多個(gè)容器作為 service 來運(yùn)行(當(dāng)然也可僅運(yùn)行其中的某個(gè)),并且提供了 scale (服務(wù)擴(kuò)容) 的功能。
簡單總結(jié):
dockerfile: 構(gòu)建鏡像;
docker run: 啟動(dòng)容器;
docker-compose: 啟動(dòng)服務(wù);
安裝
推薦官方安裝
curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
[root@rancher ~]# docker-compose -v
docker-compose version 1.24.1, build 4667896b
卸載
如果是二進(jìn)制包方式安裝的,刪除二進(jìn)制文件即可:
sudo rm /usr/local/bin/docker-compose
如果通過Python pip工具安裝的,則執(zhí)行如下命令刪除:
sudo pip uninstall docker-compose
常用命令
-f,–file FILE指定Compose模板文件,默認(rèn)為docker-compose.yml,可以多次指定。
-p, 指定docker-compose的項(xiàng)目目錄,也就是docker-compose.yml文件的存儲(chǔ)目錄
-v,–version打印版本并退出
docker-compose ps? ? ? 顯示所有容器
docker-compose up?-d nginx? ?構(gòu)建并在后臺(tái)啟動(dòng)nginx容器,不加nginx,啟動(dòng)所有服務(wù),下面的等同。
docker-compose run? ? 允許為你的應(yīng)用程序運(yùn)行一次性命令
docker-compose start?nginx? ?啟動(dòng)nginx容器
docker-compose restart?nginx? ?重啟nginx容器 (注意是編排文件中的service)
docker-compose stop? nginx? 停止nginx容器
docker-compose pause nginx? ? 暫停nginx容器
docker-compose unpause nginx? ? 恢復(fù)nginx容器
docker-compose kill nginx? ? 強(qiáng)制停止nginx容器
docker-compose rm nginx? ? 刪除nginx容器(刪除前必須關(guān)閉容器)
docker-compose exec nginx bash????????????登錄到nginx容器中
docker-compose down -v? ?停止并刪除容器、網(wǎng)絡(luò)、映像和卷,-v(--volumes)刪除容器的數(shù)據(jù)卷
docker-compose logs -f? --tail 50 nginx? ? 查看nginx的實(shí)時(shí)日志,只看最后50行。
docker-compose events --json nginx? ? ? 以json的形式輸出nginx的docker日志
docker-compose config??-q? ? 驗(yàn)證(docker-compose.yml)文件配置,當(dāng)配置正確時(shí),不輸出任何內(nèi)容,當(dāng)文件配置錯(cuò)誤,輸出錯(cuò)誤信息。
docker-compose build nginx? ? ? ? 構(gòu)建鏡像
docker-compose build --no-cache nginx???不帶緩存的構(gòu)建。
docker-compose scale??? ?設(shè)置服務(wù)的容器數(shù)量
docker-compose pull?? ? 拉取服務(wù)鏡像
docker-compose push? ? 推送服務(wù)鏡像
新聞名稱:docker-compose
本文地址:http://fisionsoft.com.cn/article/ieoede.html