<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 1、Docker-Compose模板文件簡介 Compose允許用戶通過一個docker-compose.yml模板文件(YAML 格式)來定義一組相關聯的應用容器為一個項目(project)。 Compose模板文件是一個定義服務、網絡和卷的YAML文件。Compose模板文件默認路徑是當前目錄下的docker-compose.yml,可以使用.yml或.yaml作為文件擴展名。 Docker-Compose標準模板文件應該包含version、services、networks 三大部分,最關鍵的是services和networks兩個部分。 ~~~ version: '2' services: web: image: dockercloud/hello-world ports: - 8080 networks: - front-tier - back-tier redis: image: redis links: - web networks: - back-tier lb: image: dockercloud/haproxy ports: - 80:80 links: - web networks: - front-tier - back-tier volumes: - /var/run/docker.sock:/var/run/docker.sock networks: front-tier: driver: bridge back-tier: driver: bridge ~~~ Compose目前有三個版本分別為Version 1,Version 2,Version 3,Compose區分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。Version 2支持更多的指令。Version 1將來會被棄用。 ### 2、image image是指定服務的鏡像名稱或鏡像ID。如果鏡像在本地不存在,Compose將會嘗試拉取鏡像。 ~~~ services: web: image: hello-world ~~~ ### 3、build 服務除了可以基于指定的鏡像,還可以基于一份Dockerfile,在使用up啟動時執行構建任務,構建標簽是build,可以指定Dockerfile所在文件夾的路徑。Compose將會利用Dockerfile自動構建鏡像,然后使用鏡像啟動服務容器。 `build: /path/to/build/dir` 也可以是相對路徑,只要上下文確定就可以讀取到Dockerfile。 `build: ./dir` 設定上下文根目錄,然后以該目錄為準指定Dockerfile。 ~~~ build: context: ../ dockerfile: path/of/Dockerfile ~~~ build都是一個目錄,如果要指定Dockerfile文件需要在build標簽的子級標簽中使用dockerfile標簽指定。 如果同時指定image和build兩個標簽,那么Compose會構建鏡像并且把鏡像命名為image值指定的名字。 ### 4、context context選項可以是Dockerfile的文件路徑,也可以是到鏈接到git倉庫的url,當提供的值是相對路徑時,被解析為相對于撰寫文件的路徑,此目錄也是發送到Docker守護進程的context ~~~ build: context: ./dir ~~~ ### 5、dockerfile 使用dockerfile文件來構建,必須指定構建路徑 ~~~ build: context: . dockerfile: Dockerfile-alternate ~~~ dockerfile指令不能跟image同時使用,否則Compose將不確定根據哪個指令來生成最終的服務鏡像。 ### 6、command 使用command可以覆蓋容器啟動后默認執行的命令。 `command: bundle exec thin -p 3000` ### 7、container\_name Compose的容器名稱格式是: 可以自定義項目名稱、服務名稱,但如果想完全控制容器的命名,可以使用標簽指定: `container_name: app` ### 8、depends\_on 在使用Compose時,最大的好處就是少打啟動命令,但一般項目容器啟動的順序是有要求的,如果直接從上到下啟動容器,必然會因為容器依賴問題而啟動失敗。例如在沒啟動數據庫容器的時候啟動應用容器,應用容器會因為找不到數據庫而退出。depends\_on標簽用于解決容器的依賴、啟動先后的問題。 ~~~ version: '2' services: web: build: . depends_on: - db - redis redis: image: redis db: image: postgres ~~~ 上述YAML文件定義的容器會先啟動redis和db兩個服務,最后才啟動web 服務。 ### 9、pid `pid: "host"` 將PID模式設置為主機PID模式,跟主機系統共享進程命名空間。容器使用pid標簽將能夠訪問和操縱其他容器和宿主機的名稱空間。 ### 10、ports ports用于映射端口的標簽。 使用HOST:CONTAINER格式或者只是指定容器的端口,宿主機會隨機映射端口。 ~~~ ports: - "3000" - "8000:8000" - "49100:22" - "127.0.0.1:8001:8001" ~~~ 當使用HOST:CONTAINER格式來映射端口時,如果使用的容器端口小于60可能會得到錯誤得結果,因為YAML將會解析xx:yy這種數字格式為60進制。所以建議采用字符串格式。 ### 11、extra\_hosts 添加主機名的標簽,會在/etc/hosts文件中添加一些記錄。 ~~~ extra_hosts: - "somehost:162.242.195.82" - "otherhost:50.31.209.229" ~~~ 啟動后查看容器內部hosts: ~~~ 162.242.195.82 somehost 50.31.209.229 otherhost ~~~ ### 12、volumes 掛載一個目錄或者一個已存在的數據卷容器,可以直接使用 \[HOST:CONTAINER\]格式,或者使用\[HOST:CONTAINER:ro\]格式,后者對于容器來說,數據卷是只讀的,可以有效保護宿主機的文件系統。 Compose的數據卷指定路徑可以是相對路徑,使用 . 或者 .. 來指定相對目錄。 數據卷的格式可以是下面多種形式: ~~~ volumes: // 只是指定一個路徑,Docker 會自動在創建一個數據卷(這個路徑是容器內部的)。 - /var/lib/mysql // 使用絕對路徑掛載數據卷 - /opt/data:/var/lib/mysql // 以 Compose 配置文件為中心的相對路徑作為數據卷掛載到容器。 - ./cache:/tmp/cache // 使用用戶的相對路徑(~/ 表示的目錄是 /home/<用戶目錄>/ 或者 /root/)。 - ~/configs:/etc/configs/:ro // 已經存在的命名的數據卷。 - datavolume:/var/lib/mysql ~~~ 如果不使用宿主機的路徑,可以指定一個volume\_driver。 `volume_driver: mydriver` ### 13、volumes\_from 從另一個服務或容器掛載其數據卷: ~~~ volumes_from: - service_name - container_name ~~~ ### 14、dns 自定義DNS服務器。可以是一個值,也可以是一個列表。 ~~~ dns:8.8.8.8 dns: - 8.8.8.8 - 9.9.9.9 ~~~ ### 15、dns\_search 配置DNS搜索域。可以是一個值,也可以是一個列表。 ~~~ dns_search:example.com dns_search: - domain1.example.com - domain2.example.com ~~~ ### 16、entrypoint 在Dockerfile中有一個指令叫做ENTRYPOINT指令,用于指定接入點。 在docker-compose.yml中可以定義接入點,覆蓋Dockerfile中的定義: `entrypoint: /code/entrypoint.sh` ### 17、env\_file 在docker-compose.yml中可以定義一個專門存放變量的文件。 如果通過docker-compose -f FILE指定配置文件,則env\_file中路徑會使用配置文件路徑。 如果有變量名稱與environment指令沖突,則以后者為準。格式如下: `env_file: .env` 或者根據docker-compose.yml設置多個: ~~~ env_file: - ./common.env - ./apps/web.env - /opt/secrets.env ~~~ 如果在配置文件中有build操作,變量并不會進入構建過程中。 ### 18、cap\_add 增加指定容器的內核能力(capacity)。 讓容器具有所有能力可以指定: ~~~ cap_add: - ALL ~~~ ### 19、cap\_drop 去掉指定容器的內核能力(capacity)。 去掉NET\_ADMIN能力可以指定: ~~~ cap_drop: - NET_ADMIN ~~~ ### 20、cgroup\_parent 創建了一個cgroup組名稱為cgroups\_1: `cgroup_parent: cgroups_1` ### 21、devices 指定設備映射關系,例如: ~~~ devices: - "/dev/ttyUSB1:/dev/ttyUSB0" ~~~ ### 22、expose 暴露端口,但不映射到宿主機,只允許能被連接的服務訪問。僅可以指定內部端口為參數,如下所示: ~~~ expose: - "3000" - "8000" ~~~ ### 23、extends 基于其它模板文件進行擴展。例如,對于webapp服務定義了一個基礎模板文件為common.yml: ~~~ # common.yml webapp: build: ./webapp environment: - DEBUG=false - SEND_EMAILS=false ~~~ 再編寫一個新的development.yml文件,使用common.yml中的webapp服務進行擴展: ~~~ # development.yml web: extends: file: common.yml service: webapp ports: - "8000:8000" links: - db environment: - DEBUG=true db: image: mysql ~~~ 后者會自動繼承common.yml中的webapp服務及環境變量定義。 extends限制如下: A、要避免出現循環依賴 B、extends不會繼承links和volumes\_from中定義的容器和數據卷資源 推薦在基礎模板中只定義一些可以共享的鏡像和環境變量,在擴展模板中具體指定應用變量、鏈接、數據卷等信息 ### 24、external\_links 鏈接到docker-compose.yml外部的容器,可以是非Compose管理的外部容器。 ~~~ external_links: - redis_1 - project_db_1:mysql - project_db_1:postgresql ~~~ ### 25、labels 為容器添加Docker元數據(metadata)信息。例如,可以為容器添加輔助說明信息: ~~~ labels: com.startupteam.description: "webapp for a strtup team" ~~~ ### 26、links 鏈接到其它服務中的容器。使用服務名稱(同時作為別名),或者“服務名稱:服務別名”(如 SERVICE:ALIAS),例如: ~~~ links: - db - db:database - redis ~~~ 使用別名將會自動在服務容器中的/etc/hosts里創建。例如: ~~~ 172.17.2.186 db 172.17.2.186 database 172.17.2.187 redis ~~~ ### 27、log\_driver 指定日志驅動類型。目前支持三種日志驅動類型: ~~~ log_driver: "json-file" log_driver: "syslog" log_driver: "none" ~~~ ### 28、log\_opt 日志驅動的相關參數。例如: ~~~ log_driver: "syslog"log_opt: syslog-address: "tcp://192.168.0.42:123" ~~~ ### 29、net 設置網絡模式。 ~~~ net: "bridge" net: "none" net: "host" ~~~ ### 30、security\_opt 指定容器模板標簽(label)機制的默認屬性(用戶、角色、類型、級別等)。例如,配置標簽的用戶名和角色名: ~~~ security_opt: - label:user:USER - label:role:ROLE ~~~ ### 31、環境變量 環境變量可以用來配置Docker-Compose的行為。 COMPOSE\_PROJECT\_NAME 設置通過Compose啟動的每一個容器前添加的項目名稱,默認是當前工作目錄的名字。 COMPOSE\_FILE 設置docker-compose.yml模板文件的路徑。默認路徑是當前工作目錄。 DOCKER\_HOST 設置Docker daemon的地址。默認使用unix:///var/run/docker.sock。 DOCKER\_TLS\_VERIFY 如果設置不為空,則與Docker daemon交互通過TLS進行。 DOCKER\_CERT\_PATH 配置TLS通信所需要的驗證(ca.pem、cert.pem 和 key.pem)文件的路徑,默認是?~/.docker?。 ***** ## eg.Docker-Compose模板文件示例 ### 1、docker-compose模板文件編寫 docker-compose.yaml文件如下: ~~~ version: '2' services: web1: image: nginx ports: - "6061:80" container_name: "web1" networks: - dev web2: image: nginx ports: - "6062:80" container_name: "web2" networks: - dev - pro web3: image: nginx ports: - "6063:80" container_name: "web3" networks: - pro networks: dev: driver: bridge pro: driver: bridge #volumes: ~~~ docker-compose.yaml文件指定了三個web服務。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看