亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Docker 實(shí)踐(九):生產(chǎn)環(huán)境優(yōu)化

AlienZHOU / 1303人閱讀

摘要:系列文章第五篇中介紹了線上生產(chǎn)環(huán)境使用集群,這篇文章對原來的架構(gòu)進(jìn)行了優(yōu)化,同時(shí)使用了最新的一些特性,記錄一些流水賬。配置文件鑒于上次搭建時(shí)配置文件管理混亂,這次做了統(tǒng)一規(guī)劃為每個(gè)環(huán)境創(chuàng)建不同的配置文件,可以以環(huán)境名后綴。刪除無用的容器。

系列文章第五篇中介紹了線上生產(chǎn)環(huán)境使用 Docker 集群,這篇文章對原來的架構(gòu)進(jìn)行了優(yōu)化,同時(shí)使用了 Docker 最新的一些特性,記錄一些流水賬。

CentOS

CentOSDocker 確實(shí)不搭,但是苦于做不了主,只能硬著頭皮上了,所幸沒有遇上太大的坑。

必須要 CentOS 7.0 及以上才行,越新越好,內(nèi)核也要升級到最新。

內(nèi)核版本 Linux 3.10.0-327.36.1.el7.x86_64 有 bug,碰上了就別再折騰,趕緊繞過,Github Issue。

CentOS升級內(nèi)核(需要梯子)。

docker-compose

可喜的是新版本的 docker-compose 支持管理集群了,這比以前用 docker service 命令方便多了,只需要將 docker-compose.ymlversion 修改為 3 或者更高,然后就可以愉快的使用新增的特性了,示例:

version: "3"
services:
  nginx:
    image: nginx:latest
    networks:
      - product
    ports:
      - 8022:80
    environment:
      TZ: "Asia/Shanghai"
    deploy:
      mode: replicated
      replicas: 4
      placement:
        constraints:
          - node.role == worker
      restart_policy:
        condition: any
  web-product:
    image:web:latest
    build:
      context: ./
    networks:
      - product
    environment:
      TZ: "Asia/Shanghai"
    deploy:
      mode: replicated
      replicas: 4
      placement:
        placement:
          - node.role == worker
      restart_policy:
        condition: any
networks:
  product:
    driver: overlay

推薦在 docker-compose.yml 里面寫上 build 節(jié)點(diǎn),每次只需要執(zhí)行 docker-compose build --no-cache 就可以構(gòu)建鏡像了,再也不需要記住復(fù)雜的鏡像名和構(gòu)建參數(shù)了。

deploy 節(jié)點(diǎn)可以編排發(fā)布的一些特性,比如 replicas 可以指定運(yùn)行的容器個(gè)數(shù),也可以用placement來限定容器運(yùn)行的節(jié)點(diǎn)。

編寫好 docker-compose.yml 文件之后就可以執(zhí)行下面命令將應(yīng)用發(fā)布到集群中。
docker stack deploy --compose-file docker-compose-product.yml web-product

建議 replicas 的數(shù)量 > 1,否則上線的時(shí)候會(huì)出現(xiàn)短暫的 502。

CI

對 ci 一直存在于理論中,這次有幸實(shí)踐了一把,體驗(yàn)就是比 webhook 靠譜多了,配置也簡單,強(qiáng)烈推薦,.gitlab-ci.yml 示例:

# 可自定義上線的每個(gè)階段
stages:
  - build
  - release
  - test
  - release
  - deploy
  - cleanup

build-beta-job:
  stage: build
  script:
    - docker-compose -f docker-compose-beta.yml build --no-cache
    - docker-compose -f docker-compose-beta.yml down -v
    - docker-compose -f docker-compose-beta.yml up -d
  only:
    - master

build-release-job:
  stage: build
  script:
    - docker-compose -f docker-compose-release.yml build --no-cache
    - docker-compose -f docker-compose-release.yml down
    - docker-compose -f docker-compose-release.yml up -d
  only:
    - master

deploy-product-job:
  stage: deploy
  script:
    - docker build --no-cache -f Dockerfile-product -t 127.0.0.1:5000/web-product:latest .
    - docker push 127.0.0.1:5000/web-product:latest
    - docker stack deploy --compose-file docker-compose-product.yml web-product
  only:
    - release

cleanup-job:
  stage: cleanup
  script:
    - docker system prune -f
  only:
    - master
    - release

找一臺(tái)服務(wù)器安裝 gitlab-runner,參考鏈接,建議配置高一些。

在項(xiàng)目中編寫 .gitlab-ci.yml 文件,然后推送到 gitlab 即可。

鏡像結(jié)構(gòu)

對于鏡像的處理,依然沿用原來的辦法,將環(huán)境依賴的擴(kuò)展等構(gòu)建好作為一個(gè)底層基礎(chǔ)鏡像,業(yè)務(wù)代碼鏡像基于這個(gè)基礎(chǔ)鏡像再構(gòu)建,可以加快構(gòu)建速度。

配置文件

鑒于上次搭建時(shí)配置文件管理混亂,這次做了統(tǒng)一規(guī)劃:

為每個(gè)環(huán)境創(chuàng)建不同的配置文件,可以以環(huán)境名后綴。

構(gòu)建最頂層鏡像時(shí)連同配置文件一起 build 進(jìn)去,千萬不要在底層鏡像修改配置文件。

清除數(shù)據(jù)

新版的 docker 終于支持對無用數(shù)據(jù)的清除了,主要有以下命令:

docker image prune:刪除無用的鏡像。

docker container prune:刪除無用的容器。

docker volume prune:刪除無用的卷。

docker network prune:刪除無用的網(wǎng)絡(luò)。

docker system prune:刪除無用的鏡像、容器、卷、網(wǎng)絡(luò)。

要強(qiáng)制刪除可加上 -f 參數(shù)。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/26965.html

相關(guān)文章

  • Docker 實(shí)踐系列文章

    摘要:使用有一段時(shí)間了,打算把自己實(shí)踐過程中的一些理解和感悟記錄下來。目錄實(shí)踐一了解架構(gòu)實(shí)踐二使用教程實(shí)踐三下構(gòu)建開發(fā)環(huán)境實(shí)踐四環(huán)境容器化實(shí)踐五生產(chǎn)環(huán)境容器化實(shí)踐六容器監(jiān)控實(shí)踐七提升幸福感實(shí)踐八構(gòu)建開發(fā)環(huán)境實(shí)踐九生產(chǎn)環(huán)境優(yōu)化參考源碼分析系列文章 使用 docker 有一段時(shí)間了,打算把自己實(shí)踐過程中的一些理解和感悟記錄下來。 系列文章發(fā)布在 SegmentFault 上我的專欄 Tairy,...

    VincentFF 評論0 收藏0
  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    BicycleWarrior 評論0 收藏0
  • 【推薦】最新200篇:技術(shù)文章整理

    摘要:作為面試官,我是如何甄別應(yīng)聘者的包裝程度語言和等其他語言的對比分析和主從復(fù)制的原理詳解和持久化的原理是什么面試中經(jīng)常被問到的持久化與恢復(fù)實(shí)現(xiàn)故障恢復(fù)自動(dòng)化詳解哨兵技術(shù)查漏補(bǔ)缺最易錯(cuò)過的技術(shù)要點(diǎn)大掃盲意外宕機(jī)不難解決,但你真的懂?dāng)?shù)據(jù)恢復(fù)嗎每秒 作為面試官,我是如何甄別應(yīng)聘者的包裝程度Go語言和Java、python等其他語言的對比分析 Redis和MySQL Redis:主從復(fù)制的原理詳...

    tommego 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<