亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Docker系列13:容器編排(1)

發布時間:2020-06-05 12:26:09 來源:網絡 閱讀:372 作者:zxhk 欄目:云計算

一、容器編排基礎

1、容器編排概念

  • 可以指定各個容器中的程序是有依賴關系的
  • 比如有個web服務必須在mysql正常的情況下,才能運行,那么這個時候就是web容器是依賴mysql容器的,只有mysql容器正常啟動,web容器才能啟動。

    2、容器編排工具

  • docker compose
  • k8s
  • k3s

    二、compose詳解

1、什么是compose

  • Docker Compose 將所管理的容器分為三層,分別是工程(project)、服務(service)、容器(container)
  • Docker Compose 運行目錄下的所有文件(docker-compose.yml)組成一個工程,一個工程包含多個服務,每個服務中定義了容器運行的鏡像、參數、依賴,一個服務可包括多個容器實例

2、安裝compse

方法1:用提供的這個conpose文件,將這個文件放到/usr/local/bin
Docker系列13:容器編排(1)
Docker系列13:容器編排(1)
方法2:用epel和extra源中的安裝包
1)配置yum源

[root@host1 ~]# cat /etc/yum.repos.d/epel.repo 
[epel]
name=epel
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7Server/x86_64/
enabled=1
gpgcheck=0

2)安裝docker-compose

[root@host1 ~]# yum install docker-compose -y

3、compose參數詳解

先看一個dyml文件樣例
Docker系列13:容器編排(1)

參數1:build
  • build,它可以指定 Dockerfile 所在文件夾的路徑。Compose 將會利用它自動構建這個鏡像,然后使用這個鏡像啟動服務容器。
  • 也可以是相對路徑,只要上下文確定就可以讀取到 Dockerfile。
    ?
    參數2:context
  • 這個是用來指定dockerfile文件的工作目錄的
  • 這是build的一個子選項
參數3:dockerfile
  • 指定具體的dockerfile來做鏡像
  • 這是build的一個子選項
參數4:ARGS
  • 設置變量,這些變量僅僅在build的過程中才會用到
  • 這是build的一個子選項
參數5:labels
  • 這是build的一個子選項
  • 用來指定build過程中的元數據
參數6:shm_size
  • 這是build的一個子選項,控制基于build構建的鏡像的參數配置
  • /dev/shm是linux中系統中物理內存的映射,使用/dev/shm對文件操作的效率會高很多,我在優化系統的時候,常用用到
參數7:command
  • 使用 command 可以覆蓋容器啟動后默認執行的命令。
    ?
    參數8:image
  • image 則是指定服務的鏡像名稱或鏡像 ID。
  • 如果鏡像在本地不存在,Compose 將會嘗試拉取這個鏡像。
    image: redis
    image: ubuntu:14.04
    image: tutum/influxdb
    image: example-registry.com:4000/postgresql
    image: a4bc65fd
參數9:container_name
  • 可以使用這個標簽指定容器名稱
參數10:depends_on
  • 這個標簽解決了容器的依賴、啟動先后的問題
案例:下面容器會先啟動 redis 和 db 兩個服務,最后才啟動 web 服務:

Docker系列13:容器編排(1)

參數11:dns
  • 指定DNS服務器的地址
    dns: 8.8.8.8
    dns:
    ?- 8.8.8.8
    ?- 9.9.9.9
參數12:dns_search
  • 設置搜索域
    dns_search: example.com
    dns_search:
    ?- dc1.example.com
    ?- dc2.example.com
參數13:tmpfs
  • 掛載臨時目錄到容器內部
    tmpfs:
    ?- /run
    ?- /tmp
參數14:entrypoint
  • 用于覆蓋 Dockerfile 中的定義
    entrypoint:
    ? ?- php
    ? ?- -d
    ? ?- zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20100525/xdebug.so
    ? ?- -d
    ? ?- memory_limit=-1
    ? ?- vendor/bin/phpunit

    ? ?

    參數15:env_file
  • docker-compose.yml 中可以定義一個專門存放變量的文件。
  • 如果通過 docker-compose -f FILE 指定了配置文件,則 env_file 中路徑會使用配置文件路徑。
  • 如果有變量名稱與 environment 指令沖突,則以后者為準。
    env_file:
    ?- ./common.env
    ?- ./apps/web.env
    ?- /opt/secrets.env
參數16:environment
  • 這個標簽的作用是設置鏡像變量,它可以保存變量到鏡像里面,也就是說啟動的容器也會包含這些變量設置,這是與 arg 最大的不同。
  • environment 和 Dockerfile 中的 ENV 指令一樣會把變量一直保存在鏡像、容器中,類似 docker run -e 的效果。
    
    environment:
    RACK_ENV: development
    SHOW: 'true'
    SESSION_SECRET:

environment:
?- RACK_ENV=development
?- SHOW=true
?- SESSION_SECRET


#### 參數17:expose
* 這個標簽與Dockerfile中的EXPOSE指令一樣,用于指定暴露的端口,但是只是作為一種參考
* 實際上docker-compose.yml的端口映射還得ports這樣的標簽。

expose:

  • "3000"
  • "8000"
參數18:external_links
  • 為了使Compose能夠連接這些不在docker-compose.yml中定義的容器,external_links可以讓Compose項目里面的容器連接到那些項目配置外部的容器
    ?external_links:
    - redis_1
    - project_db_1:mysql
    - project_db_1:postgresql
參數19:extra_hosts
  • 添加主機名的標簽,就是往/etc/hosts文件中添加一些記錄
    extra_hosts:
    - "somehost:162.242.195.82"
    - "otherhost:50.31.209.229"
標簽20:labels
  • 向容器添加元數據,和Dockerfile的LABEL指令一個意思
    labels:
    com.example.description: "Accounting webapp"
    com.example.department: "Finance"
    com.example.label-with-empty-value: ""
    labels:
    ?- "com.example.description=Accounting webapp"
    ?- "com.example.department=Finance"
    ?- "com.example.label-with-empty-value"
標簽21:links
  • depends_on吧,那個標簽解決的是啟動順序問題
  • 這個標簽解決的是容器連接問題,與Docker client的--link一樣效果,會連接到其它服務中的容器。
    links:
    - db
    - db:database
    - redis
標簽22:logging
  • 這個標簽用于配置日志服務。
    logging:
    driver: syslog
    options:
    syslog-address: "tcp://192.168.0.42:123"
標簽23:pid
  • 容器使用這個標簽將能夠訪問和操縱其他容器和宿主機的名稱空間。
  • pid: "host":將PID模式設置為主機PID模式,跟主機系統共享進程命名空間。
標簽24:ports
  • 映射端口的標簽。
  • 使用HOST:CONTAINER格式或者只是指定容器的端口,宿主機會隨機映射端口。
    ports:
    - "3000"
    - "8000:8000"
    - "49100:22"
    - "127.0.0.1:8001:8001"
  • 當使用HOST:CONTAINER格式來映射端口時,如果你使用的容器端口小于60你可能會得到錯誤得結果
  • 因為YAML將會解析xx:yy這種數字格式為60進制。所以建議采用字符串格式。
標簽25:security_opt
  • 為每個容器覆蓋默認的標簽。簡單說來就是管理全部服務的標簽。比如設置全部服務的user標簽值為USER。
    security_opt:
    ?- label:user:USER
    ?- label:role:ROLE
標簽26:stop_signal
  • 設置另一個信號來停止容器。
  • 在默認情況下使用的是SIGTERM停止容器。
標簽27:volumes
  • 掛載一個目錄或者一個已存在的數據卷容器
  • 可以直接使用 [HOST:CONTAINER] 這樣的格式,或者使用 [HOST:CONTAINER:ro] 這樣的格式,后者的數據卷是只讀的
  • Compose的數據卷指定路徑可以是相對路徑,使用 . 或者 .. 來指定相對目錄。
標簽28:volumes_from
  • 從其它容器或者服務掛載數據卷
  • 可選的參數是 :ro或者 :rw,前者表示容器只讀,后者表示容器對數據卷是可讀可寫的
  • 默認情況下是可讀可寫的。
    volumes_from:
    ?- service_name
    ?- service_name:ro
    ?- container:container_name
    ?- container:container_name:rw
    標簽29:cap_add, cap_drop
  • 添加或刪除容器的內核功能
標簽30:cgroup_parent
  • 指定一個容器的父級cgroup。
標簽31:devices
  • 設備映射列表。與Docker client的--device參數類似。
標簽32:extends
  • 這個標簽可以擴展另一個服務,擴展內容可以是來自在當前文件,也可以是來自其他文件
  • 相同服務的情況下,后來者會有選擇地覆蓋原有配置。
    extends:
    file: common.yml
    ?service: webapp
    標簽33:network_mode
  • 設置網絡模式
  • 與Docker client的--net參數類似,只是相對多了一個service:[service name] 的格式
    network_mode: "bridge"
    network_mode: "host"
    network_mode: "none"
    network_mode: "service:[service name]"
    network_mode: "container:[container name/id]"
    標簽34:networks
    services:
    some-service:
    ?  networks:
    ? ? - some-network
    ? ? - other-network
    端口暴露問題
  • ports:暴露端口信息。使用:宿主:容器 (HOST:CONTAINER)格式或者僅僅指定容器的端口(宿主將會隨機選擇端口)都可以。
  • expose:暴露端口,但不映射到宿主機,只被連接的服務訪問。
關于控制啟動順序的問題
  • depends_on:表示服務之前的依賴關系,有兩個效果:
  • 1)docker-compose up,啟動web服務之前、啟動redis、db。
  • 2)docker-compose up web,啟動web容器時,檢查依賴depends_on的配置內容,先啟動db和redis
    version: '2'
    services: 
    web:
    ? build: .
    ?  depends_on:
    ? ? ? - db
    ? ? ?- redis
    redis: ? 
    ? ? image: redis
    db: ? 
    ?  image: postgres
向AI問一下細節

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

AI

绵竹市| 阿拉尔市| 汉沽区| 清流县| 华安县| 武宣县| 保靖县| 龙泉市| 东光县| 湘潭县| 舟山市| 山丹县| 临泉县| 绥德县| 兰溪市| 治多县| 克什克腾旗| 广昌县| 长宁县| 丰宁| 天气| 镶黄旗| 邵武市| 芜湖市| 安远县| 海盐县| 泰来县| 淮北市| 安泽县| 沧源| 青海省| 嘉义县| 开阳县| 贵州省| 宜阳县| 靖安县| 六安市| 台南市| 安远县| 鹤庆县| 泰来县|