zoukankan      html  css  js  c++  java
  • docker 入门6

    开始,第 6 部分:部署应用

    先决条件

    • 安装 Docker。

    • 获取第 3 部分先决条件中所述的 Docker Compose。

    • 获取 Docker Machine,如第 4 部分先决条件中所述。

    • 阅读第 1 部分中的方向。

    • 了解如何在第 2 部分中创建容器。

    • 确保通过将friendlyhello镜像推送到注册表来发布您创建的friendlyhello镜像。我们在这里那个使用共享镜像。

    • 确保镜像用作于已部署的容器。运行此命令,在信息中键入usernamerepo, 和 tag:docker run -p 80:80 username/repo:tag,然后访问http://localhost/

    • 获取第 5 部分的 docker-compose.yml 的最终版本。 

    介绍

    您一直在为整个教程编辑相同的Compose文件。我们有好消息,该Compose文件在生产环境中的工作方式与在您的计算机上一样好。在本节中,我们将介绍运行 Dockerized 应用程序的一些选项。

    Docker Enterprise

    Docker Enterprise 企业版的客户运行了稳定、商业支持的 Docker Engine版本,作为附加组件,他们得到了我们一流的管理软件 ,Docker 数据中心。您可以使用通用控制面板(Universal Control Plane)的界面管理应用程序的各个方面,使用 Docker 可信registry运行专用镜像Registry,与 LDAP 提供程序集成,使用 Docker 内容信任对生产环境镜像进行签名,以及许多其他特征。

    将您自己的服务器引入 Docker Enterprise并设置 Docker 数据中心实际上需要两个步骤:

    1. 从 Docker 中心获取服务器操作系统的 Docker 企业版。
    2. 按照说明在您自己的主机上安装 Docker 企业版。

    注意:正在运行 Windows 容器?查看我们的 Windows 服务器设置指南

    完成所有设置并运行 Docker 企业版后,可以直接在 UI 中部署Compose文件。

    之后,您可以看到它正在运行,并且可以更改您选择的应用程序的任何方面,甚至编辑Compose文件本身。

    Docker Engine - Community

    安装 Docker Engine --- Community

    在您选择的平台上查找 Docker Engine---Community的安装说明。

    创建您的swarm

    运行 docker swarm init 在节点上创建一个swarm。

    部署应用

    运行 docker stack deploy -c docker-compose.yml getstartedlab ,将应用部署在云托管swarm上。

     
    docker stack deploy -c docker-compose.yml getstartedlab
    
    Creating network getstartedlab_webnet
    Creating service getstartedlab_web
    Creating service getstartedlab_visualizer
    Creating service getstartedlab_redis

    你的应用现在在云提供商上运行。

    运行一些命令来验证部署

    您可以使用swarm命令行(正如您所做的那样)来浏览和管理swarm。下面是一些现在应该看起来熟悉的示例:

    • 使用 docker node ls 列出群中的节点。

       
      [getstartedlab] ~ $ docker node ls
      ID                            HOSTNAME                                      STATUS              AVAILABILITY        MANAGER STATUS
      n2bsny0r2b8fey6013kwnom3m *   ip-172-31-20-217.us-west-1.compute.internal   Ready               Active              Leader
    • 使用 docker service ls 列出服务。

       
      [getstartedlab] ~/sandbox/getstart $ docker service ls
      ID                  NAME                       MODE                REPLICAS            IMAGE                             PORTS
      ioipby1vcxzm        getstartedlab_redis        replicated          0/1                 redis:latest                      *:6379->6379/tcp
      u5cxv7ppv5o0        getstartedlab_visualizer   replicated          0/1                 dockersamples/visualizer:stable   *:8080->8080/tcp
      vy7n2piyqrtr        getstartedlab_web          replicated          5/5                 sam/getstarted:part6    *:80->80/tcp
    • 使用 docker service ps <service> 查看服务的任务。

       
      [getstartedlab] ~/sandbox/getstart $ docker service ps vy7n2piyqrtr
      ID                  NAME                  IMAGE                            NODE                                          DESIRED STATE       CURRENT STATE            ERROR               PORTS
      qrcd4a9lvjel        getstartedlab_web.1   sam/getstarted:part6   ip-172-31-20-217.us-west-1.compute.internal   Running             Running 20 seconds ago                       
      sknya8t4m51u        getstartedlab_web.2   sam/getstarted:part6   ip-172-31-20-217.us-west-1.compute.internal   Running             Running 17 seconds ago                       
      ia730lfnrslg        getstartedlab_web.3   sam/getstarted:part6   ip-172-31-20-217.us-west-1.compute.internal   Running             Running 21 seconds ago                       
      1edaa97h9u4k        getstartedlab_web.4   sam/getstarted:part6   ip-172-31-20-217.us-west-1.compute.internal   Running             Running 21 seconds ago                       
      uh64ez6ahuew        getstartedlab_web.5   sam/getstarted:part6   ip-172-31-20-217.us-west-1.compute.internal   Running             Running 22 seconds ago        

    在云提供商计算机上打开到服务的端口

    此时,你的应用将作为swarm部署在云提供商服务器上,您刚刚运行的 docker 命令就证明了这一点。但是,您仍然需要打开云服务器上的端口,以便:

    • 如果使用多个节点,则允许 redis 服务和 Web 服务之间的通信

    • 允许任何辅助节点上的 Web 服务入站流量,以便从 Web 浏览器访问 Hello World 和Visualizer。

    • 允许在运行manager的服务器上的入站 SSH 流量(这可能已在云提供商上设置)

    以下是您需要为每个服务公开的端口:

    ServiceTypeProtocolPort
    web HTTP TCP 80
    visualizer HTTP TCP 8080
    redis TCP TCP 6379

    执行此操作的方法因云提供商而异。

    我们以亚马逊网络服务 (AWS) 为例。

    用于保留数据的 redis 服务如何?

    要使 redis 服务正常工作,您需要在运行 docker stack deploy之前,将 ssh 到运行manager的云服务器中,并在 /home/docker/ 中创建data/目录。另一个选项是将 docker-stack.yml 中的数据路径更改为manager服务器上的预先存在的路径。此示例不包括此步骤,因此在示例输出中未启动 redis 服务。

    迭代和清理

    从这里,你可以做你学到的一切在本教程的前一部分。

    • 通过更改 docker-compose.yml 文件,使用 docker stack deploy命令动态重新部署应用来扩展应用。

    • 通过编辑代码更改应用行为,然后重新生成并推送新镜像。(为此,请按照之前为构建应用和发布镜像所执行的相同步骤进行操作)。

    • 您可以使用 docker stack rm 拆解stack。例如:

       
      docker stack rm getstartedlab

    与在本地 Docker machine VM 上运行swarm的情况不同,无论是否关闭本地主机,您的swarm及其上部署的任何应用都会在云服务器上继续运行。

    祝贺!

    您对整个 Docker 平台进行了全堆栈,开发到部署的浏览。

    Docker 平台的内容远不止此处介绍的内容,但您对容器、镜像、服务、swarm、stack、缩放、负载平衡、volume和placement constraints等基础知识有了很好的了解。

    想深入一点吗?以下是一些建议的资源:

    • 示例:我们的示例包括多个在容器中运行的常用软件示例,以及一些教授最佳实践的良好实验室。

    • 用户指南:用户指南有几个示例,这些示例对网络和存储的解释比此处介绍的要深入。

    • 管理员指南:介绍如何管理 Docker 实现的生产环境。

    • 培训:提供面对面指导和虚拟课堂环境的官方 Docker 课程。

    • 博客:介绍 Docker 最近发生的情况。

  • 相关阅读:
    java 时间操作
    springboot-helloworld 学习02
    springboot-helloworld 学习01
    java知识图谱
    python day100-[day41-45]-5 web-django RESTful架构和DRF入门
    python day100-[day41-45]-4 web-django 前后端分离
    hive mysql count distinct 多列
    hive 导出数据到文件
    使用npm i 编译vue项目出现无法拉取clone github.com中的源文件
    windows环境下elasticsearch安装教程 (版本为7.12.0)
  • 原文地址:https://www.cnblogs.com/13yan/p/11248852.html
Copyright © 2011-2022 走看看