docker compose 停止_Docker-Compose 基础与实战,看这一篇就够啦
作者 | 飄渺Jam
責(zé)編 | 屠敏
出品 | CSDN 博客
what & why
Compose 項(xiàng)目是 Docker 官方的開(kāi)源項(xiàng)目,負(fù)責(zé)實(shí)現(xiàn)對(duì) Docker 容器集群的快速編排。使用前面介紹的Dockerfile我們很容易定義一個(gè)單獨(dú)的應(yīng)用容器。然而在日常開(kāi)發(fā)工作中,經(jīng)常會(huì)碰到需要多個(gè)容器相互配合來(lái)完成某項(xiàng)任務(wù)的情況。例如要實(shí)現(xiàn)一個(gè) Web 項(xiàng)目,除了 Web 服務(wù)容器本身,往往還需要再加上后端的數(shù)據(jù)庫(kù)服務(wù)容器;再比如在分布式應(yīng)用一般包含若干個(gè)服務(wù),每個(gè)服務(wù)一般都會(huì)部署多個(gè)實(shí)例。如果每個(gè)服務(wù)都要手動(dòng)啟停,那么效率之低、維護(hù)量之大可想而知。這時(shí)候就需要一個(gè)工具能夠管理一組相關(guān)聯(lián)的的應(yīng)用容器,這就是Docker Compose。
Compose有2個(gè)重要的概念:
- 項(xiàng)目(Project):由一組關(guān)聯(lián)的應(yīng)用容器組成的一個(gè)完整業(yè)務(wù)單元,在 docker-compose.yml 文件中定義。
- 服務(wù)(Service):一個(gè)應(yīng)用的容器,實(shí)際上可以包括若干運(yùn)行相同鏡像的容器實(shí)例。
docker compose 安裝與卸載
安裝
二進(jìn)制包在線安裝
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose這個(gè)方法現(xiàn)在基本行不通,下載太慢了,不推薦使用。
二進(jìn)制包離線安裝
從https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64下載對(duì)應(yīng)的安裝包,比如我下載了Linux-x86_64的。
將下載好的安裝包剪切到/usr/local/bin/docker-compose目錄下mv/app/download/docker-compose-Linux-x86_64/usr/local/bin/docker-compose
添加執(zhí)行權(quán)限
sudo chmod x /usr/local/bin/docker-compose
pip安裝
- 先安裝好pip工具
- 驗(yàn)證pip 版本
- 安裝docker composepip install -U docker-compose==1.25.0
- 驗(yàn)證docker compose版本
安裝補(bǔ)全插件
curl -L https://raw.githubusercontent.com/docker/compose/1.25.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose卸載
二進(jìn)制卸載
rm /usr/local/bin/docker-composepip卸載
pip uninstall docker-composedocker compose 重要命令
命令選項(xiàng)
- -f, --file FILE 指定使用的 Compose 模板文件,默認(rèn)為 docker-compose.yml,可以多次指定。
- -p, --project-name NAME 指定項(xiàng)目名稱,默認(rèn)將使用所在目錄名稱作為項(xiàng)目名。
- –x-networking 使用 Docker 的可拔插網(wǎng)絡(luò)后端特性
- –x-network-driver DRIVER 指定網(wǎng)絡(luò)后端的驅(qū)動(dòng),默認(rèn)為 bridge
- –verbose 輸出更多調(diào)試信息。
- -v, --version 打印版本并退出。
常用&重要命令
- config驗(yàn)證 Compose 文件格式是否正確,若正確則顯示配置,若格式錯(cuò)誤顯示錯(cuò)誤原因。如:docker-compose -f skywalking.yml config此命令不會(huì)執(zhí)行真正的操作,而是顯示 docker-compose 程序解析到的配置文件內(nèi)容
- images列出 Compose 文件中包含的鏡像。如docker-compose -f skywalking.yml images
- ps列出項(xiàng)目中目前的所有容器。如docker-compose -f skywalking.yml ps
- build構(gòu)建(重新構(gòu)建)項(xiàng)目中的服務(wù)容器。如:docker-compose -f skywalking.yml build,一般搭配自定義鏡像,比如編寫(xiě)的Dockfile,功能類似于docker build .
- up該命令十分強(qiáng)大(重點(diǎn)掌握),它將嘗試自動(dòng)完成包括構(gòu)建鏡像,(重新)創(chuàng)建服務(wù),啟動(dòng)服務(wù),并關(guān)聯(lián)服務(wù)相關(guān)容器的一系列操作。如docker-compose -f skywalking.yml up。默認(rèn)情況,docker-compose up 啟動(dòng)的容器都在前臺(tái),控制臺(tái)將會(huì)同時(shí)打印所有容器的輸出信息,可以很方便進(jìn)行調(diào)試。如果使用docker-compose up -d將會(huì)在后臺(tái)啟動(dòng)并運(yùn)行所有的容器。一般推薦生產(chǎn)環(huán)境下使用該選項(xiàng)。默認(rèn)情況,如果服務(wù)容器已經(jīng)存在,docker-compose up 將會(huì)嘗試停止容器,然后重新創(chuàng)建(保持使用 volumes-from 掛載的卷),以保證新啟動(dòng)的服務(wù)匹配 docker-compose.yml 文件的最新內(nèi)容。如果用戶不希望容器被停止并重新創(chuàng)建,可以使用 docker-compose up --no-recreate。這樣將只會(huì)啟動(dòng)處于停止?fàn)顟B(tài)的容器,而忽略已經(jīng)運(yùn)行的服務(wù)。如果用戶只想重新部署某個(gè)服務(wù),可以使用 docker-compose up --no-deps -d <SERVICE_NAME> 來(lái)重新創(chuàng)建服務(wù)并后臺(tái)停止舊服務(wù),啟動(dòng)新服務(wù),并不會(huì)影響到其所依賴的服務(wù)。此命令有如下選項(xiàng):①:-d 在后臺(tái)運(yùn)行服務(wù)容器。②:--no-color 不使用顏色來(lái)區(qū)分不同的服務(wù)的控制臺(tái)輸出。③:--no-deps 不啟動(dòng)服務(wù)所鏈接的容器。④:--force-recreate 強(qiáng)制重新創(chuàng)建容器,不能與 --no-recreate 同時(shí)使用。⑤:--no-recreate 如果容器已經(jīng)存在了,則不重新創(chuàng)建,不能與 --force-recreate 同時(shí)使用。⑥:--no-build 不自動(dòng)構(gòu)建缺失的服務(wù)鏡像。⑦:-t, --timeout TIMEOUT 停止容器時(shí)候的超時(shí)(默認(rèn)為 10 秒)。
- down此命令停止用up命令所啟動(dòng)的容器并移除網(wǎng)絡(luò),如docker-compose -f skywalking.yml down
- stop格式為 docker-compose stop [options] [SERVICE...]停止已經(jīng)處于運(yùn)行狀態(tài)的容器,但不刪除它。通過(guò) docker-compose start 可以再次啟動(dòng)這些容器,如果不指定service則默認(rèn)停止所有的容器。如docker-compose -f skywalking.yml stop elasticsearch選項(xiàng):-t, --timeout TIMEOUT 停止容器時(shí)候的超時(shí)(默認(rèn)為 10 秒)。
- start啟動(dòng)已經(jīng)存在的服務(wù)容器。用法跟上面的stop剛好相反,如docker-compose -f skywalking.yml start elasticsearch
- restart重啟項(xiàng)目中的服務(wù)。用法跟上面的stop,start一樣
- logs格式為docker-compose logs [options] [SERVICE...]查看服務(wù)容器的輸出。默認(rèn)情況下,docker-compose 將對(duì)不同的服務(wù)輸出使用不同的顏色來(lái)區(qū)分。可以通過(guò) --no-color 來(lái)關(guān)閉顏色。該命令在調(diào)試問(wèn)題的時(shí)候十分有用。如docker-compose -f skywalking.yml logs 查看整體的日志,docker-compose -f skywalking.yml logs elasticsearch 查看單獨(dú)容器的日志
docker compose 模板文件
模板文件是使用 Compose 的核心,涉及到的指令關(guān)鍵字也比較多。本文主要列出幾個(gè)常見(jiàn)&重要的指令,其他指令大家可以自行百度。
默認(rèn)的模板文件名稱為 docker-compose.yml,格式為 YAML 格式。
version: '3' services:elasticsearch:image: elasticsearch:6.8.5container_name: elasticsearchrestart: alwaysvolumes:- /app/skywalking/elasticsearch/data:/usr/share/elasticsearch/data:rw- /app/skywalking/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml- /app/skywalking/elasticsearch/conf/jvm.options:/usr/share/elasticsearch/config/jvm.options- /app/skywalking/elasticsearch/logs:/usr/share/elasticsearch/logs:rwenvironment:- TZ=Asia/Shanghai- xpack.monitoring.enabled=false- xpack.watcher.enabled=falseports:- "9200:9200"- "9300:9300"注意每個(gè)服務(wù)都必須通過(guò) image 指令指定鏡像或 build 指令(需要 Dockerfile)等來(lái)自動(dòng)構(gòu)建生成鏡像。如果使用 build 指令,在 Dockerfile 中設(shè)置的選項(xiàng)(例如:CMD, EXPOSE, VOLUME, ENV 等) 將會(huì)自動(dòng)被獲取,無(wú)需在 docker-compose.yml 中重復(fù)設(shè)置。
常用&重要命令
- images指定為鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose 將會(huì)嘗試?yán)∵@個(gè)鏡像。
- ports暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者僅僅指定容器的端口(宿主將會(huì)隨機(jī)選擇端口)都可以,端口字符串都使用引號(hào)包括起來(lái)的字符串格式。
- volumes數(shù)據(jù)卷所掛載路徑設(shè)置。可以設(shè)置為宿主機(jī)路徑(HOST:CONTAINER)或者數(shù)據(jù)卷名稱(VOLUME:CONTAINER),并且可以設(shè)置訪問(wèn)模式 (HOST:CONTAINER:ro)。
- ulimits指定容器的 ulimits 限制值。例如,指定最大進(jìn)程數(shù)為 65535,指定文件句柄數(shù)為 20000(軟限制,應(yīng)用可以隨時(shí)修改,不能超過(guò)硬限制) 和 40000(系統(tǒng)硬限制,只能 root 用戶提高)。
- depends_on解決容器的依賴、啟動(dòng)先后的問(wèn)題。以下例子中會(huì)先啟動(dòng) redis mysql 再啟動(dòng) web
- environment設(shè)置環(huán)境變量。你可以使用數(shù)組或字典兩種格式。
- restart指定容器退出后的重啟策略為始終重啟。該命令對(duì)保持服務(wù)始終運(yùn)行十分有效,在生產(chǎn)環(huán)境中推薦配置為 always 或者 unless-stopped。
docker-compose 實(shí)戰(zhàn)
首先我需要推薦兩件事:
- 配置docker加速鏡像創(chuàng)建或修改/etc/docker/daemon.json
- 給你的ide工具裝上docker插件
本次實(shí)戰(zhàn)我們以docker-compose部署skywalking為例。編寫(xiě)skywalking.yml,內(nèi)容如下。
version: '3.3' services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:6.8.5container_name: elasticsearchrestart: alwaysports:- 9200:9200- 9300:9300environment:discovery.type: single-nodeulimits:memlock:soft: -1hard: -1oap:image: skywalking/oapcontainer_name: oapdepends_on:- elasticsearchlinks:- elasticsearchrestart: alwaysports:- 11800:11800- 12800:12800environment:SW_STORAGE: elasticsearchSW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200ui:image: skywalking/uicontainer_name: uidepends_on:- oaplinks:- oaprestart: alwaysports:- 8080:8080environment:SW_OAP_ADDRESS: oap:12800部署完成后將其上傳至服務(wù)器,執(zhí)行docker-compose -f /app/skywalking.yml up -d即可。
聲明:本文為CSDN博主「飄渺Jam」的原創(chuàng)文章。
與50位技術(shù)專家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的docker compose 停止_Docker-Compose 基础与实战,看这一篇就够啦的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 去哪儿借趣花上征信吗
- 下一篇: macos mysql 阿帕奇_Mac配