zoukankan      html  css  js  c++  java
  • Docker容器技术-自动化部署

    一、用Chef自动化部署Docker

    1.为什么需要自动化部署?

    • Docker引擎需要配置很多参数(cgroups、内存、CPU、文件系统等)
    • 识别Docker容器运行在哪个宿主机上
    • 耗时且容易出错,不易管理

    2.Docker的配置管理

    • 从应用开发、演示、测试到部署生产环境,Docker容器可以复制应用程序的全部环境
    • 编译Docker镜像是一种简便使应用程序更新并部署到所有环境中的方法
    • Docker允许团队成员掌握应用程序运行所需要的全部信息,同时可以将必要的变更高效地交付给客户。深入Dockerfile,他们可以知道应用程序的那部分需要更新以及正常运行所需的依赖
    • Docker记录我们对Docker镜像所做的全部环境变更。然后,它通过相应版本的Dockerfile记录,同时记录了变更的内容、变更的操作人以及变更的发生时间。

    3.使用Chef
    (1)安装docker-engine软件包示例

    package 'docker-engine' do
      action :install
    end
    

    (2)Chef环境部署
    A. 注册Chef服务器
    Chef服务器包括cookbook、策略、Docker宿主机的元信息

    • 官网创建账号
    • 创建一个组织
    • 点击“Download Starter Kit”下载压缩包

    B. 搭建工作站
    与Chef服务器进行交互。
    Chef资源库包含了所有需要交互的信息并且保持与Chef服务器同步,还保存了私有密钥以及其他需要授权的配置文件。

    Chef开发工具包包含了所有与读取chef-repo中配置信息有关的程序。(去官网下载适合的工具包)

    C. 启动节点
    chef-client负责Chef服务器并下载必要的配置文件,同时将节点配置到预期状态。

    • 在Chef服务器上注册并授权管理当前节点
    • 收集节点上的系统信息用于创建一个节点对象
    • 根据节点需要同步相应的Chef cookbook
    • 通过加载节点所需的recipe来编译资源
    • 执行所有的资源并按照相应的操作去配置节点
    • 报告chef-client的结果给Chef服务器和其他已配置的消息终端
    knife bootstrap dockerhost
    访问网站确定宿主机已注册成功。
    

    (3)配置Docker宿主机

    生成cookbook模板
    cd cookbooks
    chef generate cookbook dockerhost
    
    编辑cookbook
    cd dockerhost
    vim metadata.rb
    name 'dockerhost'
    maintainer 'The Authors'
    maintainer_email 'dayun@163.com'
    license 'all_rights'
    description 'Installs/Configures dockerhost'
    long_description 'Installs/Configures dockerhost'
    version '0.1.0'
    
    depends 'apt', '~> 2.7.0'
    depends 'docker', '~> 0.40.3'
    
    开始安装
    berks install
    
    编写Chef recipe
    vim recipes/default.rb
    apt_repository 'docker' do
      uri 'http://apt.dockerproject.org/repo'
      components %w(debian-jessie main)
      keyserver 'p80.pool.sks-keyservers.net'
      key '5813fh193f8834fjqewifj9348j34ifjq'
      cache_rebuild true
    end
    
    package 'docker-engine'
    
    应用部署
    上传Chef cookbook到Chef服务器
    berks upload
    通过设置run_list应用dockerhost recipe到节点
    knife node run_list set dockerhost dockerhost
    在dockerhost中执行chef-client
    ssh dockerhost
    sudo chef-client
    

    (4)部署Docker容器
    解决的问题:

    • 哪些容器需要运行
    • 容器间如何连接
    • Docker容器被部署在哪个宿主机
    创建Chef recipe
    chef generate recipe . containers
    (将在dockerhost目录下创建recipes/containers.rb)
    
    拉取Nginx的Docker镜像
    在containers.rb文件中加入如下行:
    docker_image 'nginx' do
      tag '1.9.3'
    end
    
    配置宿主机运行容器
    在containers.rb中添加如下行:
    node.set['docker']['container_init_type'] = 'systemd'
    
    directory '/usr/lib/systemd/system'
    
    docker_container 'nginx' do
      tag '1.9.3'
      container_name 'webserver'
      detach true
      ort '80:80'
    end
    
    发布cookbook,通过metadata.rb中指定信息实现
    name 'dockerhost'
    maintainer 'the Authors'
    maintainer_email 'hdlptz@163.com'
    license 'all_rights'
    description 'Installs/Configures dockerhost'
    long_description 'Installs/Configures dockerhost'
    version '0.2.0'
    
    depends 'apt', '~> 2.7.0'
    depends 'docker', '~> 0.40.3'
    
    更新Berksfile.lock文件来锁定所有将要上传到Chef服务器的cookbook文件版本
    berks install
    
    上传cookbook到Chef服务器
    berks upload
    
    添加recipes/containers.rb到Docker宿主机的运行列表
    knife node run_list add dockerhost dockerhost::containers
    
    重新运行chef-client来更新Docker宿主机配置
    ssh dockerhost
    sudo chef-client
    
    访问http://dockerhost确认工作正常
    

    二、其他可选方案

    • Puppet
    • Ansible
    • CFEnginc
    • SaltStack
    • Docker machine

    云提供商

    • Google Container Engine
    • Amazon EC2 Container Service
    • Azure Docker VM Extension
    • Joyent Elastic Container Service

    部署工具

    • Docker Swarm
    • Google Kubernetes
    • CoreOS fleet
    • Mesophere Marathon
    • SmartData Center Docker Engine
  • 相关阅读:
    再回首,Java温故知新(八):Java基础之字符串
    《Prism 5.0源码走读》 设计模式
    《Prism 5.0源码走读》Bootstrapper
    VS编译时自动下载NuGet管理的库
    《Prism 5.0源码走读》Prism 5.0简介
    代码阅读
    如何建设个人品牌
    Hexo建站教程
    Codeforce:131A. cAPS lOCK
    一文看懂《最大子序列和问题》
  • 原文地址:https://www.cnblogs.com/tongxiaoda/p/7798336.html
Copyright © 2011-2022 走看看