<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
官方:https://docs.docker.com/compose/
docker-compose是基於docker的開源專案,託管於github上,由python實現,呼叫 docker服務的API負責實現對docker容器叢集的快速編排,即通過一個單獨的yaml檔案,來定義一組相關的容器來為一個專案服務。
Compose 專案是 Docker 官方的開源專案,負責實現對 Docker 容器叢集的快速編排。從功能上看,跟 OpenStack 中的 Heat 十分類似。
快速編排:站在專案角度將一組相關聯容器整合在一起,對這組容器按照指定順序進行啟動。
Compose 允許使用者通過一個單獨的 docker-compose.yml 模板檔案(YAML格式)來定義一組相關聯的應用容器為一個專案(project)。
這裡涉及2個重要的概念:
Compose 的預設管理物件是專案,通過子命令對專案中的一組容器進行便捷地生命週期管理。
Compose 專案由 Python編寫,實現上呼叫了Docker服務提供的API來對容器進行管理。因此,只要所操作的平臺支援 Docker APl,就可以在其上利用Compose來進行編排管理。
Compose 用專案名稱來隔離不同的環境,在沒有設定專案名稱的情況下,Compose 會用 docker-compose.yml 檔案所在根目錄名稱做為專案名稱。
每個專案有自己的 Docker network,不同專案的 Docker network 彼此不通。
在單個主機上建立多個隔離環境,Compose 使用專案名稱將環境彼此隔離。您可以在多個不同的上下文中使用此專案名稱。預設專案名稱是專案目錄的基本名稱。您可以使用-p 命令列選項或 COMPOSE_PROJECT_NAME 環境變數設定自定義專案名稱 。預設專案目錄是 Compose 檔案的基本目錄。可以使用–project-directory 命令列選項自定義專案目錄。
Compose 在啟動容器時,會自動儲存 volume。當我們用 docker-compose down 刪掉容器後,再用 docker-compose up 啟動時,之前 volume 會自動掛載到新建的容器中。
當 docker-compose.yml 中的某個容器有改動時,用 Compose 重啟專案,改動的容器會重新生成,沒有改動的容器則保持不變。
僅重新建立已更改的容器,當您重新啟動未更改的服務時,Compose 會使用現有容器。
變數在環境之間組合重複使用.
Compose 支援在 docker-compose.yml 中使用變數,可以通過設定變數來配合不同的使用環境。
Compose 允許使用者通過一個單獨的 docker-compose.yml 模板檔案(YAML格式)來定義一組相關聯的應用容器為一個專案(project)。
docker-compose # 拉取映象
docker-compose up -d nginx # 執行nginx容器
docker-compose up -d # 執行所有容器
docker-compose ps # 檢視容器執行狀態
docker-compose down # 停止容器和容器網路
docker-compose rm nginx # 刪除nginx容器
docker-compose run yaml中定義的服務名 命令 #在指定服務上執行一個命令
預設情況下,docker-compose up啟動的容器都在前臺,控制檯將會同時列印所有容器的輸出資訊,可以很方便進行偵錯。當通過Ctrl+c停止命令時,所有容器將會停止。
如果希望在後臺啟動並執行所有的容器,使用docker-compose up -d
。
總結: 批次啟動時, docker-compose up -d 比較常用!
只有 Linux 平臺上在安裝docker時沒有安裝docker-compose,windows、macos平臺安裝docker時會自動安裝docker-compose。
apt install python3-pip sudo pip install -U docker-compose
【推薦】詳解docker-compose.yml檔案常用模版命令
參考URL:https://www.jb51.net/article/229685.htm
Docker Compose組態檔docker-compose.yml
是Docker Compose的核心,用於定義服務、網路和資料卷。格式為YAML,預設路徑為./docker-compose.yml,可以使用.yml或.yaml擴充套件名,目前Compose組態檔格式的最新版本為V3。Compose組態檔中涉及的設定項也比較多,但大部分設定項的含義跟docker run命令相關選項是類似的。
一個service代表一個container,這個container可以從dockerhub的image來建立,或者從原生的Dockerfile build出來的image來建立。
service的啟動類似docker run,我們可以給其指定network和volme,所以可以給service指定network和volume的參照
官方範例:https://docs.docker.com/compose/compose-file/
(External user) --> 443 [frontend network] | +--------------------+ | frontend service |...ro...<HTTP configuration> | "webapp" |...ro...<server certificate> #secured +--------------------+ | [backend network] | +--------------------+ | backend service | r+w ___________________ | "database" |=======( persistent volume ) +--------------------+ _________________/
範例應用程式由以下部分組成:
services: frontend: image: awesome/webapp ports: - "443:8043" networks: - front-tier - back-tier configs: - httpd-config secrets: - server-certificate backend: image: awesome/database volumes: - db-data:/etc/data networks: - back-tier volumes: db-data: driver: flocker driver_opts: size: "10GiB" configs: httpd-config: external: true secrets: server-certificate: external: true networks: # The presence of these objects is sufficient to define them front-tier: {} back-tier: {}
此範例說明了volumes
、configs
和secrets
之間的區別。雖然它們都作為掛載的檔案或目錄暴露給服務容器,但只有一個卷可以設定為讀寫存取。secrets
和configs
是唯讀的。volumes
設定允許您選擇卷驅動程式並傳遞驅動程式選項以根據實際基礎架構調整卷管理。Configs 和 Secrets 依賴於平臺服務,並且被宣告external
為它們不作為應用程式生命週期的一部分進行管理:Compose 實現將使用特定於平臺的查詢機制來檢索執行時值。
問題背景:
啟動容器:docker-compose up -d
檢視容器執行情況:docker-compose ps
結果容器並沒有執行,執行 docker-compose ps -a 命令發現,容器在啟動後短時間內又停止了
問題描述總結:docker-compose 啟動容器後就退出,檢視紀錄檔沒有報錯。
問題分析:
Docker容器後臺執行,就必須有一個前臺程序.容器執行的命令如果不是那些一直掛起的命令(比如執行top,tail),就是會自動退出的。
docker 容器的生命週期是同容器中的前臺程序相關的,如果容器內沒有前臺程序,容器就會自動停止。
Docker Compose解決方案:
方案一:自己啟動一個前臺程序tail -F anything
Docker Compose保持容器執行
要使容器在啟動時保持執行docker-compose,請使用以下命令
command: tail -F anything
version: "3.8" services: web: image: "centos-test:v5" command: bash -c "/etc/init.d/xxx start && tail -f /var/log/meesage.log"
容器解決方案:
tail -F anything 或
docker run 加上這個開機重啟引數:–restart always -d
方案二:在 docker-compose 中新增 tty: true 關鍵字
version: '3' services: web: container_name: node_web build: context: . volumes: - ./:/home/node/app ports: - 8888:8080 tty: true
tty: true 的作用是為容器分配一個偽終端,就相當於 docke run -t, 我的理解是這樣就是把 /bin/bash 當做前臺程序
我們目前的docker-compose 中的service容器中各自只有一個,通過scale可以去擴充套件service。
例如將web服務的數量變為三個:
docker-compose up --scale web=3 -d
1.docker-compose.yml設定
version: “3”
services:
web:
image: nginx:1.19.9-alpine
restart: always
ports:
80-81:80
2.啟動服務
docker-compose up -d --scale web=2
3.檢視應用狀態
docker-compose ps
scale引數官方說明: https://docs.docker.com/compose/reference/scale/
實戰demo:
version: "3.8" services: web: image: "centos-test:v1" command: bash -c "/etc/init.d/xxx start && tail -f /var/log/message.log" init: true
到此這篇關於docker compose快速開始的文章就介紹到這了,更多相關docker compose開始內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45