亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

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

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

Docker學習12 使用Compose管理容器集群

 

一、功能說明

容器在當今的云計算中極為重要,是構(gòu)建微服務(wù)的重要組成部分。而一個微服務(wù)如果由多個容器,比如Nginx+php+MySQL,單個容器分開管理會非常麻煩 。目前華為云、阿里云等廠商都提供了很多Docker容器的管理工具。Docker Compose 可以輕松、高效的管理容器,它是一個用于定義和運行多容器 Docker 的應(yīng)用程序工具。

Docker學習12 使用Compose管理容器集群

 

一個使用docker-compose的架構(gòu)示例

二、安裝

linux下的安裝命令:

sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose -v

mac環(huán)境在使用安裝文件安裝Docker時會自帶Compose

三、常用命令

# 列出所有容器
docker-compose ps
# 看服務(wù)日志
docker-compose logs
# 打印綁定的公共端口,下面是個示例
docker-compose port eureka 8761
# 構(gòu)建服務(wù)
docker-compose build
# 啟動指定服務(wù)已存在的容器
docker-compose start eureka
# 停止已運行的服務(wù)的容器
docker-compose stop eureka
# 刪除指定服務(wù)的容器
docker-compose rm eureka
# 構(gòu)建啟動容器,更新容器
docker-compose up
# kill:通過發(fā)送 SIGKILL 信號來停止指定服務(wù)的容器
docker-compose kill eureka
# pull:下載服務(wù)鏡像
# scale:設(shè)置指定服務(wù)運氣容器的個數(shù),以 service=num 形式指定
docker-compose scale user=3 movie=3
# run:在一個服務(wù)上執(zhí)行一個命令
docker-compose run web bash

四、使用步驟

  1. 使用 Dockerfile 定義應(yīng)用程序的環(huán)境。
  2. 使用 docker-compose.yml 定義構(gòu)成應(yīng)用程序的服務(wù),這樣它們可以在隔離環(huán)境中一起運行。
  3. docker-compose up 啟動。

五、測試步驟

1. 準備文件

mkdir composetest
cd composetest
vim App.py
import time

import redis
from flask import Flask

app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)


def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)


@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.n'.format(count)

這個示例Python去訪問redis服務(wù),端口6379。

在 composetest 目錄中創(chuàng)建另一個名為 requirements.txt 的文件,內(nèi)容如下:

flask
redis

2. 編輯vim Dockerfile文件

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]

這個Dockerfile是構(gòu)建Python容器使用。字段解釋如下:

  • FROM python:3.7-alpine: 從 Python 3.7 映像開始構(gòu)建鏡像。
  • WORKDIR /code: 將工作目錄設(shè)置為 /code。
  • ENV FLASK_APP app.py flask主文件設(shè)置
  • ENV FLASK_RUN_HOST 0.0.0.0 設(shè)置 flask 命令使用的環(huán)境變量。
  • RUN apk add --no-cache gcc musl-dev linux-headers: 安裝 gcc,以便諸如 MarkupSafe 和 SQLAlchemy 之類的 Python 包可以編譯加速。
  • COPY requirements.txt requirements.txt
  • RUN pip install -r requirements.txt 復制 requirements.txt 并安裝 Python 依賴項。
  • COPY . .: 將 . 項目中的當前目錄復制到 . 鏡像中的工作目錄。
  • CMD ["flask", "run"]: 容器提供默認的執(zhí)行命令為:flask run。

3. 創(chuàng)建 docker-compose.yml

在測試目錄中創(chuàng)建一個名為 docker-compose.yml 的文件:

# yaml 配置
version: '3'
services:
  web:
    build: .
    ports:
     - "5000:5000"
  redis:
    image: "redis:alpine"

該 Compose 文件定義了兩個服務(wù):web 和 redis。

  • version: 指定 docker-compose.yml 文件的寫法格式
  • services: 多個容器的集合
  • web:該 web 服務(wù)使用從 Dockerfile 當前目錄中構(gòu)建的鏡像。然后,它將容器和主機綁定到暴露的端口 5000。此示例服務(wù)使用 Flask Web 服務(wù)器的默認端口 5000 。
  • redis:該 redis 服務(wù)使用 Docker Hub 的公共 Redis 映像。
  • links: 服務(wù)之間可以使用服務(wù)名稱相互訪問,links 允許定義一個別名,從而使用該別名訪問其它服務(wù),如:
version: '2'
services:
    web:
        build: .
        links:
            - "db:database"
    db:
        image: postgres

Web 服務(wù)就可以使用 db 或 database 作為 hostname 訪問 db 服務(wù)了。

4. 使用 Compose 命令構(gòu)建和運行應(yīng)用

在測試目錄中,執(zhí)行以下命令來啟動應(yīng)用程序:

docker-compose up

后臺執(zhí)行該服務(wù)可以加上 -d 參數(shù):

docker-compose up -d

運行效果:

Docker學習12 使用Compose管理容器集群

 

六、yml 配置指令參考

version

指定本 yml 依從的 compose 哪個版本制定的。

build

指定為構(gòu)建鏡像上下文路徑:例如 webapp 服務(wù),指定為從上下文路徑 ./dir/Dockerfile 所構(gòu)建的鏡像:

version: "3.7"
services:
  webapp:
    build: ./dir

或者,作為具有在上下文指定的路徑的對象,以及可選的 Dockerfile 和 args:

version: "3.7"
services:
  webapp:
    build:
      context: ./dir
      dockerfile: Dockerfile-alternate
      args:
        buildno: 1
      labels:
        - "com.example.description=Accounting webapp"
        - "com.example.department=Finance"
        - "com.example.label-with-empty-value"
      target: prod
  • context:上下文路徑。
  • dockerfile:指定構(gòu)建鏡像的 Dockerfile 文件名。
  • args:添加構(gòu)建參數(shù),這是只能在構(gòu)建過程中訪問的環(huán)境變量。
  • labels:設(shè)置構(gòu)建鏡像的標簽
  • target:多層構(gòu)建,可以指定構(gòu)建哪一層。

cap_add,cap_drop

添加或刪除容器擁有的宿主機的內(nèi)核功能。

cap_add:
  - ALL # 開啟全部權(quán)限

cap_drop:
  - SYS_PTRACE # 關(guān)閉 ptrace權(quán)限

cgroup_parent

為容器指定父 cgroup 組,意味著將繼承該組的資源限制。

cgroup_parent: m-executor-abcd

command

覆蓋容器啟動的默認命令。

command: ["bundle", "exec", "thin", "-p", "3000"]

container_name

指定自定義容器名稱,而不是生成的默認名稱。

depends_on

設(shè)置依賴關(guān)系。

deploy

指定與服務(wù)的部署和運行有關(guān)的配置。只在 swarm 模式下才會有用。

endpoint_mode:

訪問集群服務(wù)的方式。

devices

指定設(shè)備映射列表。

DNS

自定義 DNS 服務(wù)器,可以是單個值或列表的多個值。

dns_search

自定義 DNS 搜索域。可以是單個值或列表。

entrypoint

覆蓋容器默認的 entrypoint。

env_file

從文件添加環(huán)境變量。可以是單個值或列表的多個值。

environment

添加環(huán)境變量。您可以使用數(shù)組或字典、任何布爾值,布爾值需要用引號引起來,以確保 YML 解析器不會將其轉(zhuǎn)換為 True 或 False。

expose

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

extra_hosts

添加主機名映射。類似 docker client --add-host。

healthcheck

用于檢測 docker 服務(wù)是否健康運行。

image

指定容器運行的鏡像。

logging

服務(wù)的日志記錄配置。

network_mode

設(shè)置網(wǎng)絡(luò)模式。

restart

重啟策略

secrets

存儲敏感數(shù)據(jù)

security_opt

修改容器默認的 schema 標簽。

stop_grace_period

指定在容器無法處理 SIGTERM (或者任何 stop_signal 的信號),等待多久后發(fā)送 SIGKILL 信號關(guān)閉容器。

stop_signal

設(shè)置停止容器的替代信號。

sysctls

設(shè)置容器中的內(nèi)核參數(shù),可以使用數(shù)組或字典格式。

tmpfs

在容器內(nèi)安裝一個臨時文件系統(tǒng)。可以是單個值或列表的多個值。

ulimits

覆蓋容器默認的 ulimit。

volumes

將主機的數(shù)據(jù)卷或著文件掛載到容器里。

分享到:
標簽:Docker Compose
用戶無頭像

網(wǎng)友整理

注冊時間:

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

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

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

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

答題星2018-06-03

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

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

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

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

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

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定