91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Compose的概念和用法

發布時間:2021-07-01 12:01:02 來源:億速云 閱讀:299 作者:chen 欄目:大數據

本篇內容主要講解“Compose的概念和用法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Compose的概念和用法”吧!

  • Compose項目是docker官方的開源項目,負責實現對docker容器集群的快速編排。其代碼目前在http://github.com/docker/compose上開源。

    • Compose定位是定義和運行多個docker容器的應用,其前身是開源項目Fig

  • 通過前面章節的介紹,我們知道使用一個Dockerfile模板文件,可以讓用戶很方便的定義一個單獨的應用容器。然而,在日常工作中,經常會碰到需要多個容器相互配合來完成某項任務的情況。例如要實現一個web項目,除了web服務容器本身,往往還需要再加上后端的數據庫服務容器,甚至還包括負載均衡容器等。

  • Compose恰好滿足了這樣的需求。它允許用戶通過一個單獨的docker-compose.yml模板文件來定義一組相關聯的應用容器為一個項目;

  • Compose中有兩個重要的概念:

    • 服務(service):一個應用的容器,實際上可以包括若干運行相同鏡像的容器實例;

    • 項目(project):由一組關聯的應用容器組成的一個完成業務單元。

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

  • Compose項目由Python編寫,實際上調用了docker服務提供的API來對容器進行管理。

  • 使用Compose構建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進行編譯打包:

      mvn clean package -Dmaven.test.skip=true


    • 在dubbo-admin目錄下編寫Dockerfile文件,內容為

      # FROM,表示使用jdk8環境為基礎鏡像,如果鏡像不是本地的會從DockerHub進行下載
      FROM openjdk:8-jdk-alphine
      # 作者
      MAINTAINER study.163.com<allen@163.com>
      VOLUME /tmp
      # ADD,拷貝文件并且重命名
      ADD ./target/dubbo-admin-0.0.1-SNAPSHOT.jar app.jar
      # ENTRYPOINT,為了縮短Tomcat的啟動時間,添加java.security.egd的系統屬性指向/dev/urandom作為ENTRYPOINT
      ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/.urandom", "-jar", "/app,.jar"]


    • 使用docker build -t dubbo-admin:1.0 .命令進行構建。

    • 在項目根目錄下編寫docker-compose.yml文件,這個是Compose使用的主模板文件

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


  • Compose命令說明

    • 執行dcoker-compose [COMMAND] --help或者docker-compose help [COMMAND]可以查看某個具體命令的使用格式。

      # docker-compose命令的基本的使用格式是:
      docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]


    • 命令選項

    • -f, --file <FILE>指定模板文件,默認為docker-compose.yml,可以多次指定;

    • -p, --project-name <NAME>指定項目名稱,默認將使用所在目錄名稱為項目名;

    • --x-networking使用docker的可插拔網絡后端特性;

    • --x-network-driver <DRIVER>指定網絡后端的驅動,默認為bridge

    • --verbose輸出更多調試信息;

    • -v, --version打印版本并退出;

    • 命令對象與格式

  • Compose命令對象

命令說明
build格式為docker-compose build [options] [SERVICE...]。構建(重新構建)項目中的服務容器。可以隨時在項目目錄下運行docker-compose build來重新構建服務。選項包括:<br />1. --force-rm刪除構建過程中的臨時容器;<br />2. --no-cache構建鏡像過程中不使用cache(這將加長構建過程);<br />3. --pull始終嘗試通過pull來獲取更新版本的鏡像;
version執行格式為docker-comose version,打印版本信息。
config驗證Compse格式是否正確,若正確則顯示配置,若格式錯誤顯示錯誤原因
exec進入指定的容器
images列出Compose文件包含的鏡像
logs格式為docker-compose logs [options] [SERVICE...]。查看服務容器的輸出,默認情況下,docker-compose將對不同的服務輸出使用不同的顏色來區分。可以通過--no-color來關閉顏色
down停止up命令所啟動的容器,并移除網絡。
help獲得一個命令的幫助
kill通過發送SIGKILL信號來強制停止服務容器
pause格式為docker-compose pause [SERVICE...],暫停一個服務容器。
port格式為docker-compose port [options] SERVICE PRIVATE_PORT,打印某個容器端口所映射的公共端口。選項:<br />1. --protocol=proto指定端口協議,tcp(默認值)或者upd;<br />2. --index=index如果同一服務存在多個容器,指定命令對象容器的序號(默認為1)。
ps格式為docker-compse ps [options] [SERVICE...],列出項目中目前的所有容器。選項:<br />1. -q只打印容器的ID信息;
push推送服務依賴的鏡像到docker鏡像倉庫;
pull格式為docker-compse pull [options] [SERVICE...]。拉取服務依賴的鏡像,選項:<br />1. --ignore-pull-failures忽略拉取鏡像過程中的錯誤。
restart格式為docker-compose restart [options] [SERVICE...],重啟項目中的服務。選項:<br />1. -t, --timeout TIMEOUT指定重啟前停止容器的超時時間(默認為10秒)。
rm格式為docker-compose rm [options] [SERVICE...],刪除所有(停止狀態的)服務容器。推薦先執行docker-compose stop命令來停止容器。選項:<br />1. -f, --force強制直接刪除,包括非停止狀態的容器。一般盡量不要使用該選項;<br />2. -v刪除容器所掛載的數據卷。
run格式為docker-compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...],在指定服務上執行一個命令。例如docker-compose run ubuntu ping docker.com
scale格式為docker-compose scale [options] [SERVICE=NUM...],設置指定服務運行的容器個數。例如docker-compose scale web=3 db=2,將啟動3個容器運行web服務,2個容器運行db服務。
start格式為docker-compose start [SERVICE...],啟動已經存在的服務容器
stop停止已經存在的服務容器
top查看各個服務容器內運行的進程
unpause格式為docker-compose unpause [SERVICE...],恢復處于暫停狀態到的服務。
up該命令十分強大,它將嘗試自動完成包括構建鏡像,(重新)創建服務,啟動服務,并關聯服務相關容器的一系列操作。鏈接的服務都將會自動啟動,除非已經處于運行狀態。選項:<br />1. -d在后臺運行服務容器;<br />2. --no-color不使用顏色來區分不同的服務的控制臺輸出;<br />3. --no-deps不啟動服務所鏈接的容器;<br />4. --force-recreate強制重新創建容器,不能與--no-recreate同時使用;<br />5. --no-recreate如果容器已經存在了,則不重新創建,不能與--force-recreate同時使用;<br />6. --no-build不自動構建缺失的服務鏡像;<br />7. -t, --timeout TIMEOUT停止容器時的超時時間。
  • Compose模板文件

    • 模板文件是使用Compose的核心,設計到的指令關鍵字也比較多,但大家不要擔心,這里面大部分指令跟docker run相關參數的含義都是類似的。默認的模板文件名稱為docker-compose.yml,格式為YAML格式;

    • 注意每個服務都必須通過image指令指定鏡像或build指令(需要Dockerfile)等來自動構建生成鏡像;

    • 如果使用build指令,在Dockerfile中設置的選項(例如:CMD,EXPOSE,VOLUME,ENV等)將會自動被獲取,無需在docker-compose.yml中再次設置。

  • build指令

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

    • 使用context指令指定Dockerfile所在文件夾的路徑;

    • 使用dockerfile指令指定Dockerfile文件名;

    • 使用arg指令指定構建鏡像時的變量;

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


  • command指令

    • 覆蓋容器啟動后默認執行的命令

      command: echo "hello world"


  • container_name指令

    • 指定容器名稱。默認將會使用“項目名稱_服務名稱_序號”這樣的格式

      container_name: docker-web-container


  • configs指令

    • 僅用于Swarm mode,詳細內容后面swarm mode會講到

  • deploy指令

    • 僅用于Swarm mode,詳細內容后面swarm mode會講到

  • devices指令

    • 指定設備映射關系

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


  • depends_on指令

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

  • dns指令

    • 自定義DNS服務器,可以是一個值,也可以是一個列表

      dns: 8.8.8.8
      dns:
        - 8.8.8.8
        - 114.114.114.114


  • environment指令

    • 設置環境變量。你可以使用數組或字典兩種格式。之給定名稱的變量會自動獲取運行Compose主機上對應變量的值,可以用來防止泄露不必要的數據。

      environment:
        RACK_ENV: development
        SESSION_SECRET:
      environment:
        - RACK_ENV=development
        - SESSION_SECRET


  • expose指令

    • 暴露端口,但不映射到宿主機,只被連接的服務訪問。進可以指定內部端口為參數。

      expose:
        - "3000"
        - "8000"


  • extra_hosts指令

    • 類似Docker中的--add-host參數,指定額外的host名稱映射信息。會在啟動后的服務容器中/etc/hosts文件中添加一條條目8.8.8.8 googledns

      extra_hosts:
        - "googledns:8.8.8.8"


  • healthcheck指令

    • 通過命令檢查容器是否健康運行

      healthcheck:
        test: ["CMD", "curl", "-f", "http://localhost"]
        interval: 1m30s
        timeout: 10s
        retries: 3


  • image指令

    • 指定為鏡像名稱或鏡像ID,如果鏡像在本地不存在,Compose會嘗試拉取這個鏡像

      image: session-web:latest


  • labels指令

    • 為容器添加Docker元數據(metadata)信息,例如可以為容器添加輔助說明信息。

  • links指令

    • 連接到其他容器。注意:不推薦使用該指令。應該使用docker network建立網絡,而docker run --network來連接特定網絡,或者使用versionn: '2'和更高版本的docker-compose.yml直接定義自定義網絡并使用。

  • network_mode指令

    • 設置網絡模式。使用和docker run--network參數一樣的值。

      network_mode: "bridge"
      network_mode: "host"
      network_mode: "none"


  • networks指令

    • 配置容器連接的網絡

      version: "3"
      services:
        some-service:
          networks:
            - some-network
      networks:
        some-network:


  • ports指令

    • 暴露端口信息。使用宿主端口:容器端口(HOST:CONTAINER)格式,或者僅僅指定容器的端口(宿主將會隨機選擇端口)都可以。

  • volumes指令

    • 數據卷所掛載路徑設置,可以設置宿主機路徑,同時支持相對路徑

      volumes:
        - /var/lib/mysql
        - cache/:/tmp/cache
        - ~/configs:/etc/configs/:ro


  • ulimits指令

    • 指定容器的ulimits限制值。例如,指定最大進程數為65535,指定文件句柄數為20000(軟限制,應用可以隨時修改,不能超過硬限制)和40000(系統硬限制,只能root用戶提高)。

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


  • 其他指令

    • 指定服務容器啟動后執行的入口文件

      entrypoint: /code/entrypoint.sh


    • 指定容器中運行應用的用戶名

      user: nginx


    • 指定容器中工作目錄

      working_dir: /code


    • 指定容器中搜索域名、主機名、mac地址等

      domainname: your_website.com
      hostname: test
      mac_address: 08-00-27-00-0C-0A


    • 允許容器中運行一些特權命令

      privileged: true


    • 指定容器退出后的重啟策略為始終重啟。在生產環境中推薦配置為always或者unless-stopped

      restart: always


    • 以只讀模式掛載容器的root文件系統,意味著不能對容器內容進行修改

      read_only: true


    • 打開標準輸入,可以接受外部輸入

      stdin_open: true


    • 模擬一個偽終端

      tty: true


    • 此外,還有包括domainnameentrypointhostnameipcmac_addressprivilegedread_onlyshm_sizerestartstdin_openttyuserworking_dir等指令,基本跟docker run中對應參數的功能一致。

  • 讀取變量

    • Compose模板文件支持動態讀取主機的系統環境變量和當前目錄下的.env文件中的變量。例如,下面的Compose文件將從運行它的環境中讀取變量${MONGO_VERSION}的值,并寫入執行的指令中。

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


    • 如果執行的MONGO_VERSION=3.2docker-compose up則會啟動一個mongo:3.2鏡像的容器。若當前目錄下存在.env文件,執行docker-compose命令時將從該文件中讀取變量。

到此,相信大家對“Compose的概念和用法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

南岸区| 贡嘎县| 松阳县| 聂拉木县| 汉沽区| 临西县| 和平区| 莱州市| 慈利县| 奉节县| 新安县| 营口市| 井陉县| 道孚县| 大悟县| 石柱| 焦作市| 辽阳市| 乐至县| 安吉县| 吴堡县| 临沂市| 巴楚县| 南昌市| 巴塘县| 洪泽县| 南江县| 甘泉县| 洪洞县| 吉安市| 镇雄县| 景泰县| 寿宁县| 桃江县| 张家界市| 共和县| 亚东县| 宣威市| 铜鼓县| 巢湖市| 明溪县|