Docker編排工具---Compose的概述及使用

目錄

一、Compose工具的概述

二、Compose的常用命令

1、列出容器

2、查看訪問日志

3、輸出綁定的公共端口

4、重新構建服務

5、啟動服務

6、停止服務

7、刪除已停止服務的容器

8、創建和啟動容器

9、在運行的容器中執行命令

10、指定一個服務啟動容器的個數

11、其他管理命令

三、docker-compose.yml文件

1、image標簽

2、build標簽

3、command標簽

4、dns標簽

5、environment標簽

6、env_file標簽

7、expose標簽

8、port標簽

9、network_mode標簽

10、depends_on標簽

11、links標簽

12、volumes標簽

13、volumes_from標簽

14、logs標簽


一、Compose工具的概述

????????Compose是Docker 官方的開源項目,定位是“定義和運行多個Docker 容器應用的工具”,其前身是Fig,負責實現對Docker容器集群的快速編排。Compose 通過YMAL配置文件來創建和運行所有服務。

????????在Docker中構建自定義鏡像是通過使用Dockerfile 模板文件來實現的,從而使用戶方便地定義一個單獨的應用容器。而Compose使用的模板文件是一個YAML格式文件,它允許用戶通過一個docker-compose.yml 模板文件來定義一-組相關聯的應用容器為一個項目。

????????Compose 項目使用Python語言編寫而成,調用了Docker 服務提供的API來對容器進行管理。因此,只要所操作的平臺支持Docker API, 就可以在其上利用Compose工具來進行編排管理。

????????Compose有以下兩個重要概念。

????????(1)服務(Service):?一個應用的容器,實際上可以包括若干運行相同鏡像的容器實例。每個服務都有自己的名稱、使用的鏡像、掛載的數據卷、所屬的網絡、依賴的服務等。

????????(2)項目( Project):由一組關聯的應用容器組成的一-個完整業務單元,在docker-compose.yml中定義,即Compose的一個配置文件可以解析為一個項目,Compose 通過分析指定配置文件,得出配置文件所需完成的所有容器管理與部署操作。

????????Compose的默認管理對象是項目,通過子命令對項目中的一組容器進行便捷的生命周期管理。

二、Compose的常用命令

????????Compose的常用命令常跟在docker-compose主命令后面。

1、列出容器

????????ps命令用于列出所有運行的容器。

????????其常用選項說明如下。

-q:只顯示ID

例如,列出所有運行容器。

docker-compose ps

2、查看訪問日志

????????logs命令用于查看服務日志輸出。

????????其常用選項說明如下。

(1) -f,--follow:實時輸出日志。

(2) -t,--timestamps:顯示時間戳。

(3) --tail="all":從日志末尾顯示行。

例如,查看nginx的實時日志。

docker-compose logs -f nginx

3、輸出綁定的公共端口

????????port命令用于輸出綁定的公共端口。

????????其常用選項說明如下。

(1) --protocol=proto: TCP或UDP, 默認為TCP。

(2) --index=index: 多個容器時的索引數字,默認為1。

例如,輸出eureka 服務8761 端口所綁定的公共端口。

docker-compose port eureka 8761

4、重新構建服務

????????build命令用于構建或重新構建服務。

????????其常用選項說明如下。

(1) --no-cache: 不使用緩存構建鏡像。

(2) --build-arg key=val:設置構建時變量。

例如,構建鏡像。

docker-compose build

5、啟動服務

????????start命令用于自動指定服務已存在的容器。

例如,啟動nginx容器。

docker-compose start nginx

6、停止服務

????????stop命令用于停止已運行服務的容器。

例如,停止nginx容器。

docker-compose stop nginx

7、刪除已停止服務的容器

????????rm命令用于刪除指定服務的容器。
????????其常用選項說明如下。

(1) -f,--force: 強制刪除。

(2) -s,--stop: 刪除容器時需要先停止容器。

(3)-V,刪除與容器相關的任何匿名卷。

例如,刪除已停止的nginx容器。

docker-compose rm nginx

8、創建和啟動容器

????????up命令用于創建和啟動容器。

????????其常用選項說明如下。

( 1)-d:在后臺運行容器。

(2) -t:指定超時時間。

(3) -no-deps:不啟動連接服務。

( 4) --no-recreate:如果容器存在,則不重建容器。

(5) --no-build:不構建鏡像,即使其會丟失。

(6) --build:啟動容器并構建鏡像。

(7) --scale SERVICE=NUM:指定-個服務(容器)的啟動數量。

例如,創建并啟動nginx容器。

docker-compose up -d nginx

9、在運行的容器中執行命令

????????exec命令用于在支持的容器中執行命令。

????????其常用選項說明如下。

(1) -d:在后臺運行命令。

(2) --privileged:給這個進程賦予特殊權限。

(3) -u,--user USER:作為該用戶運行該命令。

(4) -T:禁用分配偽終端,默認分配一個終端。

(5) --index=index:多個容器時的索引數字,默認1。

例如,登錄到nginx容器中。

docker-compose exec nginx bash

10、指定一個服務啟動容器的個數

????????scale命令用于指定服務啟動容器的個數。

例如,設置指定服務運行容器的個數,以service=num的形式指定。

docker-composo scale user=3 movie=3

11、其他管理命令

(1) restart命令用于重啟服務。

(2) kill命令通過發送SIGKILL信號來停止指定服務的容器。

(3) pause命令用于掛起容器。

(4) image命令用于列出本地Docker的鏡像。

(5) down命令用于停止容器和刪除容器、網絡、數據卷及鏡像。

(6) create命令用于創建一個服務。

(7) pull命令用于下載鏡像。

(8) push命令用于推送鏡像。

(9) help命令用于查看幫助信息。

三、docker-compose.yml文件

????????docker-compose.yml文件包含version、services、 networks 三部分,其中,services 和networks是關鍵部分。常見的services書寫規則如下。

1、image標簽

????????image標簽用于指定基礎鏡像。

services:web:image:nginx (image:"nginx:latest")

????????在services標簽下的web為第二級標簽,標簽名可由用戶自定義,它也是服務名稱。

????????image可以指定服務的鏡像名稱或鏡像ID,如果鏡像在本地不存在,則Compose會嘗試獲取這個鏡像。

2、build標簽

????????build標簽用于指定Dockerfile所在文件夾的路徑。該值可以是一個路徑, 也可以是一個對象。Compose 會利用它自動構建鏡像,并使用構建的鏡像啟動容器。

build: /path/to/build/dir

????????也可以使用相對路徑,即

build: ./dir

????????還可以設置上下文根目錄,并以該目錄指定Dockerfile。

build:context: ../dockerfile: path/of/Dockerfile

3、command標簽

????????command標簽用于覆蓋容器啟動后默認執行的命令。

command: bundle exec thin -P 3000

????????也可以寫為類似Dockerfile中的格式,例如:

comand: [bundle, exec, thin, -P, 3000]

4、dns標簽

????????dns標簽用于配置DNS服務器,其可以是一個具體值。

dns: 114.114.114.114

????????也可以是一個列表。

dns:- 114.114.114.114- 115.115.115.115

????????還可以配置DNS搜索域,其可以是一個值或列表。

dns_ search: example.com
dns_ search:- dc1.example.com- dc2.example.com

5、environment標簽

????????environment標簽用于設置鏡像變量。與arg標簽不同的是,arg 標簽設置的變量僅用于構建過程中,而environment標簽設置的變量會一直保存在鏡像和容器中。

environment:RACK_ ENV: developmentSHOW: 'true'SESSION_SECRET:

????????或者:

environment:- RACK_ ENV=development- SHOW=true- SESSION_SECRET

6、env_file標簽

????????env_file標簽用于設置從env文件中獲取的環境變量。可以指定一個文件路徑或路徑表,其優先級低于environment指定的環境變量,即當其設置的變量名稱與environment標簽設置的變量名稱沖突時,以environment標簽設置的變量名稱為主。

env_file: .env

????????可以根據docker.compose.yml設置路徑列表。

env_file:- ./common.env- ./apps/web.env- /opt/secrets.env

7、expose標簽

????????expose標簽用于設置暴露端口,只將端口暴露給連接的服務,不暴露給主機。

expose:- "8000"- "8010"

8、port標簽

????????port標簽用于對外暴露端口定義,使用host:container格式,或者只指定容器的嘴口號,宿主機會隨機映射端口。

ports:- "3000"- "8763:8763"- "宿主機端口:容器端口"

????????注意:當使用host:container格式來映射端口時,如果使用的容器端口號小于60,則可能會得到錯誤的結果,因為YAML會將<xx:yy>格式的數字解析為60進制,所以建議使用字符串格式。

9、network_mode標簽

????????network_mode標簽用于設置網絡模式。

network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"

10、depends_on標簽

????????depends_on標簽用于指定容器服務的啟動順序。

version: '2'
services: web:build: .depends_on:- db- redisredis:image: redisdb:image: postgres

? ? ? ? 這里,容器會先啟動Redis和DB兩個服務,再啟動Web服務。

11、links標簽

? ? ? ? links標簽用于指定容器連接到當前連接,可以設置別名。

links:- db- db:database- redis

12、volumes標簽

????????volumes標簽用于指定卷掛載路徑,可以掛載一個日錄或者一個已存在的數據卷容器。可以直接使用"host:container”格式,或者使用"host:container:ro" 格式,對于容器來說,后者的數據卷是只讀的,這樣可以有效保護宿主機的文件系統。

volumes://只是指定一個路徑,Docker會自動創建個數據卷 (該路徑是容器內部的)- /var/1ib/mysq1//使用絕對路徑掛載數據卷- /opt/data:/var/lib/mysq1//以Compose配置文件為中心的相對路徑作為數據卷掛載到容器- ./cache:/tmp/cache//使用用戶的相對路徑( ~/ 表示的目錄是/home/<用戶目錄>/ 或者 /root/)- ~/configs:/etc/configs/:ro//已經存在的命名的數據卷- datavolume:/var/1ib/mysq1

????????如果不使用宿主機的路徑,則可以指定一個volume_driver。

volume_ driver: mydriver

13、volumes_from標簽

????????volumes_from標簽用于設置從其他容器或服務掛在數據卷,可選的參數是:ro或者:rw,前者表示容器只讀,后者表示容器對數據卷是可讀可寫的。默認情況下是可讀可寫的。

volumes_ from:- service_ name- service_ name:ro- container:container_name- container:container_name:rw

14、logs標簽

????????logs標簽用于設置日志輸出信息。

logging :driver: syslogoptions:syslog-address: "tcp://192.168.0.42:123"

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79775.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79775.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79775.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C25-數組應用及練習

第一題 題目: 代碼 #include <stdio.h> int main() {//數組及相關數據定義int arr[10];int i;//基于循環的數組數據輸入for(i0;i<10;i){arr[i]i;}//基于循環的數組數據輸出for(i9;i>0;i--){printf("%d ",arr[i]);}return 0; }結果 第二題 題目 代碼 …

網絡安全怎么入門?快速了解

網絡安全是一個快速發展的領域&#xff0c;入門需要系統化的學習和實踐。以下是適合零基礎或轉行者的分階段學習路徑&#xff0c;涵蓋必備知識、學習資源、實戰方法和職業方向&#xff1a; 一、基礎階段&#xff08;1-3個月&#xff09; 1. 掌握核心基礎知識 計算機網絡&#…

express 怎么搭建 WebSocket 服務器

一&#xff1a;使用 express-ws var express require(express); var app express(); var expressWs require(express-ws)(app);app.use(function (req, res, next) {console.log(middleware);req.testing testing;return next(); });app.get(/, function(req, res, next){…

【AI論文】SuperEdit:修正并促進基于指令的圖像編輯的監督信號

摘要&#xff1a;由于手動收集準確的編輯數據存在挑戰&#xff0c;現有的數據集通常使用各種自動化方法構建&#xff0c;導致編輯指令和原始編輯圖像對之間不匹配導致監督信號出現噪聲。 最近的研究試圖通過生成更高質量的編輯圖像、在識別任務上進行預訓練或引入視覺語言模型&…

關于大疆紅外圖片提取溫度方法 python 方法

思路 紅外圖片需要是黑白圖片 提取紅外圖片最高和最低溫度 溫度圖例 根據最高溫度31.2攝氏度 最低溫度19.9攝氏度 那中間的值在 0到255 之間 那有這個值之后。就可以獲取到圖片里面 每個點或者面的值 實現方式 def find_Gray(self, t_max, t_min, c_temp):"""…

金融小知識

&#x1f4c9; 一、“做空”是啥&#xff1f; 通俗說法&#xff1a;押“它會跌”&#xff0c;賺錢&#xff01; ? 舉個例子&#xff1a; 有一天老王的包子漲價到 10 塊一個&#xff0c;張三覺得這價格肯定撐不住&#xff0c;未來會跌到 5 塊。于是他&#xff1a; 向朋友借了…

JavaScript 數據存儲全攻略:從 Cookie 到 IndexedDB

1. Cookie&#xff1a;傳統的輕量級存儲 Cookie 是最早的客戶端存儲解決方案之一&#xff0c;最初設計用于服務器和客戶端之間的狀態保持。 基本用法 javascript 復制 下載 // 設置cookie document.cookie "usernameJohnDoe; expiresThu, 18 Dec 2025 12:00:00 UTC…

Leetcode 刷題記錄 09 —— 鏈表第三彈

本系列為筆者的 Leetcode 刷題記錄&#xff0c;順序為 Hot 100 題官方順序&#xff0c;根據標簽命名&#xff0c;記錄筆者總結的做題思路&#xff0c;附部分代碼解釋和疑問解答&#xff0c;01~07為C語言&#xff0c;08及以后為Java語言。 01 合并 K 個升序鏈表 /*** Definitio…

如何利用 Elastic Load Balancing 提升應用性能與可用性?

當今云計算的快速發展中&#xff0c;隨著應用需求的增加&#xff0c;如何確保系統能夠高效、穩定地處理不斷增長的流量成為了每個技術團隊關注的焦點。Elastic Load Balancing&#xff08;ELB&#xff09;作為一種強大的工具&#xff0c;能夠幫助開發者和運維人員輕松應對流量波…

Word如何制作三線表格

1.需求 將像這樣的表格整理成論文中需要的三線表格。 2.直觀流程 選中表格 --> 表格屬性中的邊框與底紋B --> 在設置中選擇無&#xff08;重置表格&#xff09;–> 確定 --> 選擇第一行&#xff08;其實是將第一行看成獨立表格了&#xff0c;為了設置中線&…

JVM的雙親委派模型

引言 Java類加載機制中的雙親委派模型通過層層委托保證了核心類加載器與應用類加載器之間的職責分離和加載安全性&#xff0c;但其單向的委托關系也帶來了一些局限性。尤其是在核心類庫需要訪問或實例化由應用類加載器加載的類時&#xff0c;雙親委派模型無法滿足需求&#xf…

6.4.高并發設計

目錄 一、高并發系統設計基礎理論 CAP定理與高可用性權衡 ? 一致性&#xff08;C&#xff09; vs 可用性&#xff08;A&#xff09;在電商、社交場景的取舍 ? 分區容錯性&#xff08;P&#xff09;的實踐意義&#xff1a;異地多活與腦裂處理 性能指標與評估模型 ? QPS、TP…

工程師轉型算法工程師 深入淺出理解transformer-手搓板

編碼器 以下部分引用臺灣大學李宏毅教授的ppt 自己理解解釋一遍(在youtobe 上可以搜索李宏毅即可) 首先先來看transformer的架構圖 Embedding 我們先從Imput Embedding 跟 OutPutEmbedding 開始&#xff0c;讓我們用 bert 模型來做一個解釋 從huggingface上下載的bert-base…

軟件工程學概述

一、軟件危機 &#xff08;一&#xff09;軟件危機的介紹 1. 基本思想與定義 軟件危機&#xff08;Software Crisis&#xff09;是指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題&#xff0c;這些問題既包括技術層面的挑戰&#xff0c;也涉及管理層面的困境。其核心…

【ArcGIS Pro微課1000例】0068:Pro原來可以制作演示文稿(PPT)

文章目錄 一、新建演示文稿二、插入頁面1. 插入地圖2. 插入空白文檔3. 插入圖像4. 插入視頻三、播放與保存一、新建演示文稿 打開軟件,新建一個地圖文檔,再點擊【新建演示文稿】: 創建的演示文檔會默認保存在目錄中的演示文稿文件夾下。 然后可以對文檔進行簡單的設計,例如…

[吾愛出品][Windows] 產品銷售管理系統2.0

[Windows] 產品銷售管理系統 鏈接&#xff1a;https://pan.xunlei.com/s/VOPej1bHMRCHy2np9w3TBOyKA1?pwdgjy7# 使用方法&#xff1a;1、先設置一下圖片保存路徑 2、維護產品。客戶等基礎信息。例如&#xff1a;銷售類型&#xff1a;一次性 銷售編碼&#xff1a;RCX。 3、銷…

MySQL數據庫高可用(MHA)詳細方案與部署教程

一&#xff1a;MHA簡介 核心功能 二&#xff1a;MHA工作原理 三&#xff1a;MHA組件 四&#xff1a;MHA 架構與工具 MHA架構 Manager關鍵工具 Node工具 五&#xff1a;工作原理與流程 1: 故障檢測 2: 故障切換&#xff08;Failover&#xff09; 3 : 切換模式 六&a…

華為設備鏈路聚合實驗:網絡工程實戰指南

鏈路聚合就像為網絡搭建 “并行高速路”&#xff0c;既能擴容帶寬&#xff0c;又能保障鏈路冗余&#xff0c;超實用&#xff01; 一、實驗拓撲速覽 圖中兩臺交換機 LSW1 和 LSW2&#xff0c;PC1、PC2 歸屬 VLAN 10&#xff0c;PC3 歸屬 VLAN 30。LSW1 與 LSW2 通過 GE0/0/1、…

數組和集合

數組和集合的區別&#xff1a; 1、數組是固定長度的數據結構&#xff0c;一旦創建長度就無法改變&#xff0c;集合是動態長度數據結構&#xff0c;可根據需求動態增加或減少元素。 2、數組包含基本數據類型和對象&#xff0c;而集合只能包含對象。 3、數組可以直接訪問元素&…

WPF MVVM進階系列教程(一、對話框)

&#x1f360; WPF MVVM進階系列教程 一、對話框 在前面的文章中&#xff0c;我們介紹了MVVM開發的一些基礎知識。 對于日常開發來說&#xff0c;基本已經足夠應付大部分場景。 從這里開始&#xff0c;介紹的都是在MVVM模式開發中&#xff0c;提升程序可維護性、靈活性、健壯…