日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

目錄
  • 1. Docker Compose 產(chǎn)生背景
  • 2. Docker Compose模板文件
    • 1.environment
    • 2.volumes
    • 3.build
    • 4.depends_on
    • 5.env_file
    • 6.networks
    • 7.ports
    • 8.expose
    • 9.restart
  • 3. docker-compose指令
    • 1.up -d(后臺(tái)啟動(dòng))
    • 2.down
    • 3.exec
    • 4.ps
    • 5.top
    • 6.logs -f(實(shí)時(shí))
  • 總結(jié)

    1. Docker Compose 產(chǎn)生背景

    Compose 項(xiàng)目是 Docker 官方的開源項(xiàng)目,負(fù)責(zé)實(shí)現(xiàn)對(duì) Docker 容器集群的快速編排。使用Dockerfile我們很容易定義一個(gè)單獨(dú)的應(yīng)用容器。然而在日常開發(fā)工作中,經(jīng)常會(huì)碰到需要多個(gè)容器相互配合來完成某項(xiàng)任務(wù)的情況。例如要實(shí)現(xiàn)一個(gè) Web 項(xiàng)目,除了 Web 服務(wù)容器本身,往往還需要再加上后端的多種數(shù)據(jù)庫服務(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。

    中文文檔:https://yeasy.gitbook.io/docker_practice/compose

    2. Docker Compose模板文件

    模板文件是使用 Compose 的核心,涉及到的指令關(guān)鍵字也比較多。下面主要列出幾個(gè)常見&重要的模板指令,其他指令大家可以自行百度。

    默認(rèn)的模板文件名稱為 docker-compose.yml,格式為 YAML 格式。

    1.environment

    設(shè)置環(huán)境變量,主要是用來配置容器中程序所需要配置的一些參數(shù)。你可以使用數(shù)組或字典兩種格式。

    services:
      mysql:
        image: mysql:latest
        ports:
          - 3307:3306
    	environment:	# 使用字典格式,類似于 docker run -e MYSQL_ROOT_PASSWORD=root
    	  MYSQL_ROOT_PASSWORD: root
    

    也可以使用數(shù)組格式:

    services:
      mysql:
        image: mysql:latest
        ports:
          - 3307:3306
        environment:	# 使用數(shù)組格式
          - MYSQL_ROOT_PASSWORD=root
    

    2.volumes

    數(shù)據(jù)卷所掛載路徑設(shè)置,掛載數(shù)據(jù)卷的默認(rèn)權(quán)限是讀寫(rw)。

    你可以在主機(jī)上掛載絕對(duì)路徑,或者掛載相對(duì)路徑,相對(duì)路徑是相對(duì)于當(dāng)前正在使用的compose配置文件的目錄進(jìn)行擴(kuò)展。 相對(duì)路徑應(yīng)始終以 . 或者 … 開始。

    services:
      mysql:
        image: mysql:latest
        ports:
          - 3307:3306
    	environment:	# 使用字典格式,類似于 docker run -e MYSQL_ROOT_PASSWORD=root
    	  MYSQL_ROOT_PASSWORD: root
        volumes:	
       	  # 掛載絕對(duì)路徑映射,沒有這個(gè)路徑的話會(huì)自動(dòng)創(chuàng)建
          - /root/docker/composetest/tomcat/app_data:/var/lib/mysql
    
          # 或者使用相對(duì)路徑映射,也會(huì)自動(dòng)創(chuàng)建
          - ./app_data:/var/lib/mysql
    

    你還可以使用別名的方式掛載容器數(shù)據(jù)卷(可以跨多個(gè)服務(wù)并重用掛載卷,當(dāng)然使掛載絕對(duì)路徑或相對(duì)路徑也可以重用掛載卷),但要注意一點(diǎn),使用別名的方式掛載需要在頂級(jí)volumes關(guān)鍵字中聲明掛在卷,否則啟動(dòng)會(huì)報(bào)錯(cuò)。

    services:
      mysql:
        image: mysql:latest
        ports:
          - 3307:3306
        environment:
          MYSQL_ROOT_PASSWORD: root
        volumes:
          - my_app_data:/var/lib/mysql
      web1:
        volumes:	# 重用my_app_data
          - my_app_data:/var/lib/mysql
      web2:
        volumes:	# 重用my_app_data
          - my_app_data:/var/lib/mysql
    
    volumes:
      my_app_data:
    

    3.build

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

    services:
    
      webapp:
        build: ./		# 從當(dāng)前目錄下尋找Dockerfile文件
    

    你也可以使用 context 指令指定 Dockerfile 所在文件夾的路徑,使用 dockerfile 指令指定 Dockerfile 文件名,可以使用 args 指令指定構(gòu)建鏡像時(shí)往Dockerfile中傳入的變量。

    services:
    
      webapp:
        build:
          context: ./dir
          dockerfile: Dockerfile_flask
          args:
            buildno: 1
    

    4.depends_on

    解決容器的依賴、啟動(dòng)先后的問題。以下例子中會(huì)先啟動(dòng) redis db 再啟動(dòng) web。

    注意:web 服務(wù)不會(huì)等待 redis、db 完全啟動(dòng)之后才啟動(dòng)。

    services:
      webapp:
        build: .
        depends_on:
          - db
          - redis
    
      redis:
        image: redis:latest
    
      db:
        image: mysql:latest
    

    5.env_file

    從文件中獲取環(huán)境變量,可以為單獨(dú)的文件路徑或列表。

    services:
      mysql:
        image: mysql:latest
        ports:
          - 3307:3306
    	env_file: .env		# 僅使用單個(gè)env文件
    	
    	env_file:		# 通過數(shù)組來使用多個(gè)env文件
    	  - ./common.env
    	  - ./apps/web.env
    	  - /opt/secrets.env
    

    環(huán)境變量文件中每一行必須符合格式,支持 # 開頭的注釋行。

    # common.env: Set development environment
    MYSQL_ROOT_PASSWORD=root
    

    6.networks

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

    services:
      webapp:
        networks:
          - flask-net
    
    networks:	# 在頂級(jí)networks關(guān)鍵字中需要聲明,才會(huì)在啟動(dòng)時(shí)自動(dòng)創(chuàng)建該網(wǎng)絡(luò),否則報(bào)錯(cuò)。
      flask-net:
    

    7.ports

    暴露端口信息。使用宿主端口:容器端口 (HOST:CONTAINER) 格式。

    ports:
     2. "80:80" # 綁定容器的80端口到主機(jī)的80端口
     3. "9000:8080" # 綁定容器的8080端口到主機(jī)的9000端口
     4. "443" # 綁定容器的443端口到主機(jī)的任意端口,容器啟動(dòng)時(shí)隨機(jī)分配綁定的主機(jī)端口號(hào)
    

    8.expose

    暴露端口,但不映射到宿主機(jī),只被連接的服務(wù)訪問。

    和ports的區(qū)別是,expose暴露容器給link到當(dāng)前容器的容器,不會(huì)將端口暴露給主機(jī)。

    9.restart

    指定docker容器(服務(wù))總是運(yùn)行。

    services:
      webapp:
        networks:
          - flask-net
    	restart: always
    

    3. docker-compose指令

    中文文檔: https://yeasy.gitbook.io/docker_practice/compose/commands

    1.up -d(后臺(tái)啟動(dòng))

    該命令十分強(qiáng)大,它將嘗試自動(dòng)完成包括構(gòu)建鏡像,(重新)創(chuàng)建服務(wù),啟動(dòng)服務(wù),并關(guān)聯(lián)服務(wù)相關(guān)容器的一系列操作。

    docker-compose up -d · # 不寫服務(wù)名,默認(rèn)啟動(dòng)docker-compose.yml所有服務(wù)
    docker-compose up -d 服務(wù)名 # 啟動(dòng)docker-compose.yml的對(duì)應(yīng)服務(wù)

         默認(rèn)情況,如果服務(wù)容器已經(jīng)存在,docker-compose up 將會(huì)嘗試停止容器,然后重新創(chuàng)建(保持使用 volumes-from 掛載的卷),以保證新啟動(dòng)的服務(wù)匹配 docker-compose.yml 文件的最新內(nèi)容。但是不會(huì)更新已經(jīng)打好的鏡像,如果鏡像錯(cuò)誤,不能通過 docker-compose up 更新鏡像,只能先刪除鏡像。如果用戶不希望容器被停止并重新創(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> 來重新創(chuàng)建服務(wù)并后臺(tái)停止舊服務(wù),啟動(dòng)新服務(wù),并不會(huì)影響到其所依賴的服務(wù)。

    2.down

    此命令將會(huì)停止 up 命令所啟動(dòng)的容器,并移除網(wǎng)絡(luò),但是不會(huì)移除已經(jīng)打好的鏡像。

    docker-compose down · # 不寫服務(wù)名,默認(rèn)停止docker-compose.yml所有服務(wù)
    docker-compose down 服務(wù)名 # 停止docker-compose.yml的對(duì)應(yīng)服務(wù)

    3.exec

    進(jìn)入指定的容器。和docker的exec命令一樣。

    docker-compose exec 服務(wù)名 bash

    4.ps

    列出項(xiàng)目中目前的所有容器。

    docker-compose ps # 列出所有運(yùn)行的服務(wù)
    docker-compose ps -q # 只列出容器的ID信息
    選項(xiàng):
    -q 只打印容器的 ID 信息。

    5.top

    查看所有服務(wù)容器內(nèi)運(yùn)行的進(jìn)程,或者查看指定服務(wù)名的容器內(nèi)運(yùn)行的進(jìn)程。

    docker-compose top
    docker-compose top 服務(wù)名

    6.logs -f(實(shí)時(shí))

    查看所有服務(wù)容器,或指定服務(wù)容器的日志輸出。默認(rèn)情況下,docker-compose 將對(duì)不同的服務(wù)輸出使用不同的顏色來區(qū)分。可以通過 –no-color 來關(guān)閉顏色。該命令在調(diào)試問題的時(shí)候十分有用。

    docker-compose logs # 輸出所有服務(wù)容器的日志
    docker-compose logs 服務(wù)名 # 輸出對(duì)應(yīng)服務(wù)的日志
    docker-compose logs -f 服務(wù)名 # 實(shí)時(shí)輸出對(duì)應(yīng)服務(wù)的日志

    其他命令參考中文文檔手冊(cè)。

    總結(jié)

    分享到:
    標(biāo)簽:參數(shù) 命令 常見 服務(wù)器 詳解
    用戶無頭像

    網(wǎng)友整理

    注冊(cè)時(shí)間:

    網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

    • 51998

      網(wǎng)站

    • 12

      小程序

    • 1030137

      文章

    • 747

      會(huì)員

    趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
    最新入駐小程序

    數(shù)獨(dú)大挑戰(zhàn)2018-06-03

    數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

    答題星2018-06-03

    您可以通過答題星輕松地創(chuàng)建試卷

    全階人生考試2018-06-03

    各種考試題,題庫,初中,高中,大學(xué)四六

    運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

    記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

    每日養(yǎng)生app2018-06-03

    每日養(yǎng)生,天天健康

    體育訓(xùn)練成績?cè)u(píng)定2018-06-03

    通用課目體育訓(xùn)練成績?cè)u(píng)定