Docker中怎么使用Compose

Docker中怎么使用Compose,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司專注于大豐企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),電子商務(wù)商城網(wǎng)站建設(shè)。大豐網(wǎng)站建設(shè)公司,為大豐等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

Compose簡介

Compose項目是Docker官方的開源項目,負(fù)責(zé)實(shí)現(xiàn)對Docker容器集群的快速編排

Compose定位是定義和運(yùn)行多個Docker容器的應(yīng)用,其前身是開源項目Fig。
使用一個Dockerfile模板文件,可以很方便的定義一個單獨(dú)的應(yīng)用容器,然而在日常工作中,經(jīng)常會碰到需要多個容器相互配合來完成某項任務(wù)。例如要實(shí)現(xiàn)一個Web項目,除了Web服務(wù)器本身,通常還需要后端的數(shù)據(jù)庫服務(wù)容器,甚至負(fù)載均衡容器等。
Compose恰好滿足了這樣的需求。它可以通過一個單獨(dú)的docker-compose.yml模板文件來定義一組相關(guān)聯(lián)的應(yīng)用容器項目(project)。

Compose有兩個重要的概念:

  • 服務(wù)(service):

    一個應(yīng)用的容器,實(shí)際上可以包含若干個運(yùn)行相同鏡像的容器實(shí)例

  • 項目(project):

    由一組關(guān)聯(lián)的應(yīng)用容器組成一個完整的業(yè)務(wù)單元

Compose的默認(rèn)管理對象是項目,通過子命令對項目中的一組容器進(jìn)行便捷的生命周期管理。

Compose項目由Python編寫,實(shí)際上調(diào)用了Docker服務(wù)提供的API來對容器進(jìn)行管理

Compose的安裝與卸載

Compose可以通過Python的包管理工具pip進(jìn)行安裝,也可以直接下載編譯好的二進(jìn)制文件使用,甚至能夠直接在Docker容器中運(yùn)行。

Docker for Mac,Docker for Windows自帶docker-compose二進(jìn)制文件,安裝Docker之后可以直接使用,Linux系統(tǒng)需要單獨(dú)的二進(jìn)制文件或pip進(jìn)行安裝。

查看compose的安裝版本:

docker-compose --versino

Linux下的二進(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
chmod +x /usr/local/bin/docker-compose

pip安裝:

sudo pip install -U docker-compose

Compose使用示例

應(yīng)用場景:一般Web網(wǎng)站都會依賴第三方的提供的服務(wù),如DB,cache,以compose編排運(yùn)行dubbo-admin為例

獲取源碼,從github上獲取dubbo-admin的master分支源碼

git clone -b master https://github.com/apache/incubator-dubbo-ops.git

修改admin中的application配置,把zookeeper地址改為zookeeper://zookeeper:2181

在項目根目錄下使用maven進(jìn)行打包

mvn clean package -Dmaven.test.skip=true

構(gòu)建鏡像,在dubbo-admin目錄下編寫Dockerfile文件,寫入以下內(nèi)容:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD ./target/dubbo-admin-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","app.jar"]

使用以下命令構(gòu)建鏡像

docker build -t dubbo-admin:1.0 .

Docker中怎么使用Compose

編寫docker-compose.yml文件,在項目根目錄下編寫docker-compose.yml文件寫入以下內(nèi)容

version: '3.4'
services:
 zk_server:
   image: zookeeper:3.4
   ports:
     - 2181:2181
 dubbo-admin:
   image: dubbo-admin:1.0
   links:
     - zk_server:zookeeper
   depends_on:
     - zk_server
   ports:
     - 7001:7001

運(yùn)行compose項目,在docker-compose.yml文件所在目錄執(zhí)行:

docker-compose up

在瀏覽器中訪問http://ip:7001 登錄驗(yàn)證,默認(rèn)用戶名密碼:root/root,guest/guest

Docker中怎么使用Compose

Compose命令說明

執(zhí)行docker-compose [COMMAND] —help 或者docker-compose help [COMMAND]可以產(chǎn)看命令的使用幫助。

docker-compose命令的基本使用格式是:

docker-compose [-f=<arg>...][options][COMMAND][ARG...]

選項說明:

-f, --file 指定模板文件,默認(rèn)為docker-compose.yml,可以多次指定
-p, --project-name 指定項目名稱,默認(rèn)使用所在目錄名稱作為項目名
--x-networking 使用Docker的可插拔網(wǎng)絡(luò)后端特性
--x-networking-driver 指定網(wǎng)絡(luò)后端的驅(qū)動,默認(rèn)為bridge
--verbose 輸出更多調(diào)試信息
-v, --version 打印版本并退出

Docker中怎么使用Compose

Docker中怎么使用Compose

Compose模板文件

模板文件是Compose的核心,其涉及的指令關(guān)鍵字也比較多,大部分指令跟docker run相關(guān)的參數(shù)含義類似。默認(rèn)的模板文件名稱為docker-compose.yml,格式為YAML格式。

每個服務(wù)都必須通過image指令指定鏡像或build指令(需要Dockerfile)等來自動構(gòu)建鏡像。如果使用build指令,在Dockerfile中設(shè)置的選項(如:CMD,ENV 等)將會自動被獲取,無需在docker-compose.yml文件中再次設(shè)置。

常用指令介紹

build

指定Dockerfile所在文件夾的路徑(可以是絕對路徑,也可以是相對于docker-compose.yml文件的路徑),Compose將會利用它自動構(gòu)建鏡像,然后使用這個鏡像。

使用context指令指定Dockerfile文件所在文件夾的路徑
使用dockerfile指令指定Dockerfile的文件名
使用args令指定構(gòu)建鏡像時的變量

version: '3'
services:
 webapp:
   build:
     context:./dir
     dockerfile:Dockerfile
     args:
       buildno:1

command

覆蓋容器啟動后默認(rèn)執(zhí)行的命令

command:echo "hello word"

container_name

指定容器名稱,默認(rèn)會使用 項目名稱服務(wù)名稱序號 這樣的格式

devices

指定設(shè)備映射關(guān)系

devices:
 - "/dev/ttyUSB1:/dev/ttyUSB0"

depends_on

解決容器的依賴,啟動先后的問題

DNS

自定義DNS服務(wù)器,可以是一個值,也可以是一個列表

environment

設(shè)置環(huán)境變量,可以使用數(shù)組或字典兩種格式,指給定名稱的變量會自動獲取Compose主機(jī)上對應(yīng)變量的值,可以用來防止泄露不必要的數(shù)據(jù)。

expose

暴露端口,但不映射到宿主機(jī),只被連接的服務(wù)訪問,僅可以指定內(nèi)部端口為參數(shù)。

extra_hosts

類似Docker中的—add-host參數(shù),指定額外的host名稱映射信息

extra_hosts:
 - "googledns:8.8.8.8"

會在啟動啟動后的服務(wù)容器中 /etc/hosts 文件中添加“8.8.8.8 googledns”

healthcheck

通過命令檢查容器是否健康運(yùn)行

image

指定鏡像名稱或鏡像ID,如果鏡像在本地不存在會嘗試?yán)∵@個鏡像。

labels

為容器添加Docker元數(shù)據(jù)信息,如可以添加輔助說明信息

network_mode

設(shè)置網(wǎng)絡(luò)模式,使用和docker run 的—network參數(shù)一樣的值

networks

配置容器連接的網(wǎng)絡(luò)

ports

暴露端口信息,使用 宿主端口:容器端口 的格式,只指定容器端口的時候,宿主端口會隨機(jī)映射。

volumes

數(shù)據(jù)卷掛載的路徑設(shè)置,可以設(shè)置宿主機(jī)路徑,同時支持相對路徑

ulimits

指定容器的ulimits限制值,如指定最大進(jìn)程數(shù)為66635,指定文件句柄數(shù)位為20000(軟限制,應(yīng)用可以隨時修改,不能超過硬限制)和40000(系統(tǒng)硬限制,只能root用戶提高)

ulimits:
 nproc:65535
 nofile:
   soft:20000
   hard:40000

entrypoint

指定服務(wù)容器啟動后執(zhí)行的文件入口

user

指定容器中運(yùn)行應(yīng)用的用戶名

working_dir

指定容器中的工作目錄

讀取變量

Compose模板文件支持動態(tài)讀取主機(jī)的系統(tǒng)環(huán)境變量和當(dāng)前目錄下的 .env 文件中的變量。

如,Compose文件將從運(yùn)行它的環(huán)境中讀取${MONGO_VERSION}的值,并寫入執(zhí)行命令

version:'3'
services:
 db:
   image:"mongo:${MONGO_VERSION}"

如果執(zhí)行MONGO_VERSION=3.4,docker-compose up則會啟動一個mongo:3.4鏡像的容器
若當(dāng)前目錄下存在 .env 文件,則優(yōu)先從該文件中讀取變量的值

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

本文名稱:Docker中怎么使用Compose
網(wǎng)站URL:http://bm7419.com/article0/psdhoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、域名注冊、網(wǎng)頁設(shè)計公司、網(wǎng)站策劃、標(biāo)簽優(yōu)化、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司